---
title: "Cos'e un server MCP? (e come costruirne uno)"
description: "Un server MCP espone tool, resource e prompt agli AI agent tramite un protocollo aperto. Come funziona e come costruirne uno minimale da solo."
type: "guide"
locale: "it"
category: "Agentic Engineering"
canonical: "https://agenticschool.dev/it/guide/what-is-an-mcp-server"
datePublished: "2026-06-13"
dateModified: "2026-06-13"
---

# Cos'e un server MCP? (e come costruirne uno)

- Category: Agentic Engineering
- Keywords: what is an mcp server, how to build an mcp server, mcp server example, mcp vs api, model context protocol server
- Canonical URL: https://agenticschool.dev/it/guide/what-is-an-mcp-server
- Locale: it

> Un server MCP espone tool, resource e prompt agli AI agent tramite un protocollo aperto. Come funziona e come costruirne uno minimale da solo.

Un server MCP e un piccolo programma che espone a un AI agent tool, dati e template di prompt tramite il Model Context Protocol, lo standard aperto che lascia ogni app compatibile MCP connettersi. Invece di scrivere un'integrazione su misura per ogni modello e ogni tool, implementi un server MCP per il tuo servizio, e ogni client MCP (Claude Code, Cursor, Claude Desktop e altri) puo usarlo. L'agente puo allora chiamare il tuo server per eseguire azioni, leggere i tuoi dati e riutilizzare i tuoi prompt, senza che tu copi nulla nella chat. Questa guida spiega esattamente cos'e un server MCP, come funziona l'architettura host-client-server, le tre cose che un server espone, come costruirne uno minimale in TypeScript, e i server comuni che dovresti conoscere. Tutto qui e aggiornato a giugno 2026; per cablarne uno nel tuo agente, vedi la nostra guida Configurare il MCP in Claude Code.

## Cos'e un server MCP

Il MCP (Model Context Protocol) e uno standard aperto che connette gli AI agent a tool, dati e servizi esterni tramite un'interfaccia comune. Un server MCP e il pezzo che tu (o un fornitore) scrivi e che si mette davanti a una capacita data: un database, un browser, un issue tracker, un filesystem, un'API. Annuncia cosa sa fare, e ogni client MCP puo scoprirlo e usarlo. La ragione per cui il MCP si e diffuso cosi in fretta e che risolve un problema N per M: prima del MCP, ogni tool aveva bisogno di un'integrazione su misura per ogni agente; con il MCP, un tool si integra una volta e funziona ovunque. Esiste quindi ormai un server MCP per quasi tutto cio che un agente deve raggiungere.

- Un server avvolge una capacita (un database, un browser, un'API) e la espone agli agenti.
- Parla il Model Context Protocol, cosi ogni client MCP puo usarlo senza codice di collante su misura.
- Scrivi l'integrazione una volta; ogni app compatibile MCP ne beneficia. Ecco perche il supporto si e diffuso in fretta.
- Vedi la voce di glossario sul MCP per la definizione breve e Tool Calling per come gli agenti lo chiamano.

## Come funziona: host, client e server

Il MCP usa un'architettura client-server basata su JSON-RPC 2.0, con tre partecipanti. L'host e l'applicazione IA che usi, come Claude Code o Cursor. Quando l'host si avvia, crea un client MCP per ogni server configurato, e ogni client mantiene una propria connessione dedicata e con stato verso un server MCP. Il server e il programma che espone la capacita. I messaggi viaggiano come richieste, risposte e notifiche JSON-RPC tramite un trasporto. Ci sono due trasporti comuni: stdio, dove l'host genera il server come processo figlio locale e dialogano via input e output standard, e Streamable HTTP, usato per i server remoti ospitati sul cloud. Un host puo condurre piu connessioni client-server simultaneamente, cosi un agente raggiunge un filesystem, un browser e un database nella stessa sessione.

- Host: l'app IA (Claude Code, Cursor, Claude Desktop) con cui l'utente interagisce.
- Client: uno per server, creato dall'host, che mantiene una connessione dedicata.
- Server: il tuo programma che espone una capacita e parla JSON-RPC 2.0.
- Trasporto: stdio per i server locali, Streamable HTTP per i remoti (SSE e deprecato).

## Cosa espone un server: tool, resource e prompt

Un server MCP puo esporre tre tipi di primitive, e un dato server implementa quelle che hanno senso per lui. I tool sono azioni che il modello puo chiamare, come "esegui questa query" o "crea questo issue"; ogni tool dichiara uno schema di input, cosi l'agente sa come chiamarlo. Le resource sono dati read-only che l'agente puo recuperare, come il contenuto di un file o un record di database, indirizzato per URI. I prompt sono template riutilizzabili che il server offre, spesso presentati all'utente come slash command o quick action. I tool sono di gran lunga i piu comuni, perche il valore principale del MCP e lasciare che un agente agisca su un sistema, non solo lo legga.

- Tool: azioni che l'agente puo chiamare (interrogare un database, aprire una PR, pilotare un browser). Ognuno ha uno schema di input.
- Resource: dati read-only che l'agente puo recuperare per URI (contenuto di file, record).
- Prompt: template riutilizzabili che il server offre, spesso mostrati come slash command.
- Un server dichiara quali primitive supporta; la maggior parte guida con i tool.

## Costruire un server MCP minimale

Il modo piu rapido di capire un server e costruirne uno piccolissimo. L'SDK TypeScript ufficiale arriva come pacchetto @modelcontextprotocol/server e ti lascia montare un server stdio funzionante in poche righe: crei un McpServer, registri un tool con un nome, una descrizione e uno schema di input Zod, poi lo connetti via un StdioServerTransport. L'esempio qui sotto espone un tool greet. Salvalo, punta il tuo client MCP sul comando che lo esegue (per Claude Code, e claude mcp add --transport stdio), e l'agente puo chiamare greet. Un SDK Python (FastMCP) offre la stessa forma se preferisci Python.

```typescript
// server.ts - a minimal MCP server exposing one tool over stdio
import { McpServer } from '@modelcontextprotocol/server'
import { StdioServerTransport } from '@modelcontextprotocol/server/stdio'
import * as z from 'zod'

const server = new McpServer({ name: 'greeting-server', version: '1.0.0' })

// Register a tool: a name, a description, and a Zod input schema.
server.registerTool(
  'greet',
  {
    description: 'Greet someone by name',
    inputSchema: z.object({ name: z.string() }),
  },
  async ({ name }) => ({
    content: [{ type: 'text', text: `Hello, ${name}!` }],
  }),
)

// Connect over stdio: the host spawns this file and talks via stdin/stdout.
const transport = new StdioServerTransport()
await server.connect(transport)
```
Un server MCP minimale in TypeScript che espone un tool via stdio, con l'SDK ufficiale @modelcontextprotocol/server.

Tieni server.ts senza console.log su stdout: un server stdio usa stdout per il protocollo JSON-RPC, quindi logga invece su stderr. Da li, aggiungi altri tool, resource e prompt allo stesso modo e passi a Streamable HTTP quando vuoi ospitare il server da remoto.

## Server MCP contro una semplice API

Una domanda legittima e perche un agente ha bisogno di un server MCP quando il servizio sottostante ha gia una API REST. La differenza e la scoperta e l'auto-descrizione. Una API REST ha bisogno di un umano che legga la sua documentazione e scriva codice di integrazione per ogni client; un server MCP annuncia i suoi tool, i loro schemi e le loro descrizioni in uno standard che l'agente legge connettendosi, cosicche l'agente impara automaticamente a usarlo e lo stesso server funziona su ogni client MCP. Il MCP non sostituisce la tua API; e uno strato sottile e adatto agli agenti davanti a essa. Per un caso interno occasionale, un CLI che l'agente puo chiamare e forse piu semplice, ma per tutto cio che piu agenti e app devono usare, un server MCP e la scelta interoperabile.

- Una API REST ha bisogno di codice di integrazione per client; un server MCP e auto-descrittivo e riutilizzato ovunque.
- L'agente legge gli schemi e le descrizioni dei tool connettendosi, quindi sa come chiamarli.
- Il MCP si posiziona come strato adatto agli agenti davanti alla tua API, non la sostituisce.
- Per un caso privato occasionale, un CLI e forse piu semplice; per un uso condiviso, un server vince.

## Server comuni che dovresti conoscere

Raramente devi costruire un server da zero, perche l'ecosistema copre gia i casi comuni. Buone prime connessioni sono il server filesystem (limitato a una cartella, perche l'agente possa leggere e scrivere file di progetto), il server Playwright (perche l'agente possa pilotare un vero browser per testare o fare scraping) e un server database per il tuo stack. Oltre a questi, ci sono server per issue tracker, tool di design, monitoring e la maggior parte dei grandi prodotti SaaS. Ma connetti con criterio: ogni server aggiunge le sue definizioni di tool al contesto dell'agente, quindi ognuno ha un costo continuo, e un server e codice di terze parti con accesso ai tuoi sistemi, quindi verificalo come qualsiasi dipendenza. La nostra guida Configurare il MCP in Claude Code guida l'aggiunta, lo scoping e la verifica sicura dei server.

- Server filesystem: leggere e scrivere file in una cartella limitata.
- Server Playwright: lasciare che l'agente piloti un vero browser.
- Server database: interrogare i tuoi dati direttamente, piuttosto che copiare righe nella chat.
- Connettine pochi e verifica ognuno: ogni server costa contesto ed e codice di terze parti.

## Steps

### 1. Installare l'SDK

In un nuovo progetto Node.js, installa l'SDK TypeScript ufficiale con "npm install @modelcontextprotocol/server" (e zod per gli schemi di input). Un SDK Python, FastMCP, e disponibile se preferisci Python.

### 2. Creare il server e registrare un tool

Crea un McpServer con un nome e una versione, poi chiama server.registerTool con un nome di tool, una descrizione e un inputSchema Zod, e restituisci un array content dal handler async.

### 3. Connettere via un trasporto

Per uso locale, crea un StdioServerTransport e await server.connect(transport). L'host genera il tuo file e dialoga con lui via stdin/stdout, quindi logga su stderr, mai su stdout.

### 4. Registrare il server presso un client

Punta il tuo client MCP sul comando che esegue il server. In Claude Code: "claude mcp add --transport stdio <nome> -- node server.js". Vedi la nostra guida Configurare il MCP in Claude Code per gli scope e la verifica.

### 5. Verificare ed estendere

Conferma che l'agente possa vedere e chiamare il tuo tool, poi aggiungi altri tool, resource e prompt allo stesso modo. Passa a Streamable HTTP quando vuoi ospitare il server da remoto.

## FAQ

### Cos'e un server MCP?

Un server MCP e un programma che espone agli AI agent tool, resource e prompt tramite il Model Context Protocol, uno standard aperto. Lo implementi una volta per una capacita come un database o un browser, e ogni client MCP come Claude Code o Cursor puo scoprirlo e usarlo senza codice di integrazione su misura.

### Come funziona un server MCP?

Il MCP usa un'architettura client-server via JSON-RPC 2.0. Un'app host crea un client per server, e ogni client mantiene una connessione verso un server che espone tool, resource e prompt. I messaggi viaggiano via un trasporto: stdio per i server locali generati come processo figlio, oppure Streamable HTTP per i remoti.

### Come costruisco un server MCP?

Usa l'SDK ufficiale. In TypeScript, installa @modelcontextprotocol/server, crea un McpServer, registra un tool con un nome, una descrizione e uno schema di input Zod, poi connetti un StdioServerTransport. Un SDK Python (FastMCP) offre la stessa forma. Poi, punta il tuo client MCP sul comando che lo esegue.

### Qual e la differenza tra un server MCP e una API?

Una API REST ha bisogno di un umano che legga la sua documentazione e scriva codice di integrazione per ogni client. Un server MCP e auto-descrittivo: annuncia i suoi tool e i loro schemi in uno standard che l'agente legge automaticamente, e lo stesso server funziona su ogni client MCP. Il MCP e uno strato adatto agli agenti davanti alla tua API, non un sostituto.

### Cosa sono tool, resource e prompt nel MCP?

Sono le tre cose che un server MCP puo esporre. I tool sono azioni che l'agente puo chiamare, ognuna con uno schema di input. Le resource sono dati read-only che l'agente puo recuperare per URI, come un contenuto di file. I prompt sono template riutilizzabili che il server offre, spesso mostrati come slash command. La maggior parte dei server guida con i tool.

### Quale trasporto dovrebbe usare un server MCP?

Usa stdio per i server locali, dove l'host genera il server come processo figlio e dialogano via input e output standard, ideale per le integrazioni di editor e CLI. Usa Streamable HTTP per i server remoti ospitati sul cloud. Il vecchio trasporto SSE e deprecato a favore di Streamable HTTP.
