Ícono de la app Calíope

Calíope como servidor MCP

Deja que un cliente de IA de tu Mac consulte tus bases de datos. Sólo lectura, en loopback, apagado de fábrica.

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.

HerramientaParámetrosDescripción
list_connectionsConnections the user exposed to MCP. Returns id, name, engine, host.
list_databasesconnectionDatabases visible on a connection.
list_tablesconnection, databaseTables and views in a database.
describe_tableconnection, database, tableColumns, primary key, foreign keys and indexes of a table.
run_queryconnection, sqlRun 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, EXPLAIN o DESCRIBE. Un INSERT, un UPDATE, un DROP, un WITH que termina en una escritura o una lectura que escribe un archivo en el servidor se rechazan.
  • Nada que tome bloqueos. SELECT … FOR UPDATE y LOCK IN SHARE MODE leen, 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 rowCount real y truncated: true cuando 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.

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:

Y Cómo está hecha Calíope sitúa el servidor junto al resto de la arquitectura.