Documentation

Search documentation

Try deployment, Codex, or data access.

    Browse documentation

    How to add an MCP server to Claude Code: connect SpringRoll and deploy your app

    SpringRoll is a remote MCP server for shipping what you build in Claude Code. Once it is connected, Claude can deploy your project to managed Vercel or Cloudflare, follow the build to READY and list the app in your team's App Portal. This guide adds SpringRoll to Claude Code, explains each choice claude mcp add asks you to make, and ends with a deployed app.

    On this page

    Add SpringRoll to Claude Code in one command

    Run this from your project folder. It registers SpringRoll as a remote MCP server over HTTP. There is no API key: the first time Claude Code connects, SpringRoll sends it to a browser sign-in.

    Then start Claude Code, run /mcp, select springroll and sign in. Choose the SpringRoll workspace that should own the app. claude mcp list confirms the server is connected. Any other remote server is added the same way: claude mcp add --transport http <name> <url>.

    claude mcp add --transport http springroll https://springroll.dev/api/mcp
    
    # start Claude Code, then inside the session:
    /mcp

    Deploy your app from Claude Code

    With SpringRoll connected, ask Claude to deploy the project. A prompt like this one makes it check the build and show you the deployment proposal before anything is published.

    Prepare this project for SpringRoll. Read the Company Blueprint, inspect my source and discover supported workloads and services. Check the build, workspace, owner and deployment workflow; show the exact deployment proposal for confirmation, then follow the build to its actual result.

    What happens when Claude deploys through SpringRoll

    Claude reads your workspace with springroll.context, then calls springroll.deploy. You do not need to set up git: SpringRoll builds from a pushed repository when there is one, and otherwise from the files in your folder. It answers with the app's URL and a placement receipt naming the provider, plan, estimated cost and any limit. Claude then follows springroll.deploy.status until the build is READY or fails, and reads the build logs if it fails.

    Apps on the Direct workflow go straight to Production. Apps on the Staged workflow start in Development and need a person's approval to reach Production. For a shorter command, install the optional skill and type /springroll deploy instead of the prompt.

    What SpringRoll adds to Claude Code

    Open /mcp and select springroll to see its tools. These are the ones Claude uses most when shipping an app.

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

    SpringRoll MCP tools available in Claude Code, from the live server card.
    ToolWhat it does
    springroll.contextShows which organization, identity and permissions the connection acts as, and which runtimes can take a deployment.
    springroll.placement.previewScores where the app would run and what it would cost on managed Vercel or Cloudflare, without deploying anything.
    springroll.deployRegisters the project if it is new, takes its source from a pushed repository or the files in your folder, and deploys it.
    springroll.deploy.statusFollows the build from QUEUED to READY or failure, with build logs when you ask for them.
    springroll.deploy.promoteMoves a tested release to the next environment, such as UAT to Production, reusing the built artifact.
    springroll.approval.submit, springroll.approval.getAsks the configured reviewers for a decision, such as a production promotion, and reports where it stands.
    springroll.app.list, springroll.app.get, springroll.app.updateFinds your apps, reads an app's registry record and updates its App Portal details, such as description and support contact.
    springroll.security.audit, springroll.security.statusRuns your company's configured security checks on a release and reads the findings.
    springroll.connect.data_products, springroll.connect.request_accessLists governed company data and requests specific fields for one environment, for a data owner to approve.
    springroll.app.record_promptsAttaches the conversation that produced the app to its record, for the next maintainer and the reviewer.

    What Claude cannot do through SpringRoll

    Some actions are deliberately out of an agent's reach, so connecting Claude Code does not let it bypass your team's rules.

    • It cannot approve its own requests. Agent connections cannot record approval decisions.
    • It never returns a credential, connection string or secret, and it cannot grant itself access to data.
    • It cannot widen an app's audience, transfer ownership, change a production domain, roll back or retire an app without a person's approval.
    • Every call is recorded in the organization's audit log against the person who authorized the connection.

    Choose the scope: just you, or the whole team

    The scope decides which projects load SpringRoll and whether teammates get it. The default, local, connects SpringRoll for this project on your machine only. Use --scope user to have it in every project, or --scope project to write it into .mcp.json so everyone who clones the repository deploys through the same server.

    Project scope shares the server address, never a credential. Each teammate approves the project's servers once and signs in to SpringRoll as themselves, so every deployment is recorded against the person who made it. When the same name appears in several scopes, Claude Code uses the whole entry from the highest one: local, then project, then user, then plugins, then claude.ai connectors.

    # Share SpringRoll with everyone who clones this repository
    claude mcp add --transport http --scope project springroll https://springroll.dev/api/mcp
    
    # The resulting .mcp.json contains no token:
    # { "mcpServers": { "springroll": { "type": "http", "url": "https://springroll.dev/api/mcp" } } }

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

    Where each Claude Code MCP scope is stored and who gets it.
    ScopeLoads inShared with teammatesStored in
    local (default)The current project onlyNo~/.claude.json, under the project's path
    projectThe current project onlyYes, through version control.mcp.json in the project root
    userEvery project on your machineNo~/.claude.json

    Sign-in: why there is no token to paste

    SpringRoll follows the MCP authorization specification. When Claude Code first calls the endpoint without a token, SpringRoll answers with the address of its OAuth metadata, and Claude Code opens the sign-in page itself. The credential it receives belongs to one named membership and carries only that person's permissions. Claude Code stores it and refreshes it.

    On a machine without a browser, such as over SSH, use --no-browser, open the printed URL elsewhere and paste the full callback URL back. Removing the server deletes the stored tokens from your machine; Claude Code's documentation recommends claude mcp logout first when you want the grant revoked.

    claude mcp login springroll               # sign in from the shell instead of /mcp
    claude mcp login springroll --no-browser  # print the URL, for SSH sessions
    claude mcp logout springroll              # clear the stored credentials

    Check, reconnect or remove SpringRoll

    Inside a session, /mcp shows SpringRoll's connection state and tools. From the shell:

    claude mcp list             # every configured server and its status
    claude mcp get springroll   # SpringRoll's entry and health
    claude mcp remove springroll

    Adding other MCP servers next to SpringRoll

    SpringRoll uses the HTTP transport because it runs at a URL. Local tools use stdio: Claude Code starts the program and talks to it directly. Everything after the double hyphen is passed to that program unchanged. Claude Code's documentation marks SSE as deprecated; use HTTP wherever a server offers it.

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

    Claude Code MCP transports, with SpringRoll as the HTTP example.
    TransportUse it whenExample
    httpThe server runs at an HTTPS URLclaude mcp add --transport http springroll https://springroll.dev/api/mcp
    stdioThe server is a local program, started with npx, uvx or pythonclaude mcp add --transport stdio <name> -- npx -y <package>
    sseAn older server offers only Server-Sent Eventsclaude mcp add --transport sse <name> <url>

    MCP server, skill or plugin: how SpringRoll fits

    An MCP server gives Claude tools it can call; SpringRoll's tools are the ones above. A skill is a set of instructions Claude loads for a task; SpringRoll's optional skill adds the /springroll deploy command and the deployment checklist. A plugin is a package that can bundle skills, commands, agents, hooks and MCP servers. Servers that arrive in a plugin are added and removed with the plugin, not with claude mcp add.

    npx skills add springroll-dev/springroll-skill --skill springroll

    Troubleshooting SpringRoll in Claude Code

    Start with /mcp and claude mcp list, then match what you see.

    • springroll shows as pending approval: it came from a project .mcp.json you have not approved. Approve it when prompted, or run claude mcp reset-project-choices and start again.
    • Sign-in never finishes: run claude mcp login springroll --no-browser, open the URL yourself and paste the full callback URL back.
    • You signed in to the wrong workspace: run claude mcp logout springroll, then sign in again and choose the workspace that should own the app.
    • springroll.context reports that no runtime can take a deployment: deployments are not configured for that workspace yet. Ask a workspace administrator; an agent cannot work around it.
    • A deployment is refused with POLICY_BLOCKED: ask Claude to run springroll.policy.check for the app, which names what must change.
    • A build fails: ask Claude to call springroll.deploy.status with build logs, fix the cause in the project, then deploy again.
    • A long build looks stuck: SpringRoll deploys asynchronously, so springroll.deploy returns before the build finishes. Ask Claude to keep following springroll.deploy.status.

    What this guide was checked against

    Claude Code commands were checked against Claude Code 2.1.289 and the Claude Code MCP documentation on 6 November 2026. SpringRoll's tools and limits come from its live server card on the same day. Run claude mcp --help to confirm the flags your installed version supports.

    Frequently asked questions

    Does SpringRoll need an API key in Claude Code?

    No. You add its URL and sign in through the browser. The credential is issued to your membership, stored by Claude Code and never pasted into a file.

    Can my whole team share the SpringRoll MCP configuration?

    Yes. Add it with --scope project to write .mcp.json, and commit that file. It contains only the URL; each teammate signs in as themselves.

    Can Claude approve its own deployment through SpringRoll?

    No. Agent connections cannot record approval decisions. On the Staged workflow a configured reviewer approves the release.

    Where does Claude Code store the SpringRoll server entry?

    In ~/.claude.json for local and user scope, or in .mcp.json at the project root for project scope.