Cos'è FastMCP
FastMCP è un framework open-source in Python, mantenuto da Prefect (PrefectHQ), che semplifica radicalmente la creazione di server e client basati sul Model Context Protocol (MCP), lo standard aperto — introdotto da Anthropic a fine 2024 — che definisce come i modelli linguistici (LLM) si collegano a strumenti, dati e servizi esterni. Se MCP è il 'protocollo', FastMCP è il modo più veloce di parlarlo: invece di gestire manualmente JSON-RPC, handshake di capacità, trasporti e schemi di validazione, lo sviluppatore scrive normali funzioni Python e le decora con @mcp.tool, @mcp.resource o @mcp.prompt. Tutto il resto — generazione degli schemi dai type hint, documentazione automatica, serializzazione, gestione degli errori — viene gestito dal framework.
La storia del progetto è istruttiva. FastMCP 1.0, scritto da Jeremiah Lowin (fondatore di Prefect) pochi giorni dopo la pubblicazione della specifica MCP, è stato accolto nel SDK Python ufficiale del protocollo nel 2024: chi oggi importa mcp.server.fastmcp sta usando, di fatto, quella prima versione. Il progetto standalone, pubblicato su GitHub come PrefectHQ/fastmcp con licenza Apache-2.0, è proseguito come FastMCP 2.0 e oltre, diventando la versione attivamente mantenuta e molto più ricca di funzionalità. A inizio 2026 è arrivata la versione 3.0, con un'architettura a provider e trasformazioni che rende il framework estensibile, osservabile e componibile. Secondo i dati del progetto, qualche versione di FastMCP alimenta la grande maggioranza dei server MCP in circolazione, con download giornalieri nell'ordine del milione.
A cosa serve
Un server MCP espone a un LLM tre tipi di primitive:
- Tool: funzioni che il modello può invocare per agire (calcoli, chiamate API, scritture su database, invio email).
- Resource: fonti dati in sola lettura (documenti, record, configurazioni), anche parametriche tramite template di URI.
- Prompt: modelli di messaggio riutilizzabili che guidano l'interazione con il modello.
FastMCP serve a costruire questi server senza boilerplate. Il caso d'uso tipico per una PMI, un'agenzia o un team di prodotto è: 'voglio che il mio assistente AI (Claude Desktop, Cursor, un agente custom) possa interrogare il gestionale, leggere il CRM o creare una fattura'. Con FastMCP quel ponte si scrive in un pomeriggio, non in una settimana. Il framework copre però anche il lato opposto: include un client completo per connettersi programmaticamente a qualsiasi server MCP, locale o remoto, gestendo negoziazione del trasporto, autenticazione e ciclo di vita del protocollo. Utile per test, per pipeline agentiche e per integrare server di terze parti nelle proprie applicazioni.
Come funziona
L'API è deliberatamente modellata su FastAPI: si crea un'istanza FastMCP, si decorano funzioni Python (sincrone o asincrone) e si avvia il server. Un esempio minimale:
from fastmcp import FastMCP
mcp = FastMCP("Contabilità")
@mcp.tool
def calcola_iva(imponibile: float, aliquota: float = 22.0) -> float:
"""Calcola l'IVA su un imponibile."""
return round(imponibile * aliquota / 100, 2)
@mcp.resource("config://aliquote")
def aliquote() -> dict:
return {"ordinaria": 22, "ridotta": 10, "minima": 4}
if __name__ == "__main__":
mcp.run()
Da type hint e docstring, FastMCP genera automaticamente lo schema JSON che il client MCP userà per capire come chiamare il tool e validarne gli argomenti. Si avvia con fastmcp run server.py, si ispeziona e si debugga con fastmcp dev server.py (che apre l'MCP Inspector, un'interfaccia web di test) e si installa direttamente in Claude Desktop, Cursor o Goose con fastmcp install.
Sotto il cofano, il framework supporta i trasporti standard del protocollo: stdio per l'esecuzione locale come sottoprocesso, Streamable HTTP e SSE per il deployment in rete. Le funzionalità avanzate sono il vero valore aggiunto rispetto all'SDK grezzo:
- Generazione da OpenAPI e FastAPI:
FastMCP.from_openapi()eFastMCP.from_fastapi()trasformano automaticamente una specifica OpenAPI o un'applicazione FastAPI esistente in un server MCP, esponendo ogni endpoint come tool. Per chi ha già API REST interne, è il percorso più breve verso l'integrazione con gli agenti. - Proxying e composizione:
FastMCP.as_proxy()crea un intermediario verso un altro server MCP (per cambiare trasporto, aggiungere logica o filtri), mentremount()eimport_server()permettono di comporre applicazioni modulari unendo più server in uno. - Autenticazione: supporto integrato per pattern enterprise — OAuth, JWT con verifica JWKS, provider come Clerk o Azure — sia lato server che lato client.
- Provider e trasformazioni (v3): componenti caricabili da filesystem (con hot-reload), da skill, da API; trasformazioni componibili per rinominare, filtrare, versionare e proteggere tool prima di esporli ai client.
- Produzione: versioning dei componenti, autorizzazione granulare per singolo tool, tracing OpenTelemetry, task in background, CLI completa (
fastmcp list,call,discover).
Perché conta
Tre ragioni concrete. Primo, la velocità: rispetto all'SDK ufficiale di basso livello, il tempo di sviluppo di un server MCP si riduce di un fattore 5 circa; la curva di apprendimento è quella di una qualsiasi libreria Python moderna, e chi conosce FastAPI si sente a casa. Secondo, il percorso verso la produzione: autenticazione, osservabilità, testing e deployment non sono lasciati come esercizio allo sviluppatore ma sono integrati, il che fa la differenza tra una demo e un servizio affidabile esposto ai clienti o ai colleghi. Terzo, l'ecosistema: MCP è diventato lo standard di fatto per collegare LLM e sistemi esterni — supportato da Anthropic, OpenAI, Google e da decine di client — e FastMCP è il suo framework di riferimento in Python, con migliaia di progetti dipendenti, una documentazione completa su gofastmcp.com (disponibile anche in formato llms.txt per farla leggere direttamente agli agenti) e una community molto attiva.
Per una PMI o un'agenzia italiana il senso pratico è questo: i propri sistemi — gestionale, CRM, e-commerce, archivio documentale — possono diventare 'parlabili' dagli assistenti AI con un investimento minimo, senza riscrivere nulla e mantenendo il controllo su autenticazione e permessi. Le alternative principali sono l'SDK Python ufficiale (più controllo, molto più codice), l'SDK TypeScript (per chi vive in Node.js) e librerie specializzate come fastapi_mcp (se l'obiettivo è solo esporre un backend FastAPI esistente). FastMCP resta la scelta più equilibrata tra semplicità e completezza. Da tenere d'occhio la sicurezza: un server MCP espone funzioni eseguibili, quindi autenticazione, validazione degli input e principio del minimo privilegio non sono opzionali quando si va oltre il localhost.
Dove trovarlo
- Repository GitHub: github.com/PrefectHQ/fastmcp (licenza Apache-2.0, decine di migliaia di stelle)
- Documentazione: gofastmcp.com
- Pacchetto:
pip install fastmcp(oppureuv pip install fastmcp), distribuito via PyPI e conda-forge - Per iniziare: scrivere un
server.pycon un tool decorato, lanciarefastmcp dev server.pyper testarlo nell'Inspector e poifastmcp install server.pyper collegarlo al proprio client AI preferito.
