Capitulo 12: MCP Servers

Por: Artiko
opencodeaimcpmodel-context-protocolherramientas

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:

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:

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:

La clave es encontrar el balance entre funcionalidad y eficiencia en el uso del contexto.


Siguiente: Capitulo 13: Agent Skills —>