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 byapi_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:
add_middleware, sampling, elicit-handlers, completions, server metadata such as
name/version/auth, and the process-global fastmcp.settings.
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 theapp.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.
