De forma predeterminada, Claude Code ya permite leer archivos locales, ejecutar comandos en la terminal y editar el código de un proyecto. Sin embargo, en flujos de trabajo reales esto rara vez es suficiente: a menudo se necesita consultar una base de datos PostgreSQL, revisar Pull Requests abiertos en GitHub, consultar documentación técnica actualizada en la nube o invocar APIs corporativas internas.
Para solucionar este problema se diseñó el Model Context Protocol (MCP): un estándar abierto creado por Anthropic que transforma Claude Code de un asistente local a un potente centro de orquestación de sistemas y servicios externos.
En esta guía práctica analizaremos la arquitectura de MCP, conectaremos servidores oficiales listos para producción, crearemos un servidor personalizado en TypeScript y consolidaremos los conocimientos con ejercicios guiados.
1. Qué es un Servidor MCP
Model Context Protocol (MCP) es un protocolo abierto de comunicación que estandariza la interacción entre modelos de lenguaje (LLM) y herramientas o fuentes de datos externas.
En lugar de programar integraciones aisladas para cada servicio, MCP introduce una arquitectura cliente-servidor unificada:
Todo servidor MCP proporciona al modelo tres primitivas fundamentales:
- Tools (Herramientas) — Funciones ejecutables con esquemas JSON tipados que Claude Code puede invocar de forma autónoma (por ejemplo,
create_issue,execute_query). - Resources (Recursos) — Datos o esquemas pasivos que el asistente lee como contexto de entrada (archivos, esquemas de BD, registros).
- Prompts (Plantillas de prompts) — Flujos contextuales preconfigurados que agilizan tareas operativas frecuentes.
Comparativa de capacidades
| Escenario | Sin MCP (Claude Code estándar) | Con Servidores MCP conectados |
|---|---|---|
| Acceso a archivos | Restringido exclusivamente al directorio del proyecto | Acceso a cualquier carpeta externa autorizada |
| Datos de repositorios | Archivos locales mediante git diff / git log | Lectura de issues, PRs, revisiones y APIs de GitHub |
| Bases de datos | Solo si se ejecuta manualmente un cliente CLI local | Inspección directa de esquemas, tablas y consultas SQL |
| Búsqueda de información | Búsqueda local con grep / ripgrep | Búsqueda web en tiempo real mediante Brave Search |
| Servicios internos | No disponible sin complejos scripts bash | Llamadas directas a microservicios mediante SDK tipado |
2. Arquitectura y ciclo de vida de una petición
La comunicación se basa en el estándar JSON-RPC 2.0. En entornos locales, el intercambio de datos se realiza a través de flujos estándar de entrada/salida (stdio), mientras que los servidores remotos emplean Server-Sent Events (SSE) o HTTP.
Ciclo de vida paso a paso
- Inicialización y Handshake: Al iniciar Claude Code, lee la configuración, arranca los procesos de los servidores y solicita la lista de herramientas disponibles (
tools/list). - Publicación de capacidades: Cada servidor MCP devuelve sus métodos con esquemas JSON de parámetros y descripciones detalladas.
- Detección de intención: Cuando describes una tarea en lenguaje natural, Claude compara la petición con las herramientas registradas.
- Invocación de herramienta: Si la tarea requiere datos externos, el modelo envía una petición estructurada
tools/callal servidor con argumentos válidos. - Ejecución en el servidor: El servidor interactúa con la API, base de datos o disco y devuelve los datos al cliente.
- Síntesis de respuesta: Claude interpreta los resultados sin procesar y elabora una respuesta clara y estructurada.
La interacción es transparente para el desarrollador: no necesitas memorizar firmas de métodos ni sintaxis de APIs. Claude selecciona automáticamente la herramienta adecuada según el contexto.
3. Cómo conectar un Servidor MCP a Claude Code
Los servidores se configuran en formato JSON bajo la clave mcpServers. Claude Code admite dos niveles de configuración:
- Configuración de proyecto (
.claude/settings.json) — Aplicable únicamente a la carpeta actual y lista para compartirse en el repositorio con el equipo. - Configuración global (
~/.claude/settings.json) — Disponible en todos los proyectos del usuario en el sistema operativo.
json{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@anthropic-ai/mcp-filesystem", "./docs" ] } } }
Parámetros de configuración
Cada entrada en mcpServers consta de tres campos clave:
| Parámetro | Tipo | Obligatorio | Descripción y función | Ejemplos |
|---|---|---|---|---|
command | string | Sí | Comando ejecutable para iniciar el proceso del servidor | "npx", "node", "uvx", "docker" |
args | string[] | Sí | Argumentos de inicio (nombre del paquete, rutas, flags) | ["-y", "@anthropic-ai/mcp-filesystem", "/ruta"] |
env | object | No | Variables de entorno para tokens y claves de API | {"GITHUB_TOKEN": "ghp_...", "DEBUG": "1"} |
Si utilizas herramientas MCP basadas en Python, puedes usar uvx en lugar de npx: "command": "uvx", "args": ["mcp-server-git"].
4. Catálogo de Servidores MCP listos para usar
Existen paquetes oficiales y comunitarios listos para producción para las herramientas más habituales:
| Servidor | Paquete oficial | Acceso / Autenticación | Capacidades principales |
|---|---|---|---|
| Filesystem | @anthropic-ai/mcp-filesystem | Rutas de directorios locales permitidos | Lectura, escritura y búsqueda fuera de la raíz del proyecto |
| GitHub | @anthropic-ai/mcp-github | Personal Access Token (GITHUB_TOKEN) | Búsqueda en repositorios, gestión de issues y PRs |
| PostgreSQL | @anthropic-ai/mcp-postgres | Cadena de conexión URI | Inspección de esquemas, lectura de tablas y SQL |
| Brave Search | @anthropic-ai/mcp-brave-search | Clave de API de búsqueda (BRAVE_API_KEY) | Acceso a información web reciente sin alucinaciones |
1. Filesystem Server
Permite a Claude Code acceder a directorios fuera del repositorio actual (por ejemplo, a una bóveda de notas Obsidian):
2. GitHub Server
Permite interactuar directamente con repositorios de la organización: consultar issues, comentar en PRs y revisar commits:
3. PostgreSQL Server
Permite ejecutar consultas de análisis o diagnóstico directamente contra la base de datos:
4. Brave Search Server
Integra un motor de búsqueda web para verificar documentación reciente y cambios en librerías:
5. Cómo utiliza Claude Code las herramientas en conversación
Una vez configurado el servidor, no necesitas introducir comandos especiales. Claude Code analiza tu petición y decide cuándo invocar cada herramienta.
Ejemplo práctico: interacción con GitHub
Petición del usuario:
"¿Cuáles son los issues abiertos asignados a mí en el repositorio acme/platform? Muestra un resumen de los más prioritarios."
Flujo interno en Claude Code:
- El modelo identifica que los archivos locales no contienen estos datos remotos.
- Genera una llamada
mcp__github__search_issuescon filtrosrepo:acme/platform state:open assignee:@me. - Recibe la respuesta JSON del servidor de GitHub.
- Sintetiza la información en un formato ordenado:
6. Creación de un Servidor MCP propio en TypeScript
Si necesitas conectar servicios internos o lógica de negocio específica, puedes crear un servidor MCP en pocos minutos con @modelcontextprotocol/sdk.
Paso 1. Inicialización y dependencias
Crea una carpeta de trabajo e instala los paquetes necesarios:
Paso 2. Implementación del servidor (server.ts)
Crea el archivo server.ts con la definición del servidor y una herramienta personalizada:
Paso 3. Conexión a la configuración de Claude Code
Añade el servidor a .claude/settings.json:
Usar tsx permite ejecutar archivos TypeScript directamente sin necesidad de compilación previa con tsc.
7. Seguridad y aislamiento del entorno
MCP amplía la autonomía de Claude Code, pero los servidores se ejecutan con tus privilegios en tu máquina local. Aplica siempre estas medidas:
1. El servidor hereda tus permisos de usuario
Un servidor MCP se ejecuta bajo tu cuenta de sistema operativo. Un servidor vulnerable o malicioso tiene acceso a los mismos archivos y recursos que tu terminal.
2. Aislamiento de claves y credenciales
Nunca subas claves de API al repositorio. Almacena las credenciales en ~/.claude/settings.json o pásalas a través de variables de entorno protegidas en .gitignore.
3. Auditoría de paquetes de terceros
Antes de conectar servidores comunitarios:
- Comprueba que el código fuente sea abierto y activo.
- Revisa las peticiones de red que realiza al iniciar.
- Inspecciona a qué rutas del disco solicita acceso.
4. Separación de niveles de configuración
No conectes servidores con permisos de escritura a bases de datos de producción en sesiones interactivas. Utiliza réplicas de solo lectura o contenedores Docker locales.
8. Taller práctico: configuración guiada
Realiza estos dos ejercicios prácticos para verificar la correcta integración de los servidores.
Tarea 1. Conexión del Servidor MCP de GitHub
- Genera un Personal Access Token en GitHub con permisos
repoyread:org. - Añade el servidor a
~/.claude/settings.json:
- Inicia una sesión de Claude Code y prueba el siguiente prompt:
Prompt de prueba:
"Muestra mis 5 repositorios actualizados más recientemente en GitHub y su estado actual."
- Claude Code invoca la herramienta de GitHub sin errores de autenticación.
- Devuelve la lista correcta de repositorios.
Tarea 2. Conexión de Filesystem Server para documentación externa
- Configura el servidor en
.claude/settings.json:
- Ejecuta una consulta de prueba:
Prompt de prueba:
"Busca en la carpeta external-docs los archivos markdown sobre la arquitectura de la API y genera un resumen."
- Claude lee archivos fuera de la raíz del proyecto.
- Resume la información sin perder contexto.
9. Autoevaluación rápida
Comprueba tu comprensión sobre la arquitectura de Model Context Protocol.
Pregunta 1. ¿Cuál es la función principal de un Servidor MCP?
- A. Una máquina virtual en la nube para alojar modelos de Claude
- B. Un proceso adaptador que ofrece a los LLM acceso estandarizado a herramientas y datos
- C. Una librería para comprimir embeddings vectoriales
- D. Un servidor web para alojar el frontend compilado
Respuesta correcta: B.
Un Servidor MCP actúa como un puente entre el modelo y servicios externos mediante Tools, Resources y Prompts estandarizados.
Pregunta 2. ¿Dónde se guarda la configuración exclusiva de un proyecto específico?
- A.
~/.claude/settings.json - B.
package.json - C.
.claude/settings.jsonen la raíz del proyecto - D.
CLAUDE.md
Respuesta correcta: C.
La configuración de proyecto reside en .claude/settings.json, mientras que ~/.claude/settings.json gestiona herramientas globales.
Pregunta 3. ¿Cómo determina Claude Code qué herramienta debe utilizar?
- A. El usuario debe indicar obligatoriamente el flag
--tool=nameen cada consulta - B. Se debe ejecutar previamente el comando
/mcp select - C. El modelo evalúa la semántica de la consulta frente a los esquemas de herramientas y decide de forma autónoma
- D. Se ejecutan todas las herramientas a la vez y se descartan las respuestas sobrantes
Respuesta correcta: C.
Gracias a las descripciones y esquemas de parámetros, Claude detecta la intención del usuario y envía peticiones válidas cuando es necesario.
10. Conclusiones y lista de comprobación
Model Context Protocol convierte a Claude Code en un entorno de desarrollo ampliable. En lugar de copiar y pegar esquemas o volcados de datos manualmente, defines canales de comunicación seguros y reutilizables.
Lista de comprobación para tu entorno
- Niveles de configuración: Servidores globales en
~/.claude/settings.json; herramientas de proyecto en.claude/settings.json. - Seguridad: Tokens excluidos de git; bases de datos conectadas con privilegios mínimos (solo lectura).
- Verificación: Herramientas comprobadas con prompts de prueba al iniciar la sesión.
- Extensibilidad: Servidor TypeScript personalizado disponible como plantilla mediante
@modelcontextprotocol/sdk.