SpringRoll

dev.springroll由 springroll.dev 發布官方發布者v0.2.0更新於 Nov 7, 2026

Deploy apps built with Claude Code or Codex, get releases approved, share them in an App Portal.

已驗證Streamable HTTP可網頁執行雲端與基礎設施安全與監控資料與分析

概覽

AI 產生的概覽

把 AI 打造的應用程式部署到託管的 Vercel 或 Cloudflare,經審核流程發布,並串接受治理的公司資料。

可以做什麼
  • 檢視組織、身分、權限與可用的部署執行環境
  • 從 git 遠端或上傳的壓縮檔註冊並部署應用程式,輪詢狀態並在環境間晉升版本
  • 預覽部署位置與費用、檢查治理政策、提交晉升或可見性變更的審核請求
  • 讀取與更新應用程式記錄,管理私有的 App Portal 上架草稿、圖片與圖示產生
  • 瀏覽受治理的資料產品、依欄位申請存取並查詢審核狀態
  • 執行安全稽核、查看稽核狀態,以及提交與查看意見回饋
適用情境
適合以 AI 程式助理打造應用程式、希望免去手動管理託管、審核與資料存取的團隊。也適合需要在發布進入正式環境前進行政策檢查與人工審核的組織。
執行需求
遠端 streamable HTTP 端點,不需本機套件或執行環境。需要已驗證的 SpringRoll 組織與 agent 權杖,且組織須設定好部署執行環境(託管的 Vercel 或 Cloudflare)。
安裝前請注意
部署、晉升、更新記錄與儲存上架草稿都會改變真實狀態;審核只能提交,不能由 agent 決定。上傳的截圖與記錄的對話可能被能看到應用程式記錄的人讀取,請勿包含機密內容。資料存取僅限核准欄位,應用程式在部署時取得注入的憑證。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 SpringRoll,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/dev.springroll%2Fspringroll/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "springroll": {
      "type": "http",
      "url": "https://springroll.dev/api/mcp"
    }
  }
}

工具

23

springroll.security.audit

Audit an application release

Start the company's configured security checks for an immutable release and environment. May send code only to policy-approved audit models within the configured budget. Does not deploy or waive Block. Returns an existing matching audit on retry.

輸入參數context必填releaseId必填application必填environmentType必填

springroll.security.status

Read a security audit

Read the current job status, company policy decision, redacted findings and unchecked controls. Never starts or retries a scanner.

輸入參數auditId必填context必填

springroll.feedback.submit

Send feedback

Submit a bug report, idea, or other feedback about SpringRoll on behalf of the authenticated member. Do not include credentials. Reuse the idempotency key when retrying the same submission.

輸入參數context必填message必填category必填idempotencyKey必填

springroll.feedback.list

Read your feedback

List only the authenticated member's SpringRoll feedback in the current organization, newest first. Use nextOffset for the next page.

輸入參數limitoffsetcontext必填

springroll.context

Get SpringRoll context

Returns the organization, identity, and permissions this agent token acts as, together with the deployment runtimes configured for it. Call this first: it tells you which tenant you are in, what you are allowed to do, and whether a deployment can actually land. It never returns credentials.

輸入參數context必填

springroll.deploy

Deploy a project

Registers the project if it is new, attaches whatever source you give it, and deploys it using the application's Deployment workflow. Direct applications go to Production; Staged applications go to Development. Returns the live URL, or a deployment id to poll if the build is still running. **You do not decide whether this project needs git.** Send what you have and SpringRoll works it out: • a pushed git remote → pass `repositoryUrl` (and `ref` if not the default branch) • no remote, or uncommitted work → pass `archive`, a base64 tar+gzip of the source: tar --exclude=node_modules --exclude=.next --exclude=.git --exclude='.env*' \ -czf - . | base64 -w0 • both → SpringRoll builds from git, and falls back to your files if the ref cannot be resolved (an unpushed branch, typically) • neither, on an app that already exists → redeploys its current source Upload SOURCE, not build output: SpringRoll runs the build. node_modules, .next, dist, build, out, coverage and .log files are dropped automatically and reported. Every .env file and .git/ is REFUSED outright, naming the offending path: configuration belongs in SpringRoll, not in the bundle. Upload limits are about 3 MB compressed on the wire (a platform request-body cap, not a preference), 20 MB expanded, 2000 files, 512 KB per file; a project past them should pass `repositoryUrl` instead, which SpringRoll clones directly with no size limit. Sending the same files twice is free, because bundles are addressed by content. Direct to Production skips workflow approvals but keeps production safety checks. Staged applications continue to use explicit promotion and approvals.

輸入參數refnameslugtagsfilesarchivecontext必填manifestframeworkplacementdepartmentapplication另有 12 個

springroll.deploy.status

Get deployment status

Returns a deployment's current status, refreshing it from the runtime provider when the build is still in progress. Statuses: QUEUED, VALIDATING, BUILDING, DEPLOYING, READY, FAILED, CANCELLED, SUPERSEDED, ROLLED_BACK. Poll this after deploying rather than assuming success. Pass `includeLogs` to get the normalised build and deploy log lines alongside the status. Do that once the status is FAILED, rather than guessing at the cause.

輸入參數context必填logLimitincludeLogsdeploymentId必填

springroll.deploy.promote

Promote a deployment

Promotes a tested deployment into the next environment (development -> uat, uat -> production). Reuses the already-built artifact rather than rebuilding, so the bytes that were tested are the bytes that ship. Promotion into an environment that requires approval will be refused until the approval exists. For production, submit the request first.

輸入參數context必填deploymentId必填idempotencyKey必填targetEnvironmentType必填

springroll.placement.preview

Preview a placement

Scores where SpringRoll would place this application and what it would cost, without deploying or writing anything. It shares its implementation with springroll.deploy, so the receipt it returns is what a deploy right now would decide: the provider and plan, the estimated monthly cost range, every limit the plan carries, what was inferred rather than declared, and why each other candidate lost. It works before any provider account is connected. The ranking is computed from the public catalog alone and credentials never affect it: connecting an account changes only whether a plan is deployable, never how it ranks. Each ranked alternative carries its readiness and the action that unlocks it, so you can tell the user both what is recommended and what would deploy today. Use it to put the cost and the limits in front of the user before deploying, or to ask what-if questions by varying the placement hints.

輸入參數context必填placementapplication必填environmentType

springroll.app.get

Get an application

Returns an application's registry record: metadata, lifecycle stage, risk score, and whichever of the optional sections you ask for. No secrets are included. Sections, all returned by default: • `source`: repository or uploaded bundle, and `cannotBuildReason` when a deploy would be refused for want of a source • `history`: recent releases and deployments • `status`: each environment's current deployment, outstanding approvals, and usage. This answers "where is my app up to?" • `grants`: data access grants and dependencies Pass a narrower `include` when you only need part of it; each section costs a query.

輸入參數context必填includeapplication必填

springroll.app.list

List applications

Lists applications in this organization, newest first. Use `search` to find one by name or slug.

輸入參數limitsearchcontext必填

springroll.app.update

Update application metadata

Updates App Portal metadata: description, icon, tags, department, support contact, and data classification. Visibility is deliberately not editable here, because widening an audience requires an approval request (sec. 15.4).

輸入參數tagscontext必填iconUrldepartmentapplication必填descriptionsupportContactdataClassification

springroll.app.presentation.get

Read app presentation draft

Read a private app listing draft and available artwork. Does not publish or expose the app.

輸入參數context必填application必填

springroll.app.presentation.save

Prepare app presentation draft

Save listing copy and selected image IDs to a private draft. Read the revision first. Use factual copy and real, reviewed screenshots. Only the owner or admin can publish in SpringRoll.

輸入參數draft必填context必填revision必填application必填

springroll.app.presentation.upload

Upload app presentation image

Upload a real screenshot or app icon as base64 PNG, JPEG, or WebP (8 MB maximum). Metadata is stripped. Images remain private until selected in an owner-published snapshot. Never upload confidential screen content.

輸入參數kind必填base64必填context必填application必填idempotencyKey必填

springroll.app.presentation.generate_icon

Prepare an app icon draft

Queue one premium icon draft from the app's reviewed purpose. Requests are limited and deduplicated. Artwork never blocks deployment or publishes itself.

輸入參數context必填purpose必填application必填idempotencyKey必填

springroll.approval.submit

Submit an approval request

Submits an approval request of any supported type: UAT_PROMOTION, UAT_SIGN_OFF, PRODUCTION_PROMOTION, VISIBILITY_CHANGE, OWNERSHIP_TRANSFER, RETIREMENT, DOMAIN_CHANGE, or ROLLBACK. **An agent may submit but never decide**: SpringRoll requires a human approver, and an agent token cannot approve its own request. Confirm with the user before calling this. It creates review work for named people. Type-specific behaviour: • `PRODUCTION_PROMOTION`: this does NOT deploy. It asks. `releaseId` defaults to the application's latest release, and `targetEnvironmentType` to 'production'. Once approved, call springroll.deploy.promote. • `UAT_PROMOTION`: `targetEnvironmentType` is required, 'uat' (or 'development' where Development needs approval). An approval only unlocks the environment it names. • `UAT_SIGN_OFF`: `targetEnvironmentType` defaults to 'uat'. • `ROLLBACK`: `justification` and `targetEnvironmentType` (the environment to roll back) are required. Put the deployment to restore in `payload.targetDeploymentId`; it defaults to the last successful one. • `RETIREMENT`: `justification` is required. • Every other type takes no `targetEnvironmentType`.

輸入參數context必填payloadreleaseIdapplication必填requestType必填justificationidempotencyKey必填targetEnvironmentType

springroll.approval.get

Get an approval request

Returns an approval request with its assigned reviewers, decisions so far, and the policy snapshot taken at submission. Poll this to find out whether a release has been approved.

輸入參數context必填approvalRequestId必填

springroll.policy.check

Check governance policy

Reports which governance policies an application would pass or fail for an environment. Send `manifest` (YAML or JSON) to validate a document without creating anything. Call this before springroll.deploy to avoid a rejected submission. Read the `springroll://manifest/example` resource for the document's shape. Send `application` instead to explain why an existing application cannot deploy or promote to `environmentType`, with specific remediation for each failing rule. Call this when a deployment is rejected with POLICY_BLOCKED. Send exactly one of the two.

輸入參數context必填manifestreleaseIdapplicationenvironmentType

springroll.connect.data_products

List or describe data products

Without `dataProduct`, lists the governed data products this organization publishes: what each one holds, who owns it, and how sensitive it is. With `dataProduct`, returns that product's schema: its datasets, the available fields with their types and sensitivity, the business glossary its owner wrote, and what the underlying source can compute. Read this before requesting access, so you request the fields the application actually needs. Either way you learn the *kind* of system behind a product (so you know, for example, which query capabilities a source supports) but never a host, a credential, a table name, or a connection string. Request access with springroll.connect.request_access; a data owner must approve it.

輸入參數context必填dataProduct

springroll.connect.request_access

Request data product access

Requests access to a data product for one environment, naming the exact fields the application needs. A data owner must approve, and may narrow the field list or add a row filter before doing so. Nothing is readable until then. You never receive a credential: an approved grant lets the deployed application ask questions through the SpringRoll Connect gateway, which enforces the grant on every request.

輸入參數fields必填context必填purposeapplication必填dataProduct必填environmentType必填

springroll.connect.access_status

Get data access status

Returns the status of a data access request: REQUESTED, APPROVED, REJECTED, REVOKED, or EXPIRED, with the fields actually approved. Approved fields are often narrower than requested, and a row filter may restrict which rows the application can see at all.

輸入參數context必填grantId必填

springroll.app.record_prompts

Record the build transcript

Attaches the conversation that produced this application to its record, as reference for whoever maintains it next and for the reviewer who has to approve it. Ask the user before calling this, every time. The transcript is STORED and is READABLE BY ANYONE who can see the application record. SpringRoll scrubs credentials it recognises before writing (agent tokens, cloud keys, private keys, connection strings, and assignment lines whose key looks like a secret), but that scrubbing is best-effort and cannot be complete. If the conversation contained a real secret, do not record it. Send turns in order. Keep `sessionKey` stable across calls for one build so they join up; retrying with the same key and turn indexes overwrites rather than duplicating.

輸入參數turns必填context必填agentNamemodelNamereleaseIdsessionKey必填application必填inputTokensoutputTokensidempotencyKey必填startTurnIndex

版本歷史

1
  1. v0.2.0最新Nov 7, 2026

評分

已滿足適用檢查項的 83%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分

    請宣告包含 README 的 GitHub 儲存庫,或在 OAuth 受保護資源後設資料中提供 resource_documentation。

  • 授權條款不適用

    託管服務按其提供方的條款使用,因此這裡不要求授權條款。此檢查項不計入百分比。

其他 Springroll 整合