Mastranet AI

MCP Server: cos'è, come funziona, esempi pratici

MCP Server: cos'è, come funziona e come crearne uno. Esempi di server MCP esistenti (GitHub, Slack, Filesystem) e guida all'implementazione in Python.

Mastranet Team
8 min lettura
MCP Server: cos'è, come funziona, esempi pratici

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 è:

  1. Il Client invia una richiesta di initialize al Server, che risponde con le proprie capacità
  2. Il Client trasmette al modello AI la lista dei Tool, Resource e Prompt disponibili
  3. Quando l'AI decide di usare un Tool, il Client invia una richiesta tools/call al Server
  4. Il Server esegue l'operazione e restituisce il risultato
  5. 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 acquisto
  • update_stock — aggiorna la giacenza di un articolo
  • send_confirmation_email — invia l'email di conferma al fornitore
  • get_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 cliente
  • product/{sku}/details — dettagli e prezzi di un prodotto
  • invoice/{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.

MCP Server architettura e componenti

Server MCP più usati (elenco curato)

L'ecosistema MCP conta già decine di server pronti all'uso. Questi sono i più adottati:

ServerCosa faTrasporto
GitHubGestione repo, PR, issues, code reviewstdio
PostgreSQLQuery SQL, schema inspection, lettura datistdio
FilesystemLettura/scrittura file locali con sandboxingstdio
SlackInvio messaggi, lettura canali, gestione workspacestdio
Brave SearchRicerche web e locali in tempo realestdio
PuppeteerBrowser automation, screenshot, scrapingstdio
MemoryKnowledge graph persistente per l'AIstdio
Google DriveAccesso documenti, Sheets, Docsstdio

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 →

Hai bisogno di un MCP Server custom?

Integra il tuo gestionale ERP con agenti AI tramite MCP Server. Parla con un nostro specialista.

Parla con un esperto