FastMCP
Python framework for building MCP servers, used as the foundation for all VPS MCP server implementations.
Current State
FastMCP 3.x in production across all MCP servers. Breaking changes from 2.14.x include renamed parameters (on_duplicate_tools → on_duplicate), removed _tool_manager._tools (use await mcp.list_tools()), and native OTEL integration. All servers use streamable HTTP transport on port 8000.
Key Learnings
-
fastmcp-3-0-breaking-changes-from-2-14-x-1-on-duplicate — FastMCP 3.0 breaking changes: renamed params, removed APIs, microcheck swap
-
fastmcp-3-x-api-changes-mcp-tool-manager-tools-removed-use — FastMCP 3.x API changes: _tool_manager._tools removed
-
bible-v18-0-to-v18-1-law-7-rewritten-transport-appropriate — Bible v18.1 transport-appropriate auth for FastMCP servers
-
dead-code-removal-requires-cascade-check-before-removing — Cascade check before removing FastMCP code
-
dead-code-removal-requires-cascade-check-init-py-re-exports — Init.py re-export cascade check
-
excalidraw-spa-vs-png-rendering-3-iron-rules-1-free — Excalidraw FastMCP rendering rules
-
mcp-server-version-bumps-check-all-src-python-files-not — Version bumps must check all src Python files
-
vault-mcp-server-healthcheck-fastmcp-3-1-0-does-not-expose — FastMCP 3.1.0 does not expose healthcheck endpoint
-
notebooklm-mcp-integration-pattern — NotebookLM MCP integration via FastMCP
-
n8n-god-agent-mcp-rebuild-v5 — N8N MCP rebuild using FastMCP
-
asyncpg-ambiguousparametererror-explicit-type-casts-needed — AsyncPG type casts in FastMCP servers
-
cpu-only-pytorch-two-step-dockerfile-install-eliminates-6 — CPU-only PyTorch for FastMCP containers
-
switchy-mcp-internal-duplicate-fastmcp-instances — switchy-mcp contains two FastMCP server instantiations in separate files (
src/switchy_mcp/server.pyand `src/switchy_m -
switchy-mcp-dual-server-entry-point-internal-duplication — switchy-mcp has both
src/switchy_mcp/server.pyandsrc/switchy_mcp/core/server.py, both instantiating FastMCP and re -
fastmcp-duplicate-tool-inline-wins-over-module — When a Salesforce MCP server (or any FastMCP server) defines the same tool name both inline via
@mcp.tool()in `server -
mdapi-sync-calls-require-asyncio-to-thread-wrapping —
simple-salesforcemetadata API calls (mdapi.deploy,mdapi.retrieve, etc.) are synchronous blocking operations. In -
mdapi-deploy-blocking-requires-asyncio-to-thread — simple-salesforce’s mdapi.deploy() is a synchronous blocking call that must be wrapped with asyncio.to_thread() in FastM
-
fastmcp-inline-tool-takes-precedence-over-module-tool-on-dup — When FastMCP registers tools with on_duplicate=‘error’ and both an inline @mcp.tool() in server.py and a module-level im
-
simple-salesforce-all-mdapi-calls-are-synchronous-must-wrap — All simple-salesforce SfdcMetadataApi methods (deploy, retrieve, check_deploy_status, check_retrieve_status) are blockin
-
salesforce-mcp-inline-tool-overrides-module-on-duplicate-err — When server.py registers a tool with @mcp.tool() inline AND a module file (e.g. deployment/operations.py) registers the
-
server-py-inline-tool-overrides-module-tool-on-duplicate — When a FastMCP server registers both an inline @mcp.tool() in server.py and a module-based tool with the same name, the
-
notebooklm-mcp-cli-replaces-custom-wrapper-zero-debt — The upstream notebooklm-mcp-cli v0.5.17 package includes a built-in HTTP transport mode (`notebooklm-mcp —transport htt
-
salesforce-mcp-inline-server-py-tools-override-module-tools — The Salesforce MCP server registers tools both inline via
@mcp.tool()in server.py and via module imports (e.g., deplo -
fastmcp-on-duplicate-error-inline-server-py-wins-over-module — When FastMCP is configured with on_duplicate=‘error’, inline @mcp.tool() definitions in server.py take precedence over m
-
bible-v1913-canonized-mcp-2025-11-25-spec-compliance-mandate — Bible v19.1.3 canonized — MCP 2025-11-25 spec-compliance mandated
-
bible-v1915-v1916-r24-r13-framework-promotions — Bible v19.1.5 + v19.1.6 — R24 task gating + R13 no-hardcode idiom framework promotion
-
session-close-phase-2-4-new-cache-categories — Session-close Phase 2 evolution — 4 new cache categories (cross-agent applicable)
-
mcp-framework-fastmcp-3-task-surface-r33-9th-cascade-surface — Two reusable findings from Fivetran v19.1.5 → v19.1.7 upgrade — now canonical in Bible main (PR #19 squash
9c41f847on -
snowflake-mcp-v22-retro-bible-law-11-r38-r40-upstream-verifi — Snowflake MCP v22 retrospective — Bible Law 11 (R38-R40) institutional learning
-
bible-v1918-r41-r44-retrofit-pattern — # Bible v19.1.8 R41-R44 retrofit pattern (proven on snowflake-mcp v22.0.4)
-
mcp-bible-v1919-r45r46r47-wrapper-impl-arity-discipline — # Bible v19.1.9 — Wrapper-Impl Arity Discipline (R45-R47)
-
bible-v19110-sync-protocol-r45-gap-for-all-in-one-class-mcp — # Bible v19.1.10 sync protocol + R45 applicability gap
Known Issues
- error-001-azure-mgmt-resource-v25-modulenotfounderror-for-subscriptionclientpolicyclient — Azure MCP ModuleNotFoundError
- error-010-ghcr-microcheck-403-forbidden-during-docker-build — GHCR microcheck 403 during FastMCP build
- error-004-peteryin21microcheck-docker-image-no-longer-available — peteryin21/microcheck unavailable
Decisions
-
mcp-servers-streamable-http-on-port-8000-traefik-routed — Streamable HTTP on port 8000
-
n8n-mcp-server-complete-rebuild-vs-incremental-upgrade — N8N MCP rebuild using FastMCP
-
plan-v2-is-not-foolproof-without-5-mitigations-added-for-the — Plan v2 is NOT foolproof without 5 mitigations added for the premortem findings before AJ executes: M1 Phase 0.5 census
-
bible-v181-v1917-framework-upgrade-for-tableau-mcp-pair-ship — Bible v18.1 → v19.1.7 framework upgrade for tableau MCP pair: shipped v6.0.1 with 521 tools (514 baseline + 7 R29-verifi
-
tableau-mcp-pair-upgrade-bible-v181-v1917-signed-at-v601-521 — Tableau MCP pair upgrade Bible v18.1 → v19.1.7 SIGNED at v6.0.1 / 521 tools — closure with surfaced framework refinement
-
r44-prometheus-surface-11-additive-vs-in-place-rename-snowfl — R44 prometheus surface 11 — additive vs in-place rename (snowflake-mcp v22.0.4) For Bible v19.1.8 R44 surface 11 (promet
-
snowflake-mcp-v2204-v2205-patch-landed-3-source-fixes-impl-w — snowflake-mcp v22.0.4 → v22.0.5 patch landed: 3 source fixes (impl-widened _make_rest_request with path= alias per R47,
Relationships
- Depends on: docker, traefik
- Used by: vault-mcp, omnigraph, notebooklm, n8n, excalidraw, openspace, hostinger-admin, blue, file-manager
- Integrates with: postgresql, redis, graphiti
Sources
- Vault notes: 17 references
Contradictions
(none)
Related
docker | traefik | vault-mcp | omnigraph
- salesforce-mcp-mdapi-calls-must-be-async-wrapped
- simple-salesforce-metadata-api-tuples-not-dicts
- aws-mcp-v400-bible-v19110-upgrade-registry-dispatch-architec