Skip to main content
A tai server is a first-class MCP citizen. The MCP-native features — output schemas and structured content, elicitation, progress, sampling, completions, and native tags — are all reachable, and anything the platform’s facets do not wrap is reachable through one escape hatch to the raw underlying FastMCP server.

Built on FastMCP

The skeleton’s server is a FastMCP server underneath. The platform layers its own governance over it — manifest gating, the extension registry’s validation, and the access-control gate — and exposes its features through typed facets. The MCP-native capabilities ride the FastMCP foundation, so an MCP client gets structured content, progress, elicitation, and the rest as it would from any MCP server. The server’s management tools are not hand-registered on this surface: they project from the operations layer, curated by api_tools. An AuthzMiddleware installed on this FastMCP instance and on every sub-MCP mount authorizes each projected-operation dispatch before the tool runs.

The app.fastmcp escape hatch

For anything the facets do not wrap, the app exposes the raw FastMCP instance directly:
Reach here for what the facets deliberately leave to FastMCP — prompts, resources, add_middleware, sampling, elicit-handlers, completions, server metadata such as name/version/auth, and the process-global fastmcp.settings.
Anything registered through app.fastmcp skips the platform’s governance: manifest gating, the extension registry’s validation, and the access-control gate. Prefer the facets; use the escape hatch only for what they do not cover. It is named fastmcp (not mcp) so it does not read as the sub-MCP namespace, app.sub_app.
The accessor is intentionally not on the TaiApp contract protocol — the contract stays FastMCP-free so an alternative implementation of the platform remains possible, which makes this accessor skeleton-specific.

FastMCP’s own capabilities

The platform documents the escape hatch — what the app.fastmcp field is and what it grants — not FastMCP’s own API. For a deep dive into FastMCP’s prompts, resources, middleware, and the rest, see FastMCP’s documentation at gofastmcp.com. See the Python SDK reference for the app.fastmcp field and the platform’s facets.