FastMCP în Python: Crearea unui Server cu @mcp.tool() în Model Context Protocol (MCP)

Modulul oficial din SDK-ul Python (mcp.server.fastmcp) care îți permite să construiești un server MCP complet în câteva linii de cod, folosind decoratori și type hints.

Specificație & cod MCP
from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Server Facturare")

@mcp.tool()
def calculeaza_tva(suma_neta: float, cota: int = 19) -> dict:
    """Calculează TVA-ul și suma brută în RON."""
    tva = round(suma_neta * cota / 100, 2)
    return {"net": suma_neta, "tva": tva, "brut": round(suma_neta + tva, 2)}

if __name__ == "__main__":
    mcp.run()

Descriere & Utilizare

Clasa FastMCP (inclusă direct în pachetul oficial pip install "mcp[cli]") a revoluționat crearea serverelor MCP în Python, oferind o experiență identică cu FastAPI.

Nu trebuie să scrii manual nicio schemă JSON sau handler JSON-RPC: decorezi o funcție Python obișnuită cu @mcp.tool(), iar FastMCP inspectează automat numele funcției, adnotările de tip (type hints sau modelele Pydantic) și docstring-ul pentru a construi definiția completă a uneltei.

Sunt suportate atât funcții sincrone (def), cât și funcții asincrone (async def — ideale pentru apeluri HTTP cu httpx sau interogări de baze de date cu asyncpg).

Cum să o reții ușor

💡 Așa cum FastAPI transformă o funcție Python într-un endpoint web REST prin simpla adăugare a unui decorator, FastMCP transformă orice funcție Python într-o unealtă nativă pentru Claude și Cursor.

Opțiuni și parametri tehnici

  • FastMCP(name, dependencies=[...]): inițializează serverul cu un nume lizibil și lista de pachete Python necesare la rulare.
  • @mcp.tool(): înregistrează funcția ca unealtă apelabilă de către modelul AI.
  • Type Hints & Pydantic Field: cui: str = Field(description="CUI fără prefixul RO") adaugă explicații pe fiecare parametru.
  • mcp.run(transport="stdio"): pornește bucla de ascultare a protocolului.

Exemple practice și cazuri de utilizare

  • Instalare cu managerul modern uv: uv init mcp-demo && cd mcp-demo && uv add "mcp[cli]" httpx
  • Testare în Inspector: uv run mcp dev server.py
  • Instalare directă în Claude Desktop dintr-o comandă: uv run mcp install server.py --name "Asistent Intern"

Sfaturi de configurare & capcane

Scrie întotdeauna un docstring clar în limba română sau engleză chiar pe prima linie a funcției decorate cu @mcp.tool() — fără docstring, LLM-ul nu va ști ce face unealta ta!

Comenzi și ghiduri înrudite