Capitulo 12: MCP Servers
Capitulo 12: MCP Servers
< Volver al Indice del Tutorial
Que es MCP
Model Context Protocol (MCP) es un protocolo estandarizado que permite extender las capacidades de un agente AI con herramientas externas. En lugar de que el agente solo pueda leer archivos y ejecutar comandos, MCP le permite conectarse a servicios como Sentry, navegadores, bases de datos y cualquier otra herramienta que implemente el protocolo.
OpenCode soporta MCP de forma nativa. Puedes configurar multiples servidores MCP que el agente descubrira y usara automaticamente cuando lo necesite.
Configuracion en opencode.json
Los MCP servers se definen en el archivo opencode.json bajo la clave "mcpServers":
{
"mcpServers": {
"mi-mcp": {
"type": "local",
"command": ["npx", "-y", "mi-mcp-command"]
}
}
}
Existen dos tipos principales de servidores MCP: locales y remotos.
Servidores Locales (stdio)
Los servidores locales ejecutan un proceso en tu maquina y se comunican via stdio. Son los mas comunes y faciles de configurar.
{
"mcpServers": {
"mi-mcp-local": {
"type": "local",
"command": ["npx", "-y", "mi-mcp-command"],
"environment": {
"API_KEY": "tu-api-key",
"DEBUG": "true"
},
"timeout": 5000,
"enabled": true
}
}
}
Propiedades disponibles:
- command: array con el comando y argumentos para iniciar el servidor
- environment: variables de entorno que recibe el proceso
- timeout: tiempo maximo de espera en milisegundos para que el servidor inicie
- enabled: permite deshabilitar el servidor sin eliminar la configuracion
El servidor se inicia automaticamente cuando OpenCode detecta que necesita alguna de sus herramientas.
Servidores Remotos (HTTP)
Los servidores remotos conectan a un servicio MCP que corre en otro lugar, accesible via HTTP.
{
"mcpServers": {
"mi-remote": {
"type": "remote",
"url": "https://mi-mcp-server.com/mcp",
"headers": {
"Authorization": "Bearer tu-api-key"
}
}
}
}
Propiedades disponibles:
- url: URL completa del servidor MCP remoto
- headers: encabezados HTTP adicionales (autenticacion, tokens, etc.)
Los servidores remotos son utiles cuando el servicio MCP corre en la nube o en otro equipo de tu red.
Autenticacion OAuth
OpenCode soporta OAuth para servidores MCP remotos con tres modos:
Automatico (por defecto)
Si el servidor responde con un 401, OpenCode detecta automaticamente los endpoints OAuth y abre el navegador para autenticacion:
{
"mcpServers": {
"servicio-oauth": {
"type": "remote",
"url": "https://servicio.com/mcp"
}
}
}
Pre-registrado
Cuando ya tienes credenciales OAuth del servicio:
{
"mcpServers": {
"servicio-preregistrado": {
"type": "remote",
"url": "https://servicio.com/mcp",
"oauth": {
"clientId": "tu-client-id",
"clientSecret": "tu-client-secret"
}
}
}
}
Deshabilitado
Para deshabilitar OAuth y usar solo headers estaticos:
{
"mcpServers": {
"servicio-sin-oauth": {
"type": "remote",
"url": "https://servicio.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer token-fijo"
}
}
}
}
Comandos MCP desde CLI
OpenCode incluye comandos para gestionar la autenticacion MCP:
# Autenticar con un servidor MCP remoto
opencode mcp auth mi-remote
# Listar todos los servidores MCP configurados
opencode mcp list
# Cerrar sesion de un servidor MCP
opencode mcp logout mi-remote
El comando mcp list muestra el estado de cada servidor: si esta activo, cuantas herramientas expone y si la autenticacion es valida.
Controlar Herramientas MCP
Puedes controlar que herramientas de MCP estan disponibles usando glob patterns en la configuracion de tools:
{
"agent": {
"default": {
"tools": {
"mi-mcp*": false,
"mi-mcp_herramienta_especifica": true
}
}
}
}
En este ejemplo, se deshabilitan todas las herramientas del servidor mi-mcp excepto mi-mcp_herramienta_especifica.
Control por Agente
Puedes deshabilitar MCP tools globalmente y habilitarlos solo para agentes especificos:
{
"agent": {
"default": {
"tools": {
"playwright*": false
}
},
"tester": {
"tools": {
"playwright*": true
}
}
}
}
El agente default no tendra acceso a Playwright, pero el agente tester si. Esto permite crear agentes especializados con acceso controlado a herramientas externas.
Ejemplos Populares
Sentry — Monitoreo de errores
{
"mcpServers": {
"sentry": {
"type": "local",
"command": ["npx", "-y", "@sentry/mcp-server"],
"environment": {
"SENTRY_AUTH_TOKEN": "tu-token"
}
}
}
}
Permite al agente consultar issues, ver stack traces y analizar errores directamente desde Sentry.
Context7 — Documentacion actualizada
{
"mcpServers": {
"context7": {
"type": "local",
"command": ["npx", "-y", "@context7/mcp"]
}
}
}
Da acceso al agente a documentacion actualizada de librerias, evitando respuestas basadas en informacion desactualizada.
Playwright — Automatizacion del navegador
{
"mcpServers": {
"playwright": {
"type": "local",
"command": ["npx", "-y", "@playwright/mcp"]
}
}
}
Permite al agente interactuar con paginas web: navegar, hacer click, tomar capturas y ejecutar tests E2E.
Consideraciones Importantes
MCP servers agregan contexto al agente. Cada servidor expone herramientas que el modelo necesita entender, lo cual consume tokens. Ten en cuenta:
- No habilites mas servidores de los necesarios: cada uno agrega definiciones de herramientas al contexto
- Usa el control por agente: habilita MCP servers solo en los agentes que los necesitan
- Monitorea el uso de tokens: servidores con muchas herramientas pueden incrementar significativamente el consumo
- Deshabilita herramientas innecesarias: usa glob patterns para filtrar solo las herramientas que realmente usas
La clave es encontrar el balance entre funcionalidad y eficiencia en el uso del contexto.
Siguiente: Capitulo 13: Agent Skills —>