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:
/mcpDeploy 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.
| Tool | What it does |
|---|---|
| springroll.context | Shows which organization, identity and permissions the connection acts as, and which runtimes can take a deployment. |
| springroll.placement.preview | Scores where the app would run and what it would cost on managed Vercel or Cloudflare, without deploying anything. |
| springroll.deploy | Registers the project if it is new, takes its source from a pushed repository or the files in your folder, and deploys it. |
| springroll.deploy.status | Follows the build from QUEUED to READY or failure, with build logs when you ask for them. |
| springroll.deploy.promote | Moves a tested release to the next environment, such as UAT to Production, reusing the built artifact. |
| springroll.approval.submit, springroll.approval.get | Asks the configured reviewers for a decision, such as a production promotion, and reports where it stands. |
| springroll.app.list, springroll.app.get, springroll.app.update | Finds 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.status | Runs your company's configured security checks on a release and reads the findings. |
| springroll.connect.data_products, springroll.connect.request_access | Lists governed company data and requests specific fields for one environment, for a data owner to approve. |
| springroll.app.record_prompts | Attaches 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.
| Scope | Loads in | Shared with teammates | Stored in |
|---|---|---|---|
| local (default) | The current project only | No | ~/.claude.json, under the project's path |
| project | The current project only | Yes, through version control | .mcp.json in the project root |
| user | Every project on your machine | No | ~/.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 credentialsCheck, 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 springrollAdding 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.
| Transport | Use it when | Example |
|---|---|---|
| http | The server runs at an HTTPS URL | claude mcp add --transport http springroll https://springroll.dev/api/mcp |
| stdio | The server is a local program, started with npx, uvx or python | claude mcp add --transport stdio <name> -- npx -y <package> |
| sse | An older server offers only Server-Sent Events | claude 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 springrollTroubleshooting 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.
