Dale superpoderes a Claude con MCP: conecta APIs y bases de datos
El Model Context Protocol (MCP) es el nuevo estándar abierto para que los LLMs usen herramientas externas. Te enseño cómo montar un servidor MCP para que Claude pueda leer tu base de datos PostgreSQL.
01 ¿Qué es MCP y por qué debería importarte?
Anthropic acaba de liberar MCP (Model Context Protocol), un protocolo abierto que permite a los asistentes de IA, como Claude, conectarse con herramientas, APIs, bases de datos y más. Hasta ahora cada integración era un caso a medida; MCP unifica todo en un estándar similar a cómo USB simplificó los periféricos.
Imagina que Claude pueda consultar tu base de datos de clientes, ejecutar consultas SQL, leer archivos de tu sistema o llamar a APIs internas sin que tú tengas que copiar y pegar datos. Eso es MCP: el asistente decide cuándo usar una herramienta y tú defines el contrato (el servidor MCP).
02 La arquitectura: cliente, servidor y herramientas
MCP tiene tres actores: el cliente (Claude Desktop o un agente personalizado), el servidor MCP (un proceso que expone herramientas) y las herramientas (funciones concretas). El servidor se conecta al cliente mediante stdio o TCP. Cada herramienta se describe con un nombre, parámetros y un schema JSON.
Practicamente cualquier lenguaje sirve para escribir un servidor MCP. El SDK oficial está en Python y TypeScript. Aquí te muestro un servidor simple en Python que ofrece una herramienta para ejecutar consultas SELECT en PostgreSQL.
03 Montando tu primer servidor MCP en Python
Primero instala el SDK: `pip install mcp`. Luego crea un archivo `server.py`. El servidor debe exponer herramientas decoradas con `@mcp.tool()`. Cada herramienta recibe argumentos tipados y devuelve un string (que Claude usará). A continuación un ejemplo básico con SQL.
from mcp import Server, ToolDef
import psycopg2
server = Server(name="postgres-query")
@server.tool(
name="query_database",
description="Ejecuta una consulta SQL de solo lectura en la BD de producción",
parameters=[
ToolDef.Parameter(name="sql", type="string", description="Consulta SELECT", required=True)
]
)
async def query_database(sql: str) -> str:
conn = psycopg2.connect("dbname=prod user=admin host=localhost")
cur = conn.cursor()
try:
cur.execute(sql)
rows = cur.fetchall()
return "\n".join(str(row) for row in rows[:10])
except Exception as e:
return f"Error: {e}"
finally:
cur.close()
conn.close()
if __name__ == "__main__":
server.run()04 Conectando el servidor con Claude Desktop
Para que Claude Desktop use tu servidor MCP, edita el archivo de configuración `~/.claude/claude_desktop_config.json` y añade la ruta al script. Así, cuando Claude necesite datos, te preguntará si puede ejecutar la herramienta.
{
"mcpServers": {
"postgres-query": {
"command": "python",
"args": ["/ruta/a/server.py"],
"env": {}
}
}
}05 Ejemplo en acción: pregúntale a Claude sobre tus clientes
Una vez configurado, puedes pedirle a Claude: «¿Cuántos clientes tenemos activos este mes?» Claude responderá «Puedo consultar la base de datos, ¿lo hago?» y al confirmar ejecutará el SELECT. Devuelve el resultado convertido a lenguaje natural. Sin copiar/pegar, sin errores de escritura, sin acceso directo a la BD.
MCP también permite herramientas que escriban archivos, envíen correos o lancen deploys. Eso sí, ten cuidado con dar permisos elevados: pon controles de seguridad como validación de sentencias (solo SELECT) o listas blancas.
Y tú, ¿qué herramienta MCP te gustaría crear? Una API de clima, tu gestor de tareas, o una interfaz para tu NAS. Cuéntamelo en los comentarios y lo construimos juntos.