How remote MCP servers work, shown with SpringRoll

A remote MCP server runs at an HTTPS URL instead of on your machine. SpringRoll is one: coding agents connect to it to deploy apps, request approvals and list apps in a team's App Portal. This guide uses SpringRoll's live endpoint to show what a remote server is, how its sign-in works at each step and how every major client connects to it.

EngineeringBy Published Updated 4 min read

On this page

What is a remote MCP server?

A remote MCP server is a Model Context Protocol server that its operator runs and that clients reach over HTTPS. You add it by URL. A local server is a program your client starts on your machine and talks to over standard input and output (stdio).

SpringRoll is remote because what it manages is shared: an organization's apps, releases, approvals, App Portal and audit log. A process on one laptop could not hold that state for a team. Its endpoint is https://springroll.dev/api/mcp, served with the streamable HTTP transport, which replaced the older HTTP with SSE transport in the MCP specification.

Local and remote servers compared

Choose by where the work and data live and who should run the server.

Scroll sideways to see all columns. With the table focused, use the arrow keys.

Local stdio servers compared with a remote server such as SpringRoll.
QuestionLocal (stdio)Remote, such as SpringRoll
Where it runsA process on your machineA service at an HTTPS URL
How you add itA command, such as npx or pythonA URL
How it authenticatesEnvironment variables or local filesOAuth sign-in in the browser
Who updates itYou, by updating the packageThe operator
Shared stateOnly what is on your machineOrganization data: SpringRoll's apps, releases, approvals and audit log
Good fitFiles, local databases, developer toolsTeam services such as deployment and approvals

SpringRoll's sign-in, step by step

Under the MCP authorization specification, the client discovers the sign-in from the server. These are the steps with SpringRoll's real addresses, which you can check with curl.

  • The client calls https://springroll.dev/api/mcp without a token. SpringRoll answers 401 with a WWW-Authenticate header whose resource_metadata points to https://springroll.dev/.well-known/oauth-protected-resource/api/mcp.
  • That protected resource metadata document (RFC 9728) names the resource, https://springroll.dev/api/mcp, and its authorization server, https://springroll.dev.
  • The client reads https://springroll.dev/.well-known/oauth-authorization-server (RFC 8414). It lists the authorization and token endpoints, S256 PKCE and a registration endpoint.
  • The client registers itself at https://springroll.dev/api/oauth/register with dynamic client registration, so no client secret is shared in advance.
  • Your browser opens SpringRoll's sign-in with a PKCE challenge and a resource parameter naming the MCP server (RFC 8707). You sign in and choose a workspace.
  • The client exchanges the code for an access token issued for SpringRoll's MCP server, bound to your membership and its permissions, and sends it as Authorization: Bearer on every request.
curl -i -X POST https://springroll.dev/api/mcp -H "Content-Type: application/json" -d '{}'
# HTTP/1.1 401 Unauthorized
# WWW-Authenticate: Bearer realm="SpringRoll", ..., resource_metadata="https://springroll.dev/.well-known/oauth-protected-resource/api/mcp"

curl https://springroll.dev/.well-known/oauth-protected-resource/api/mcp
# {"resource":"https://springroll.dev/api/mcp","authorization_servers":["https://springroll.dev"], ...}

Connect SpringRoll from each client

The URL is the same everywhere; each client spells the setting differently. These are the setups SpringRoll documents for its own endpoint.

Scroll sideways to see all columns. With the table focused, use the arrow keys.

How to add SpringRoll's remote MCP server in common clients.
ClientAdd SpringRollSign in
Claude Codeclaude mcp add --transport http springroll https://springroll.dev/api/mcp/mcp, or claude mcp login springroll
Codex CLI and IDE extensioncodex mcp add springroll --url https://springroll.dev/api/mcpOpens automatically, or codex mcp login springroll
Cursor.cursor/mcp.json: {"mcpServers":{"springroll":{"url":"https://springroll.dev/api/mcp"}}}cursor-agent mcp login springroll
Claude Desktop and claude.aiSettings, Connectors, Add custom connector, name SpringRoll, URL https://springroll.dev/api/mcpClaude opens the authorization page when you connect (paid Claude plans)
ChatGPTDeveloper mode, then Create, with MCP server URL https://springroll.dev/api/mcp/chatgpt and OAuthAuthorize when you create it; availability depends on plan and workspace settings

What to check before connecting any remote server

A remote server acts on what your agent sends it, with your permissions. These are the questions to ask of any server, with SpringRoll's answers.

Scroll sideways to see all columns. With the table focused, use the arrow keys.

Questions to ask a remote MCP server, answered for SpringRoll.
QuestionWhy it mattersSpringRoll
Who operates it?Tool inputs reach the operator's serviceM Intelligence Co., Ltd., the publisher named on its server card
How does it authenticate?A long-lived token in a file can leakOAuth with PKCE; no token is pasted or stored in project files
Whose permissions does it use?An agent should not exceed the personOne named membership, with only that person's permissions
Can the agent approve its own work?Review only matters if it is independentNo. Agent connections cannot record approval decisions
Does it hand out secrets?A credential in an agent's context can be copiedNo tool returns a credential, connection string or secret
Is there a record?You need to know who did whatEvery call is written to the organization's audit log

Building your own remote MCP server

To publish a remote server, serve the streamable HTTP transport over HTTPS. If it needs to know who the user is, publish protected resource metadata, use an OAuth 2.1 authorization server, answer unauthenticated requests with 401 and resource_metadata, accept only tokens issued for your server, and never pass a client's token through to another API. SpringRoll's endpoint is a working reference for each of those steps.

Frequently asked questions

Which clients can connect to SpringRoll's MCP server?

Any MCP client that supports streamable HTTP and OAuth sign-in. SpringRoll documents setup for Claude Code, Codex, Cursor, Claude Desktop and claude.ai, and ChatGPT developer mode. You need a SpringRoll workspace to sign in to.

Do I need a token to use SpringRoll's remote MCP server?

No. Your client discovers the OAuth sign-in from the server and stores the credential after you approve in the browser.

Is a remote MCP server the same as a connector?

In Claude and ChatGPT, a custom connector is the saved setting that points at a remote MCP server URL, such as SpringRoll's. The server is the service; the connector is the client's connection to it.