Sub-MCP apps
A sub-MCP app is registered on the live sub-app router under a slug, listing the tools it exposes and the transport it serves. Each registration is a self-contained MCP surface: a client that connects to a sub-MCP sees only that set of tools, not the whole server. The registry keeps a JSON-safe view of every registered sub-MCP — its slug, its tools, and its transport.Registering and tearing down
Sub-MCP apps are managed live, at run time, through three authed doors and their CLI commands:404
rather than silently succeeding.
Why scope a tool set
A private tool set narrows what a given client can see and call. Pairing a sub-MCP with access control lets you route different callers to different scoped surfaces of the same server, keeping each client’s tool list minimal and intentional.The sub-MCP namespace is
app.sub_app. It is separate from the raw FastMCP escape
hatch on the MCP-citizen surface, which is named
app.fastmcp precisely so it does not read as the sub-MCP./api/sub-mcp routes.
