En macOS, Calíope puede actuar como servidor Model Context Protocol (MCP): un cliente de IA que corre en el mismo Mac — Cursor, Claude Desktop, cualquiera que hable MCP — le pide a Calíope que liste bases de datos, describa tablas y ejecute consultas de sólo lectura sobre las conexiones que decidas exponer. Esta página dice qué es ese servidor, qué puede hacer un cliente a través de él, qué tiene que cumplirse antes de que responda y cómo conectar un cliente. La tabla de herramientas se genera del código que las sirve.
Qué es
Un servidor HTTP dentro de Calíope que habla JSON-RPC 2.0, versión de protocolo 2025-06-18, anunciada en la cabecera MCP-Protocol-Version. Escucha sólo en 127.0.0.1 — en este Mac y en ningún otro sitio — en el puerto 41500 salvo que lo cambies. El puerto lo eliges tú; la dirección no se puede configurar. Una sola ruta, POST /mcp, atiende initialize, ping, tools/list y tools/call; un DELETE en la misma ruta termina la sesión.
Existe sólo en macOS, viene apagado de fábrica y responde sólo mientras Calíope está abierta: cierra la app y las herramientas dejan de responder hasta que la vuelvas a abrir. Si el puerto que elegiste ya lo usa otro programa, Calíope te lo dice y no lo arranca.
Qué puede hacer el cliente
Cinco herramientas, y nada más. La tabla de abajo la escribe un script a partir del array que el servidor sirve en tools/list, y las descripciones son las que recibe el cliente, tal cual — en inglés, sea cual sea el idioma de esta página —, porque ese texto es lo que el modelo del otro lado lee para decidir qué herramienta llamar. Todos los parámetros son cadenas.
| Herramienta | Parámetros | Descripción |
|---|---|---|
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. |
Detrás de la herramienta que ejecuta SQL hay una puerta de sólo lectura, que revisa la sentencia antes de que llegue al servidor de base de datos:
- Una sentencia por llamada. Dos sentencias, o ninguna, se rechazan.
- Sólo lecturas:
SELECT,SHOW,EXPLAINoDESCRIBE. UnINSERT, unUPDATE, unDROP, unWITHque termina en una escritura o una lectura que escribe un archivo en el servidor se rechazan. - Nada que tome bloqueos.
SELECT … FOR UPDATEyLOCK IN SHARE MODEleen, sí, pero retienen bloqueos hasta que termina la transacción, así que también se rechazan. - 200 filas como máximo. La respuesta lleva las columnas, las filas, el
rowCountreal ytruncated: truecuando el tope cortó algo. El tope no se puede configurar. - Las conexiones MongoDB no se exponen. No se ofrecen entre las conexiones que puedes marcar, y las herramientas responden que no están disponibles por MCP.
Todo lo que se ejecuta por MCP queda en el registro de consultas de Calíope, con la conexión y el resultado, igual que lo que escribes tú. Lo que la puerta rechaza nunca llega al servidor y no deja fila.
Consentimiento, conexión por conexión
Tienen que cumplirse tres cosas antes de que un cliente vea algo, y cada una es una decisión aparte.
- El interruptor maestro. En Preferencias › Asistente AI › Servidor MCP, «Permitir que un cliente de IA de este Mac consulte Calíope» está apagado hasta que lo enciendas.
- La lista de conexiones expuestas. Nace vacía. Sólo las conexiones que marques existen para el cliente; lo que no marques ni siquiera aparece en
list_connections. - La clave de acceso. Cada petición lleva un token Bearer que Calíope genera (32 bytes aleatorios) y guarda en el Llavero de este Mac. Sin él, el servidor responde
401y nada más — ni siquiera la lista de métodos. «Generar clave nueva» invalida la anterior al instante, y vuelves a pegar la configuración en el cliente.
Ni el interruptor ni la lista expuesta viajan: no se sincronizan por iCloud a otro Mac ni entran en el respaldo de ajustes, así que restaurar tus ajustes en otra máquina nunca enciende el servidor. La clave tampoco viaja. El puerto es una preferencia normal.
Algo que conviene saber antes de marcar una conexión: las filas sí viajan por MCP, porque la respuesta a una consulta es el dato. Van al cliente que configuraste, en esta misma máquina; Calíope no envía nada a internet. Lo que ese cliente haga después — mandarlas a su modelo en la nube, por ejemplo — lo deciden ese cliente y su política de privacidad, no Calíope.
Conectar un cliente
Enciende el interruptor, marca las conexiones, pulsa Copiar configuración, pega en su archivo el bloque que necesite tu cliente y reinicia el cliente. Al portapapeles van dos bloques con tu puerto y tu clave reales ya dentro — los mismos dos que ves aquí con <port> y <token> como marcadores.
Cursor lee un servidor HTTP directamente. Su bloque va en ~/.cursor/mcp.json:
// Cursor — ~/.cursor/mcp.json
{
"mcpServers": {
"caliope": {
"url": "http://127.0.0.1:<port>/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Claude Desktop sólo habla por entrada y salida estándar, no HTTP, así que su bloque usa mcp-remote como puente — eso es lo que hace npx ahí. Va en ~/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>" }
}
}
}
Los clientes leen su configuración al arrancar, así que una clave nueva o un puerto nuevo significan pegar otra vez y reiniciar.
Dónde leer más
La Ayuda tiene tres temas sobre esto, y son el mismo texto que enseña la app:
- Servidor MCP: que tu cliente de IA consulte Calíope
- Configurar tu cliente de IA para hablar con Calíope
- Qué ve tu cliente de IA, y qué hace después con ello
Y Cómo está hecha Calíope sitúa el servidor junto al resto de la arquitectura.