Su macOS, Calíope può fare da server Model Context Protocol (MCP): un client IA che gira sullo stesso Mac — Cursor, Claude Desktop, qualunque cosa parli MCP — chiede a Calíope di elencare database, descrivere tabelle ed eseguire query in sola lettura sulle connessioni che scegli di esporre. Questa pagina dice che cos’è quel server, cosa può fare un client attraverso di esso, cosa deve valere prima che risponda e come collegare un client. La tabella degli strumenti è generata dal codice che li serve.
Che cos’è
Un server HTTP dentro Calíope che parla JSON-RPC 2.0, versione di protocollo 2025-06-18, annunciata nell’header MCP-Protocol-Version. Ascolta solo su 127.0.0.1 — su questo Mac e da nessun’altra parte — sulla porta 41500 a meno che tu non la cambi. La porta la scegli tu; l’indirizzo non è configurabile. Una sola rotta, POST /mcp, risponde a initialize, ping, tools/list e tools/call; un DELETE sulla stessa rotta chiude la sessione.
Esiste solo su macOS, è spento di fabbrica e risponde solo mentre Calíope è aperta: chiudi l’app e gli strumenti smettono di rispondere finché non la riapri. Se la porta scelta è già usata da un altro programma, Calíope te lo dice e non lo avvia.
Cosa può fare il client
Cinque strumenti, e nient’altro. La tabella qui sotto la scrive uno script a partire dall’array che il server serve in tools/list, e le descrizioni sono quelle che riceve il client, alla lettera — in inglese, qualunque sia la lingua di questa pagina —, perché quel testo è ciò che il modello dall’altra parte legge per decidere quale strumento chiamare. Tutti i parametri sono stringhe.
| Strumento | Parametri | Descrizione |
|---|---|---|
list_connections | — | Connections the user exposed to MCP. Returns id, name, engine, host. |
list_databases | connection | Databases visible on a connection. |
list_tables | connection, database | Tables and views in a database. |
describe_table | connection, database, table | Columns, primary key, foreign keys and indexes of a table. |
run_query | connection, sql | Run ONE read-only SQL statement (SELECT/SHOW/EXPLAIN/DESCRIBE) on a connection. Rows are capped at 200. |
Dietro lo strumento che esegue SQL c’è una porta di sola lettura, che controlla l’istruzione prima che arrivi al server di database:
- Un’istruzione per chiamata. Due istruzioni, o nessuna, vengono rifiutate.
- Solo letture:
SELECT,SHOW,EXPLAINoDESCRIBE. UnINSERT, unUPDATE, unDROP, unWITHche finisce in una scrittura, o una lettura che scrive un file sul server vengono rifiutati. - Niente che prenda lock.
SELECT … FOR UPDATEeLOCK IN SHARE MODEleggono, sì, ma tengono i lock fino alla fine della transazione, quindi vengono rifiutati anche loro. - Al massimo 200 righe. La risposta porta le colonne, le righe, il
rowCountreale etruncated: truequando il limite ha tagliato qualcosa. Il limite non è configurabile. - Le connessioni MongoDB non vengono esposte. Non compaiono tra le connessioni che puoi spuntare, e gli strumenti rispondono che non sono disponibili via MCP.
Tutto ciò che viene eseguito via MCP finisce nel registro delle query di Calíope, con la connessione e il risultato, proprio come quello che digiti tu. Ciò che la porta rifiuta non arriva mai al server e non lascia alcuna riga.
Consenso, connessione per connessione
Devono valere tre cose prima che un client veda qualcosa, e ognuna è una decisione a sé.
- L’interruttore principale. In Preferenze › Assistente IA › Server MCP, «Permettere a un client IA di questo Mac di interrogare Calíope» è spento finché non lo accendi.
- La lista delle connessioni esposte. Nasce vuota. Solo le connessioni che spunti esistono per il client; ciò che non spunti non compare nemmeno in
list_connections. - La chiave di accesso. Ogni richiesta porta un token Bearer che Calíope genera (32 byte casuali) e conserva nel Portachiavi di questo Mac. Senza di esso il server risponde
401e nient’altro — nemmeno la lista dei metodi. «Genera una nuova chiave» invalida subito la precedente, e incolli di nuovo la configurazione nel client.
Né l’interruttore né la lista esposta viaggiano: non si sincronizzano via iCloud su un altro Mac e non fanno parte del backup delle impostazioni, così ripristinare le tue impostazioni altrove non accende mai il server. Nemmeno la chiave viaggia. La porta è una preferenza normale.
Una cosa da sapere prima di spuntare una connessione: le righe sì che viaggiano via MCP, perché la risposta a una query è il dato. Vanno al client che hai configurato, su questa stessa macchina; Calíope non manda nulla su internet. Cosa quel client ne faccia dopo — mandarle al suo modello nel cloud, per esempio — lo decidono quel client e la sua informativa sulla privacy, non Calíope.
Collegare un client
Accendi l’interruttore, spunta le connessioni, premi Copia configurazione, incolla nel suo file il blocco che serve al tuo client e riavvia il client. Negli appunti finiscono due blocchi con la tua porta e la tua chiave reali già dentro — gli stessi due che vedi qui con <port> e <token> come segnaposto.
Cursor legge un server HTTP direttamente. Il suo blocco va in ~/.cursor/mcp.json:
// Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"caliope": {
"url": "http://127.0.0.1:<port>/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Claude Desktop parla solo per input e output standard, non HTTP, quindi il suo blocco usa mcp-remote come ponte — è quello che fa npx lì. Va in ~/Library/Application Support/Claude/claude_desktop_config.json:
// Claude Desktop — claude_desktop_config.json
{
"mcpServers": {
"caliope": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://127.0.0.1:<port>/mcp",
"--header", "Authorization:${AUTH}"],
"env": { "AUTH": "Bearer <token>" }
}
}
}
I client leggono la loro configurazione all’avvio, quindi una chiave nuova o una porta nuova vogliono dire incollare di nuovo e riavviare.
Dove leggere di più
La guida ha tre argomenti su questo, e sono lo stesso testo che mostra l’app:
- Server MCP: far interrogare Calíope al tuo client IA
- Configurare il tuo client IA per parlare con Calíope
- Cosa vede il tuo client IA, e cosa ne fa dopo
E Com’è fatta Calíope colloca il server accanto al resto dell’architettura.