Un MCP Server è un servizio che espone strumenti, risorse e prompt a un modello AI tramite il Model Context Protocol. È il componente che permette all'AI di eseguire azioni concrete — leggere un database, inviare un'email, aggiornare un ERP — senza integrazioni custom per ogni singolo servizio.
Se non conosci ancora il Model Context Protocol, la guida completa a MCP spiega il contesto e l'architettura generale. Questa pagina si concentra specificamente sul componente Server.
Cos'è un MCP Server
Nell'architettura MCP, il Server è il nodo che "conosce" un sistema specifico. Il Server GitHub conosce i repository, i commit e le pull request. Il Server PostgreSQL conosce il database e sa come eseguire query. Il Server ERP aziendale conosce ordini, magazzino e fatture.
Ogni MCP Server si registra presso un MCP Host (l'applicazione AI) attraverso un MCP Client, dichiarando le proprie capacità: quali Tool può eseguire, quali Resource può fornire, quali Prompt template ha disponibili. Il modello AI scopre queste capacità dinamicamente e le usa quando pertinenti.
La distinzione fondamentale rispetto a una normale API: con un'API tradizionale il programmatore deve sapere in anticipo cosa chiamare e come. Con un MCP Server il modello AI scopre autonomamente le capacità e decide quando e come usarle in base al contesto.
Come funziona un MCP Server
Il ciclo di comunicazione JSON-RPC
La comunicazione tra MCP Client e MCP Server avviene tramite JSON-RPC 2.0, un protocollo leggero basato su JSON. Il flusso tipico è:
- Il Client invia una richiesta di initialize al Server, che risponde con le proprie capacità
- Il Client trasmette al modello AI la lista dei Tool, Resource e Prompt disponibili
- Quando l'AI decide di usare un Tool, il Client invia una richiesta tools/call al Server
- Il Server esegue l'operazione e restituisce il risultato
- Il risultato viene incluso nel contesto dell'AI per il passo successivo
Trasporti supportati (stdio, SSE, WebSocket)
MCP supporta tre modalità di trasporto:
- stdio: comunicazione via standard input/output. Ideale per server locali che girano sullo stesso computer dell'Host (es. Claude Desktop con server locali).
- SSE (Server-Sent Events): comunicazione HTTP unidirezionale. Adatto per server remoti in scenari cloud o aziendali con connessione stabile.
- WebSocket: comunicazione bidirezionale full-duplex. Ottimo per applicazioni che richiedono aggiornamenti in tempo reale.
I componenti esposti da un MCP Server
Tools (funzioni eseguibili)
I Tools sono le azioni che l'AI può eseguire tramite il Server. Hanno effetti: modificano dati, inviano comunicazioni, creano record. Ogni Tool ha un nome, una descrizione (che l'AI usa per decidere quando usarlo) e uno schema JSON che definisce i parametri richiesti.
Esempi di Tool tipici in un MCP Server ERP:
create_order— crea un ordine di acquistoupdate_stock— aggiorna la giacenza di un articolosend_confirmation_email— invia l'email di conferma al fornitoreget_product_availability— verifica la disponibilità di un prodotto
Resources (dati leggibili)
Le Resources forniscono accesso in sola lettura a dati strutturati. Non hanno effetti collaterali. Vengono usate per arricchire il contesto dell'AI prima di prendere decisioni o generare risposte.
Esempi di Resource:
customer/{id}/orders— storico ordini di un clienteproduct/{sku}/details— dettagli e prezzi di un prodottoinvoice/{id}/status— stato di una fattura
Prompts (template riutilizzabili)
I Prompt template sono istruzioni preconfezionate per scenari ricorrenti. Ottimizzano come il modello affronta compiti specifici, incorporando le best practice per quel contesto. Un Prompt "elabora DDT" può includere istruzioni su come gestire i campi obbligatori, le eccezioni più comuni e il formato di output atteso.

Server MCP più usati (elenco curato)
L'ecosistema MCP conta già decine di server pronti all'uso. Questi sono i più adottati:
| Server | Cosa fa | Trasporto |
|---|---|---|
| GitHub | Gestione repo, PR, issues, code review | stdio |
| PostgreSQL | Query SQL, schema inspection, lettura dati | stdio |
| Filesystem | Lettura/scrittura file locali con sandboxing | stdio |
| Slack | Invio messaggi, lettura canali, gestione workspace | stdio |
| Brave Search | Ricerche web e locali in tempo reale | stdio |
| Puppeteer | Browser automation, screenshot, scraping | stdio |
| Memory | Knowledge graph persistente per l'AI | stdio |
| Google Drive | Accesso documenti, Sheets, Docs | stdio |
Come creare un MCP Server
In Python (con mcp SDK)
Il modo più rapido per creare un MCP Server è usare l'SDK ufficiale Python. Ecco un esempio minimale di un server con un singolo Tool:
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent
import json
server = Server("erp-connector")
@server.list_tools()
async def list_tools():
return [
Tool(
name="get_order_status",
description="Recupera lo stato di un ordine ERP",
inputSchema={
"type": "object",
"properties": {
"order_id": {
"type": "string",
"description": "ID dell'ordine da verificare"
}
},
"required": ["order_id"]
}
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict):
if name == "get_order_status":
order_id = arguments["order_id"]
# Qui la tua logica di integrazione ERP
status = fetch_from_erp(order_id)
return [TextContent(type="text", text=json.dumps(status))]
async def main():
async with stdio_server() as streams:
await server.run(*streams)
if __name__ == "__main__":
import asyncio
asyncio.run(main())In TypeScript
L'SDK è disponibile anche in TypeScript/Node.js tramite il pacchetto @modelcontextprotocol/sdk. La struttura è analoga a quella Python: si crea un Server, si registrano i handler per list_tools e call_tool, e si configura il trasporto.
Distribuirlo (locale vs remoto)
Per uso locale (es. sviluppo o Claude Desktop personale), il server viene avviato come processo stdio e configurato nel file claude_desktop_config.json. Per uso remoto in ambienti aziendali, il server viene deployato come servizio HTTP con trasporto SSE, protetto da autenticazione e accessibile tramite rete aziendale.
MCP Server e sicurezza
Autenticazione
Ogni richiesta al Server dovrebbe essere autenticata. Per server locali la fiducia viene dalla sessione dell'utente. Per server remoti sono necessari token API, OAuth o certificati client. L'MCP Host non dovrebbe mai trasmettere credenziali dell'utente al Server senza consenso esplicito.
Sandboxing delle operazioni
I Tool con effetti irreversibili (cancellazione dati, invio email massivo, movimenti finanziari) dovrebbero richiedere conferma esplicita dell'utente prima dell'esecuzione. Il pattern "Human-in-the-Loop" — dove l'AI propone l'azione e l'utente approva — è fondamentale per operazioni ad alto impatto.
Audit log
Ogni chiamata a un Tool dovrebbe generare un log strutturato: timestamp, utente, Tool invocato, parametri, risultato. Questo audit trail è essenziale per debug, compliance e analisi post-incidente in contesti aziendali.
Quando serve un MCP Server custom in azienda
Un MCP Server custom è necessario quando si vuole connettere l'AI a sistemi proprietari non coperti dai server open source esistenti: ERP aziendali, gestionali verticali, database legacy, sistemi di ticketing interni o piattaforme di produzione.
I segnali che indicano la necessità di un server custom sono: gli agenti AI devono accedere a dati in tempo reale dal gestionale, si vogliono automatizzare flussi documentali che coinvolgono più sistemi aziendali, o si vogliono creare agenti che agiscono autonomamente su processi operativi ripetitivi.
Domande frequenti sugli MCP Server
Cos'è un MCP Server?
Un MCP Server è un servizio che espone strumenti, risorse e template a un modello AI tramite il Model Context Protocol. Permette all'AI di eseguire azioni concrete come leggere un database, inviare un'email o aggiornare un ERP senza integrazioni custom.
Quali sono gli MCP Server più diffusi?
I server MCP più usati: GitHub (repository e PR), PostgreSQL (query SQL), Filesystem (file locali), Slack (messaggi), Brave Search (ricerche web), Puppeteer (browser automation).
Come si crea un MCP Server custom?
Usando l'SDK MCP ufficiale in Python o TypeScript. Si definiscono Tool, Resource e Prompt, si configura il trasporto e si espone il server all'applicazione AI host.
Qual è la differenza tra Tool, Resource e Prompt?
I Tool sono funzioni eseguibili con effetti (creare record, inviare email). Le Resource sono fonti di dati in sola lettura (storico ordini, prezzi). I Prompt sono template predefiniti per scenari ricorrenti.
MCP Server e TypeLens: un caso reale
Il Workflow Builder di TypeLens usa MCP Server per connettere l'AI di estrazione documentale ai principali ERP italiani (SAP, Teamsystem, Odoo, eSolver, Ad Hoc). Ogni connettore è implementato come MCP Server che espone Tool per la creazione di movimenti di magazzino, ordini e fatture, e Resource per la verifica di articoli e fornitori.
Il risultato: un documento DDT arriva via email, l'AI lo elabora, verifica l'articolo nel gestionale tramite Resource, e crea il movimento di magazzino tramite Tool — senza intervento manuale per i casi standard. Per saperne di più sull'automazione dei DDT vedi la guida completa all'automazione DDT →
Per capire il protocollo nel suo insieme, torna alla guida al Model Context Protocol →