What is a remote MCP server, and how do you connect one?

A remote MCP server is reached over HTTPS instead of run as a local process. How sign-in works, and how to add one in Claude Code, Codex and Cursor.

Illustration: A small friendly robot with a round camera-eye head on a hilltop speaks into a tin-can telephone whose string runs across a valley to a tiny house with one chimney.

A remote MCP server is an MCP server the client reaches over HTTPS rather than starts as a local process. The client sends JSON-RPC over Streamable HTTP and signs in with OAuth as the MCP authorization specification describes. Nothing runs on your machine: you add a URL, authenticate in the browser, and the server's tools appear in the client.

A URL, not a process
Your client
Claude Code, Codex, Cursor
tools/call
api.corespeed.io/mcp
one JSON-RPC call per HTTPS request
org state
Your organization
connections, memory, policy, ledger, trail
Nothing runs on your machine: add the URL, sign in, and the tools appear.

How does a remote server differ from a local one?

A local MCP server is a program the client launches and talks to over stdio. It runs on your machine, with your environment variables, and it stops with the client. Secrets go in the process environment. Each machine installs its own copy.

A remote server is a URL. The client makes HTTP requests to it, one JSON-RPC call per request. Credentials are a bearer token the client obtained by signing in, or an API key for headless use. The server can serve many people, keep state across sessions, and change without anyone reinstalling anything.

Local (stdio) serverRemote (Streamable HTTP) server
Where it runsYour machine, launched by the clientA host you reach by URL
Transportstdin and stdoutHTTPS, one JSON-RPC call per request
Sign-inEnvironment variables, config filesOAuth in the browser, or an API key
Who it servesOne person, one machineMany people, many clients
UpdatingReinstall on each machineNothing to reinstall
State across sessionsWhatever the process keeps on diskHeld by the server

CoreSpeed's server, https://api.corespeed.io/mcp, is stateless on the wire: one JSON-RPC call per HTTP request, batches rejected, and no GET /mcp stream. State lives behind the server, in the organization, and that is what makes the same URL useful from Claude Code, Codex and Cursor in turn.

How does sign-in work on a remote server?

The MCP authorization specification builds on standard OAuth. A client that reaches https://api.corespeed.io/mcp without a token is pointed at protected-resource metadata (RFC 9728), which names the authorization server, login.corespeed.io. The client registers itself there with dynamic client registration (RFC 7591) or presents a client ID metadata document, then runs OAuth 2.1 with PKCE in the browser. Nothing has to be registered by hand first.

The token that comes back is audience-bound to /mcp (RFC 8707) and works only on POST /mcp. The consent screen names the client that is asking, which is worth checking before you approve it.

Clients that cannot open a browser, such as CI or a headless agent, send an API key instead: Authorization: Bearer sk-cs-... for a member key that acts as you, or an sk-csa- agent key that reaches shared connections only. Read the key from an environment variable rather than writing it into a config file. The authentication docs describe the four credentials.

How do you add a remote server in Claude Code, Codex and Cursor?

Add it at user scope, so it applies to every project, and replace any older corespeed entry: duplicate registrations collide on tool names.

# Claude Code: then start claude, type /mcp, pick corespeed and sign in
claude mcp add corespeed https://api.corespeed.io/mcp --transport http --scope user

# Codex
codex mcp add corespeed --url https://api.corespeed.io/mcp
codex mcp login corespeed

In Cursor, add an entry named corespeed with "url": "https://api.corespeed.io/mcp" to the mcpServers map in ~/.cursor/mcp.json. Cursor shows Needs login beside the server; click it to sign in. Copilot in VS Code, OpenClaw, Hermes, claude.ai, Claude Desktop and ChatGPT follow the same pattern, and any other client with an mcpServers map takes the same entry. The MCP server docs have each client's exact steps.

A first browser sign-in creates your organization on its first tool call. Run tools/list afterward and use what it returns. It is caller-specific: the tools of your connected apps, the built-ins you have enabled, and the manage__* account tools.

How do you register your own server for your organization?

CoreSpeed also fronts remote servers you already have. An org admin registers any HTTPS MCP server as a remote connector, from the dashboard, with manage__remote_add, or with POST /connectors/org. Its tools then appear to every member as org__<slug>__<tool>, with the same sign-in, spend holds and activity trail as every other tool. manage__remote_list runs for anyone; add, refresh and remove need an org admin.

Three auth modes exist. With oauth, each member authorizes the server themselves; CoreSpeed discovers the authorization server through RFC 9728 and registers a client by RFC 7591 when a registration_endpoint exists. The redirect URI is always https://app.corespeed.io/connectors/callback, so pre-registering a client with that URI also works. With static_bearer, one org-wide token is stored encrypted at rest. With none, the server takes no credential. A failed registration leaves the slug free; an unknown outcome holds it as dcr_pending until an admin clears it. The remote MCP docs have the request shape.

FAQ

Do I need to register an OAuth client before connecting?

No. CoreSpeed's authorization server supports dynamic client registration and client ID metadata documents, so the URL alone is enough.

Can I use one remote server from several clients?

Yes. Each client signs in with the same URL. Connections, memory and policy live in the organization, so each client sees the same tools for the same caller.

Where should the sign-in happen?

At login.corespeed.io, with a consent screen that names the client asking. A one-click install from a marketplace should point at exactly https://api.corespeed.io/mcp.

What does a batch request return?

A rejection. The transport takes one JSON-RPC call per HTTP request and offers no GET /mcp stream.