🔌 Servidores MCP
El Model Context Protocol (MCP) permite conectar Claude Code con herramientas externas: bases de datos, APIs, navegadores, servicios en la nube y mucho más.
¿Qué es MCP?
MCP (Model Context Protocol) es un estándar abierto creado por Anthropic que define cómo los modelos de IA se comunican con herramientas externas. Es como un "USB para IA": un conector universal que cualquier herramienta puede implementar.
Con MCP, Claude Code puede acceder a recursos que van más allá de tu sistema de archivos local: bases de datos PostgreSQL, APIs REST, el navegador web, Slack, GitHub, Jira, y cualquier servicio que tenga un servidor MCP.
Cómo funciona
Un servidor MCP es un proceso (local o remoto) que expone:
- Herramientas (tools): funciones que Claude puede llamar (ej: ejecutar SQL, buscar en Slack).
- Recursos (resources): datos que Claude puede leer (ej: esquema de la DB, documentación).
- Prompts: instrucciones especializadas para tareas concretas.
Añadir un servidor MCP
Los servidores MCP se configuran en .claude/settings.json:
{
"mcpServers": {
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres",
"postgresql://localhost/midb"],
"env": {}
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxxxxxxx"
}
}
}
}O añade servidores directamente desde la CLI:
claude mcp add <nombre> -- <comando> [args...]
# Ejemplo: servidor de PostgreSQL
claude mcp add postgres -- npx -y @modelcontextprotocol/server-postgres \
"postgresql://localhost/midb"
# Ejemplo: servidor de filesystem (solo lectura)
claude mcp add files -- npx -y @modelcontextprotocol/server-filesystem \
/ruta/al/directorioServidores MCP populares
| Servidor | Paquete npm | Para qué sirve |
|---|---|---|
| PostgreSQL | @modelcontextprotocol/server-postgres | Consultas SQL directas a tu base de datos |
| SQLite | @modelcontextprotocol/server-sqlite | Base de datos SQLite local |
| GitHub | @modelcontextprotocol/server-github | Issues, PRs, repos de GitHub |
| Brave Search | @modelcontextprotocol/server-brave-search | Búsquedas web en tiempo real |
| Puppeteer | @modelcontextprotocol/server-puppeteer | Control de navegador web |
| Slack | @modelcontextprotocol/server-slack | Leer/enviar mensajes de Slack |
| Google Drive | @modelcontextprotocol/server-gdrive | Acceso a archivos de Google Drive |
| Filesystem | @modelcontextprotocol/server-filesystem | Acceso controlado al sistema de archivos |
| Memory | @modelcontextprotocol/server-memory | Memoria persistente entre sesiones |
| Sentry | @modelcontextprotocol/server-sentry | Errores y performance de Sentry |
Gestionar servidores MCP
# Listar servidores configurados
claude mcp list
# Ver detalles de un servidor
claude mcp get postgres
# Eliminar un servidor
claude mcp remove postgres
# Dentro de Claude Code, ver servidores activos:
/mcpÁmbito de los servidores MCP
Los servidores MCP tienen tres ámbitos posibles:
- Local (por defecto): disponible solo en el proyecto actual. Se guarda en
.claude/settings.json. - Usuario: disponible en todos tus proyectos. Se guarda en
~/.claude/settings.json. Añade--scope useral comando. - Proyecto: compartido con el equipo via control de versiones.
# Añadir servidor a nivel de usuario (global)
claude mcp add --scope user github -- npx -y @modelcontextprotocol/server-githubCrear tu propio servidor MCP
Cualquier script que implemente el protocolo MCP puede ser un servidor. Anthropic proporciona SDKs para Python y TypeScript:
# TypeScript
npm install @modelcontextprotocol/sdk
# Python
pip install mcpEjemplo mínimo en TypeScript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({ name: "mi-servidor", version: "1.0.0" }, {
capabilities: { tools: {} }
});
server.setRequestHandler("tools/list", async () => ({
tools: [{
name: "saludar",
description: "Saluda al usuario",
inputSchema: {
type: "object",
properties: { nombre: { type: "string" } },
required: ["nombre"]
}
}]
}));
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "saludar") {
return { content: [{ type: "text", text: `Hola, ${request.params.arguments.nombre}!` }] };
}
});
const transport = new StdioServerTransport();
await server.connect(transport);MCP en la nube vs local
Los servidores MCP pueden ejecutarse localmente (como proceso en tu máquina) o en la nube (conectados via HTTP/SSE). Claude Code soporta ambos:
# Servidor local (stdio)
{
"command": "node",
"args": ["./mi-servidor-mcp.js"]
}
# Servidor remoto (HTTP/SSE)
{
"url": "https://mi-servidor.com/mcp",
"headers": { "Authorization": "Bearer TOKEN" }
}