Servidores MCP
Servidores MCP (Model Context Protocol)
Section titled “Servidores MCP (Model Context Protocol)”Los servidores MCP extienden las capacidades de OpenCode proporcionando herramientas externas y fuentes de datos. Piensa en ellos como “plugins para IA”.
🤖 ¿Qué son los Servidores MCP?
Section titled “🤖 ¿Qué son los Servidores MCP?”MCP (Model Context Protocol) es un protocolo estándar que permite a la IA comunicarse con sistemas externos:
- Servers: Procesos externos que proveen herramientas/recursos
- Tools: Funciones que la IA puede ejecutar (leer archivo, consultar DB…)
- Resources: Fuentes de datos accesibles (archivos, databases, APIs)
- Protocol: Comunicación estandarizada entre IA y servidores
Beneficios
Section titled “Beneficios”- Extensibilidad: Añade capacidades sin modificar OpenCode
- Seguridad: Aísla acceso externo en procesos separados
- Estandarización: Interfaz consistente entre herramientas
- Composabilidad: Combina múltiples servidores
📦 Servidores MCP Incluidos
Section titled “📦 Servidores MCP Incluidos”Servidor de Sistema de Archivos
Section titled “Servidor de Sistema de Archivos”- Propósito: Lectura/escritura de archivos locales
- Herramientas:
read_file,write_file,list_directory - Caso de uso: Operaciones básicas dentro del proyecto
Servidor Git
Section titled “Servidor Git”- Propósito: Operaciones de control de versiones
- Herramientas:
git_status,git_diff,git_commit,git_push - Caso de uso: Workflows automatizados de git
Servidor HTTP
Section titled “Servidor HTTP”- Propósito: Realizar requests HTTP
- Herramientas:
http_get,http_post,http_put,http_delete - Caso de uso: Integración con APIs, web scraping
Servidor SQL
Section titled “Servidor SQL”- Propósito: Operaciones de base de datos
- Herramientas:
sql_query,sql_execute,sql_schema - Caso de uso: Gestión de DB, análisis de datos
🔧 Instalar Servidores MCP
Section titled “🔧 Instalar Servidores MCP”Método 1: Registro de OpenCode
Section titled “Método 1: Registro de OpenCode”# Listar servidores disponibles/mcp list
# Instalar servidor del registro/mcp install github
# Instalar versión específica/mcp install postgres --version 1.2.0Método 2: Desde URL
Section titled “Método 2: Desde URL”# Instalar desde repositorio GitHub/mcp install https://github.com/user/mcp-server-repo
# Instalar desde npm/mcp install npm:package-name
# Instalar desde local/mcp install ./custom-mcp-server/Método 3: Instalación Manual
Section titled “Método 3: Instalación Manual”# Clonar repositoriogit clone https://github.com/modelcontextprotocol/servers.git
# Configurar en OpenCodeecho '{ "mcpServers": { "filesystem": { "command": "node", "args": ["servers/filesystem/dist/index.js"] } }}' > ~/.config/opencode/opencode.json📋 Servidores MCP Populares
Section titled “📋 Servidores MCP Populares”Servidores de Desarrollo
Section titled “Servidores de Desarrollo”| Servidor | Propósito | Herramientas |
|---|---|---|
| GitHub | Acceso a API de GitHub | list_repos, create_pr, read_issue |
| PostgreSQL | Base de datos PostgreSQL | query, execute, schema |
| Redis | Cache Redis | get, set, keys, del |
| Docker | Gestión de contenedores | ps, run, build, logs |
| AWS | Servicios de AWS | s3_list, ec2_describe, lambda_invoke |
Servidores de Productividad
Section titled “Servidores de Productividad”| Servidor | Propósito | Herramientas |
|---|---|---|
| Google Calendar | Gestión de calendario | list_events, create_event |
| Slack | Integración con Slack | send_message, read_channel |
| Gestión de correo | send_email, read_inbox | |
| Jira | Seguimiento de issues | list_issues, create_issue |
🚀 Usar Servidores MCP
Section titled “🚀 Usar Servidores MCP”Uso Básico
Section titled “Uso Básico”# OpenCode usa automáticamente los servidores disponibles# Cuando preguntas sobre archivos, usa el servidor de filesystemList all TypeScript files in the project
# Cuando mencionas git, usa el servidor GitWhat files have been modified recently?
# Cuando preguntas sobre APIs, usa el servidor HTTPFetch data from https://api.example.com/usersInvocación Explícita de Servidor
Section titled “Invocación Explícita de Servidor”# Usar herramientas específicas del servidorUsing the filesystem server, read @src/config.json
# Encadenar operaciones de servidorUsing git server, check status, then read changed files
# Combinar múltiples servidoresUsing github server, list issues, then notify teamConfiguración de Servidor
Section titled “Configuración de Servidor”{ "mcpServers": { "github": { "command": "npx", "args": ["@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "your-token-here" } }, "postgres": { "command": "npx", "args": ["@modelcontextprotocol/server-postgres"], "env": { "PGURI": "postgres://user:pass@localhost/db" } } }}🛠️ Crear Servidores MCP Personalizados
Section titled “🛠️ Crear Servidores MCP Personalizados”Ejemplo Simple (JavaScript)
Section titled “Ejemplo Simple (JavaScript)”import { Server } from '@modelcontextprotocol/sdk/server/index.js';import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server( { name: 'custom-server', version: '1.0.0' }, { capabilities: { tools: {} } });
// Definir una herramientaserver.setRequestHandler('tools/call', async (request) => { if (request.params.name === 'echo') { return { content: [{ type: 'text', text: `Echo: ${request.params.arguments?.message || 'Hello!'}` }] }; } throw new Error(`Unknown tool: ${request.params.name}`);});
// Iniciar servidorconst transport = new StdioServerTransport();await server.connect(transport);Estructura de un Servidor MCP
Section titled “Estructura de un Servidor MCP”mcp-server/├── src/│ ├── index.ts # Archivo principal│ ├── tools/ # Definición de herramientas│ └── resources/ # Definición de recursos├── package.json # Dependencias├── tsconfig.json # Config TypeScript└── README.md # Documentación🔗 Patterns Avanzados
Section titled “🔗 Patterns Avanzados”1. Composición de Servidores
Section titled “1. Composición de Servidores”# Usar múltiples servidores juntosUsing github server, get latest commitUsing filesystem server, read the changed filesUsing http server, deploy to staging2. Orquestación de Servidores
Section titled “2. Orquestación de Servidores”# Uso condicional de servidoresIf there are database changes, use postgres to run migrationsIf there are API changes, use http to test endpoints3. Cacheo de Servidores
Section titled “3. Cacheo de Servidores”{ "mcpServers": { "github-cached": { "command": "npx", "args": ["@modelcontextprotocol/server-github"], "cache": { "enabled": true, "ttl": 300, "directory": "~/.cache/opencode/mcp" } } }}4. Monitoreo de Servidores
Section titled “4. Monitoreo de Servidores”# Monitorear rendimiento/mcp stats
# Ver salud del servidor/mcp health
# Ver logs/mcp logs github🛡️ Seguridad de Servidores MCP
Section titled “🛡️ Seguridad de Servidores MCP”Autenticación y Autorización
Section titled “Autenticación y Autorización”{ "mcpServers": { "github": { "command": "npx", "args": ["@modelcontextprotocol/server-github"], "env": { "GITHUB_TOKEN": "${env:GITHUB_TOKEN}" }, "permissions": { "network": true, "filesystem": false, "process": false } } }}Sandboxing de Servidores
Section titled “Sandboxing de Servidores”# Ejecutar en Docker/mcp install github --sandbox docker
# Usar bubblewrap para aislamiento/mcp install postgres --sandbox bubblewrapControl de Acceso
Section titled “Control de Acceso”servers: github: allowed_tools: - list_repos - read_issues - create_pr denied_tools: - delete_repo - update_settings rate_limit: 100/hour🔧 Solución de Problemas
Section titled “🔧 Solución de Problemas”Servidor no inicia
Section titled “Servidor no inicia”# Ver estado del servidor/mcp status github
# Ver logs/mcp logs github --tail 100
# Probar manualmente!npx @modelcontextprotocol/server-github --helpHerramienta no encontrada
Section titled “Herramienta no encontrada”# Listar herramientas disponibles/mcp tools github
# Ver permisos de herramienta/mcp permissions github list_repos
# Actualizar servidor/mcp update githubErrores de autenticación
Section titled “Errores de autenticación”# Ver variables de entorno/mcp env github
# Re-autenticar/mcp auth github --resetProblemas de rendimiento
Section titled “Problemas de rendimiento”# Monitorear rendimiento/mcp stats github --interval 5
# Ajustar recursos/mcp config github --memory 512mb --cpu 1
# Habilitar cache/mcp config github --cache enabled🎯 Mejores Prácticas
Section titled “🎯 Mejores Prácticas”- Fiabilidad: Maneja errores gracefully, implementa reintentos
- Seguridad: Valida inputs, usa rate limiting
- Rendimiento: Implementa cache, usa connection pooling
- Compatibilidad: Sigue la especificación MCP, testa versiones
- Documentación: Instrucciones claras, ejemplos, troubleshooting