Sur macOS, Calíope peut faire office de serveur Model Context Protocol (MCP) : un client IA qui tourne sur le même Mac — Cursor, Claude Desktop, tout ce qui parle MCP — demande à Calíope de lister des bases de données, de décrire des tables et d’exécuter des requêtes en lecture seule sur les connexions que vous choisissez d’exposer. Cette page dit ce qu’est ce serveur, ce qu’un client peut faire à travers lui, ce qui doit être vrai avant qu’il ne réponde, et comment brancher un client. Le tableau des outils est généré depuis le code qui les sert.
Ce que c’est
Un serveur HTTP à l’intérieur de Calíope qui parle JSON-RPC 2.0, version de protocole 2025-06-18, annoncée dans l’en-tête MCP-Protocol-Version. Il n’écoute que sur 127.0.0.1 — sur ce Mac et nulle part ailleurs — sur le port 41500 sauf si vous le changez. Le port, c’est vous qui le choisissez ; l’adresse n’est pas configurable. Une seule route, POST /mcp, répond à initialize, ping, tools/list et tools/call ; un DELETE sur la même route met fin à la session.
Il n’existe que sur macOS, il est désactivé par défaut, et il ne répond que tant que Calíope est ouverte : fermez l’app et les outils cessent de répondre jusqu’à ce que vous la rouvriez. Si le port choisi est déjà pris par un autre programme, Calíope vous le dit et ne le démarre pas.
Ce que le client peut faire
Cinq outils, et rien d’autre. Le tableau ci-dessous est écrit par un script à partir du tableau que le serveur sert dans tools/list, et les descriptions sont celles que le client reçoit, mot pour mot — en anglais, quelle que soit la langue de cette page —, parce que ce texte est ce que le modèle en face lit pour décider quel outil appeler. Tous les paramètres sont des chaînes.
| Outil | Paramètres | Description |
|---|---|---|
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. |
Derrière l’outil qui exécute le SQL, il y a une porte en lecture seule, qui contrôle l’instruction avant qu’elle n’atteigne le serveur de base de données :
- Une instruction par appel. Deux instructions, ou aucune, sont refusées.
- Seulement des lectures :
SELECT,SHOW,EXPLAINouDESCRIBE. UnINSERT, unUPDATE, unDROP, unWITHqui se termine par une écriture, ou une lecture qui écrit un fichier sur le serveur sont refusés. - Rien qui prenne des verrous.
SELECT … FOR UPDATEetLOCK IN SHARE MODElisent, certes, mais ils gardent des verrous jusqu’à la fin de la transaction, alors ils sont refusés aussi. - 200 lignes au plus. La réponse porte les colonnes, les lignes, le
rowCountréel, ettruncated: truequand le plafond a coupé quelque chose. Le plafond n’est pas configurable. - Les connexions MongoDB ne sont pas exposées. Elles ne sont pas proposées parmi les connexions que vous pouvez cocher, et les outils répondent qu’elles ne sont pas disponibles via MCP.
Tout ce qui s’exécute via MCP atterrit dans le journal des requêtes de Calíope, avec la connexion et le résultat, comme ce que vous tapez vous-même. Ce que la porte refuse n’atteint jamais le serveur et ne laisse aucune ligne.
Le consentement, connexion par connexion
Trois choses doivent être vraies avant qu’un client ne voie quoi que ce soit, et chacune est une décision à part.
- L’interrupteur principal. Dans Préférences › Assistant IA › Serveur MCP, « Autoriser un client IA de ce Mac à interroger Calíope » est désactivé jusqu’à ce que vous l’activiez.
- La liste des connexions exposées. Elle naît vide. Seules les connexions cochées existent pour le client ; ce qui n’est pas coché n’apparaît même pas dans
list_connections. - La clé d’accès. Chaque requête porte un jeton Bearer que Calíope génère (32 octets aléatoires) et garde dans le Trousseau de ce Mac. Sans lui, le serveur répond
401et rien d’autre — pas même la liste des méthodes. « Générer une nouvelle clé » invalide l’ancienne sur-le-champ, et vous recollez la configuration dans le client.
Ni l’interrupteur ni la liste exposée ne voyagent : ils ne se synchronisent pas par iCloud vers un autre Mac et ne font pas partie de la sauvegarde des réglages, si bien que restaurer vos réglages ailleurs n’allume jamais le serveur. La clé ne voyage pas non plus. Le port est une préférence ordinaire.
Une chose à savoir avant de cocher une connexion : les lignes, elles, voyagent bel et bien via MCP, parce que la réponse à une requête, c’est la donnée. Elles vont au client que vous avez configuré, sur cette même machine ; Calíope n’envoie rien sur internet. Ce que ce client en fait ensuite — les envoyer à son modèle dans le cloud, par exemple — est décidé par ce client et sa politique de confidentialité, pas par Calíope.
Brancher un client
Activez l’interrupteur, cochez les connexions, appuyez sur Copier la configuration, collez dans son fichier le bloc dont votre client a besoin, et redémarrez le client. Le presse-papiers reçoit deux blocs avec votre port et votre clé réels déjà dedans — les deux mêmes que voici, avec <port> et <token> comme marqueurs.
Cursor lit un serveur HTTP directement. Son bloc va dans ~/.cursor/mcp.json :
// Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"caliope": {
"url": "http://127.0.0.1:<port>/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Claude Desktop ne parle que par entrée et sortie standard, pas HTTP, alors son bloc utilise mcp-remote comme pont — c’est ce que fait npx là. Il va dans ~/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>" }
}
}
}
Les clients lisent leur configuration au démarrage : une nouvelle clé ou un nouveau port, c’est recoller et redémarrer.
Pour aller plus loin
L’aide a trois rubriques là-dessus, et c’est le même texte que celui de l’app :
- Serveur MCP : laisser votre client IA interroger Calíope
- Configurer votre client IA pour parler à Calíope
- Ce que voit votre client IA, et ce qu’il en fait ensuite
Et Comment Calíope est faite situe le serveur à côté du reste de l’architecture.