MCP Server en TypeScript: conecta Claude Code con cualquier API
claude mcp add –transport stdio github-issues — node /ruta/absoluta/build/index.js
Para todos los proyectos (ámbito global del usuario)
claude mcp add –scope user –transport stdio github-issues — node /ruta/absoluta/build/index.js
Verifica que Claude Code lo reconoce:
```bash
claude mcp list
Deberías ver github-issues en el listado con estado Pending approval. Una vez que lo apruebes desde Claude Code, pasará a connected.
Cómo probarlo desde una sesión de Claude Code
Abre Claude Code en cualquier directorio y escribe:
Lista los issues abiertos del repo microsoft/vscode
Claude detecta que tiene acceso al tool list_issues, lo llama con { owner: "microsoft", repo: "vscode", state: "open" }, y devuelve la lista formateada directamente en el chat.
Sin salir. Sin copiar y pegar. Sin fricción.
Para repos privados, añade tu token de GitHub como variable de entorno antes de registrar el server:
# En el comando de registro pasa el env directamente
claude mcp add --transport stdio github-issues --env GITHUB_TOKEN=ghp_xxx -- node /ruta/absoluta/build/index.js
Y en el código, descomenta la línea Authorization: Bearer ${process.env.GITHUB_TOKEN}.
Ir más allá: cuándo crear tu propio MCP server
Esta es la pregunta real. El ecosistema de MCP servers públicos ya tiene integraciones para GitHub, Slack, Notion, bases de datos, filesystems, y decenas más. No construyas lo que ya existe.
Crea tu propio server cuando:
- Tienes una API interna que nadie más va a integrar
- Necesitas transformar o filtrar datos antes de que lleguen al modelo — la lógica de negocio importa
- Quieres controlar exactamente qué puede hacer Claude y qué no en tu entorno
- Estás construyendo un producto y necesitas que Claude interactúe con él de forma programática
El patrón que acabas de aprender escala sin cambios. Añadir un tool nuevo es copiar el bloque del handler y registrarlo en ListToolsRequestSchema. Añadir autenticación es una cabecera. Añadir caché es un Map en memoria.
El scaffold es siempre el mismo. Lo que cambia es la lógica de negocio de cada tool.
Si quieres profundizar en este modelo de trabajo — construir con IA de forma estructurada, con specs, con MCP servers propios, con agentes que hacen trabajo real — en el curso Construye con IA: De la Idea al Producto con Claude Code trabajamos exactamente este flujo. Desde la idea hasta tener algo en producción.
FAQ
¿Necesito compilar TypeScript para usar el server? ¿No puedo usar tsx directamente?
Puedes. Para desarrollo local, tsx src/index.ts funciona. Para registrar en Claude Code de forma estable, compilar a JS es más fiable porque no dependes de que tsx esté instalado globalmente. En el comando claude mcp add puedes usar npx tsx si prefieres:
claude mcp add --transport stdio github-issues -- npx tsx /ruta/src/index.ts
¿Cuál es la diferencia entre stdio y HTTP como transporte?
StdioServerTransport es el modo local: Claude Code lanza tu server como proceso hijo y se comunica por stdin/stdout. Es el modo más simple y suficiente para tools personales o de equipo. El transporte HTTP (Streamable HTTP) es para servers remotos que quieres exponer como servicio — por ejemplo, si construyes un MCP server para tu empresa y lo despliegas en un servidor.
¿Mis tools pueden leer archivos del sistema o ejecutar comandos?
Sí, un MCP server tiene acceso completo al sistema donde se ejecuta. Puede leer archivos con fs, ejecutar procesos con child_process, hacer peticiones de red. Eso también es la responsabilidad: el server corre con los permisos del usuario que lo lanza, así que diseña los tools con cuidado y no expongas capacidades destructivas sin confirmación.
¿Funciona con Claude Desktop o solo con Claude Code?
Funciona con cualquier cliente MCP compatible. Claude Desktop usa claude_desktop_config.json en lugar de claude mcp add, pero el server es exactamente el mismo. También es compatible con Cursor, Continue, y cualquier cliente que implemente el protocolo. Ese es el punto de MCP: escribes el server una vez, lo consumes desde donde quieras.
¿Puedo añadir varios tools al mismo server?
Sí, y es lo recomendable cuando los tools comparten contexto. Un server de GitHub podría tener list_issues, create_issue, list_pull_requests y get_file_content en el mismo proceso. Cada tool se declara en el handler de ListToolsRequestSchema y se implementa en el bloque if correspondiente dentro de CallToolRequestSchema.
Conclusión
Ya sabes cómo funciona MCP, qué son los tres primitivos, y tienes un server real funcionando que conecta Claude Code con la API de GitHub. El siguiente paso es obvio: sustituye la llamada a GitHub por la API que necesites tú.
Si estás construyendo flujos de trabajo con agentes IA y quieres ir más allá de los MCP servers públicos, en Dominicode Labs publicamos proyectos completos, code reviews y recursos exclusivos para developers que construyen con IA en serio.
Para entender cómo Claude Code orquesta tools, sub-agentes y contexto dentro de una sesión, lee primero la introducción a Claude Code que publiqué aquí — es el punto de entrada que te va a dar el marco conceptual completo.
Bezael Pérez — Developer senior, fundador de Dominicode. 15+ años construyendo software. Ahora construyendo con IA.
