Describe the capabilities you need
Use
fused-cli describe --kind mcp to create an MCP App or update an existing local config for review.Author and deploy
issueUpdate from Jira and chatPostMessage from Slack. Use one quoted --service value: semicolons separate services, and commas separate operations within a service. For example, --service 'slack=chatPostMessage,conversationsList;jira=issueUpdate' selects two Slack operations and one Jira operation.
To expose all operations from both services, use --service 'jira;slack'. Bare services select all physical operations automatically, including with --no-input. Quote the value so your shell preserves semicolons. Use <service>@<version> to pin a provider version, such as --service 'jira@v3=issueUpdate;slack=chatPostMessage'.
Init enables any missing service after one combined confirmation under a separate workspace receipt. It builds and validates the MCP candidate in memory, then plans it before creating .fused/mcps/support-agent.yaml. Interactive init offers the credential review: set up credentials here, open bucket setup in the browser, recheck, proceed anyway, or cancel. After a successful plan and completed review, init creates the file atomically, applies the MCP server, and prints its connection details. A failed plan or cancelled review creates no app config or app receipt, though completed workspace activation or credential writes remain applied.
Standalone app plan for MCP reports missing credentials without changing them. Init can publish with readiness warnings when you choose Proceed anyway or run with --no-input. The first affected tool call then stops before contacting the provider and identifies the missing credentials. Run fused-cli connect for that service and bucket, then retry the call.
The resulting config is durable desired state. Provider versions depend on the versions resolved in your workspace; this example uses Jira v3 and Slack v1:
description summarizes what the server helps an agent accomplish in one to three concise sentences. Keep operation IDs out of this overview; the agent discovers exact calls later through search_docs. In a terminal, init prompts when you omit it. With --no-input, pass it explicitly.
Each service resolves credentials through its own bucket: override when set, otherwise the top-level bucket:. A local ${bucket.auth...} reference joins services in the same bucket. A managed ${fused.bucket.auth...} reference selects a Fused Managed App while keeping user connections in the selected bucket.
Use fused-cli app versions list support-agent whenever you need to recover the stable and pinned endpoints after initialization.
Flags
fused-cli init --mcp
--language is SDK-only. An MCP server is a runtime, not a generated package.
Init also resolves server-template variables for the operations you selected and writes the matching server_variable injections, reporting a count of what it generated. The behaviour is identical to the SDK side — how init fills in routing.
Omit the method flags to create one App with SDK, MCP, and REST delivery. For MCP only, pass --mcp. With --no-input, also pass --description; bare and scoped service selectors work the same way as in a terminal.
Repeated service flags, comma-separated bare services, and the older --operation and --select-all flags remain supported. Explicit legacy operation lists, event selections, or imported MCP capability flags keep their selected scope without adding all physical operations.
fused-cli extend
Add another service or operation without repeating --mcp:
extend reads .fused/mcps/support-agent.yaml, infers MCP mode, and adds the selected operation to that same file. Use --service 'slack' to add all Slack operations, or semicolons to group several services. Omitted provider versions inherit existing App pins. An idempotent repeat keeps its version. A real change to a stable SemVer version advances to the next minor version and is shown in terminal confirmation; the same inference works with --no-input. Use --version to override the inferred successor. Prerelease and non-SemVer versions require an explicit successor.
app plan
Select this server’s config with -f .fused/mcps/support-agent.yaml for plan, apply, and offline validation. This keeps the commands scoped to the server when your project contains other apps. See config selection.
MCP planning never mutates credentials. It reports missing entries as readiness metadata and still creates a valid plan. By contrast, an SDK plan in a terminal can offer to store missing credentials securely and retry once; declining also keeps the valid plan. Use
app validate only when you need an offline-only check.
app apply
--json is supported across app types. --download requires a generated SDK package; an MCP-only server has no package to download.
MCP-specific constraints
- Explicit webhook selection. Set
webhook_attachmentand a per-servicewebhookslist to expose provider events as MCP resources. Event-only services are supported.webhooks_select_all: trueis rejected. See receive MCP events for client requirements, live notifications, and retained payload reads. - No implicit latest app. Init may default a provider version while writing the config, but MCP app references and runtime promotions always resolve one exact immutable app version.
Versions
One MCP name has one stable MCP ID shared by every version, and each explicit version has its own immutable Version ID. Multiple versions can run at once. Applying a version explicitly promotes it for new sessions on the stable MCP URL. Applying an older version again explicitly rolls the stable target back. Existing sessions continue on the immutable version they resolved during initialization. The CLI displays both endpoints after apply and inapp versions list support-agent:
Applying identical content to the same version is a no-op. Changing its description, operation, auth, or injection scope returns
app_version_immutable — publish a new version instead.
Deactivating the promoted version makes the stable URL unavailable. Fused does not guess another sibling version; explicitly apply the version you want to promote next.
Deactivating
Connect an agent with a scoped token
Bind a token to the right connected user and place it in the MCP client.