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.
| Question | Local (stdio) | Remote, such as SpringRoll |
|---|---|---|
| Where it runs | A process on your machine | A service at an HTTPS URL |
| How you add it | A command, such as npx or python | A URL |
| How it authenticates | Environment variables or local files | OAuth sign-in in the browser |
| Who updates it | You, by updating the package | The operator |
| Shared state | Only what is on your machine | Organization data: SpringRoll's apps, releases, approvals and audit log |
| Good fit | Files, local databases, developer tools | Team 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.
| Client | Add SpringRoll | Sign in |
|---|---|---|
| Claude Code | claude mcp add --transport http springroll https://springroll.dev/api/mcp | /mcp, or claude mcp login springroll |
| Codex CLI and IDE extension | codex mcp add springroll --url https://springroll.dev/api/mcp | Opens 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.ai | Settings, Connectors, Add custom connector, name SpringRoll, URL https://springroll.dev/api/mcp | Claude opens the authorization page when you connect (paid Claude plans) |
| ChatGPT | Developer mode, then Create, with MCP server URL https://springroll.dev/api/mcp/chatgpt and OAuth | Authorize 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.
| Question | Why it matters | SpringRoll |
|---|---|---|
| Who operates it? | Tool inputs reach the operator's service | M Intelligence Co., Ltd., the publisher named on its server card |
| How does it authenticate? | A long-lived token in a file can leak | OAuth with PKCE; no token is pasted or stored in project files |
| Whose permissions does it use? | An agent should not exceed the person | One named membership, with only that person's permissions |
| Can the agent approve its own work? | Review only matters if it is independent | No. Agent connections cannot record approval decisions |
| Does it hand out secrets? | A credential in an agent's context can be copied | No tool returns a credential, connection string or secret |
| Is there a record? | You need to know who did what | Every 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.
