MCP en OpenCode en DeepSeek: cómo conectar herramientas externas

Written by

in

MCP (Model Context Protocol) es un protocolo abierto que describe cómo conectar herramientas externas y fuentes de datos al modelo de lenguaje: un sistema de archivos, documentación, rastreador de tareas, rastreador de errores o su propio servicio. En lugar de integrar cada herramienta en el agente, se configura un servidor MCP independiente y el agente se comunica con él según el esquema estándar.

OpenCode admite MCP desde el primer momento: tanto servidores locales, que se inician mediante un proceso secundario, como servidores remotos, accesibles a través de HTTP. Un punto importante es que toda la capa MCP se implementa en el lado del propio OpenCode y no en el lado del proveedor del modelo. Por lo tanto, DeepSeek recibe las herramientas MCP como funciones normales en la solicitud y no necesita saber nada sobre el protocolo en sí.

En esta publicación, veremos cómo agregar un servidor local y remoto, cómo obtener la autorización, cómo no ahogarme en tokens y qué considerar al trabajar con modelos de DeepSeek.

Lo que necesitas

Para trabajar necesitas tres cosas:

  • OpenCode instalado. Si el agente aún no está configurado, analicé el procedimiento para instalar y conectar DeepSeek en una nota separada.
  • Node.js y npx. Necesario para servidores MCP locales, que se distribuyen como paquetes npm.
  • Claves de acceso. Sólo para aquellos servidores remotos que requieran autorización. Los servidores públicos como Context7 funcionan sin clave, pero con límites más bajos.

Cómo funciona

Los servidores se describen en la configuración de OpenCode en el bloque mcp. Cada servidor tiene un nombre único por el cual se le puede mencionar en una solicitud. Las herramientas del servidor se registran con este prefijo de nombre, por lo que no hay conflictos entre diferentes servidores.

Después de conectarse, las herramientas MCP están disponibles para los modelos junto con las integradas: leer archivos, editar código y ejecutar comandos. Desde el punto de vista de DeepSeek, estas son funciones ordinarias que un agente puede llamar, razón por la cual el paquete funciona sin ningún soporte MCP en el lado de la API del modelo.

Servidor local

La forma más sencilla de familiarizarse con el mecanismo es el servidor de prueba @modelcontextprotocol/server-everything. Agreguémoslo al archivo opencode.json en la raíz del proyecto:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mcp_everything": {
      "type": "local",
      "command": ["npx", "-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

El campo comando es el comando de inicio del servidor y sus argumentos en forma de matriz. Después de reiniciar OpenCode, las herramientas aparecerán en la sesión y se podrán solicitar explícitamente:

используй инструмент mcp_everything, чтобы сложить 3 и 4

El servidor local tiene varios campos más útiles. entorno establece las variables de entorno del proceso, cwd – el directorio de trabajo, timeout – tiempo de espera de solicitud en milisegundos y enabled le permite deshabilitar temporalmente el servidor sin eliminarlo de la configuración.

Servidor remoto

Los servidores remotos son más convenientes: no es necesario ejecutar nada localmente y se puede acceder a ellos a través de una URL. Un buen ejemplo es Context7, que busca documentación de biblioteca actualizada. Se conecta sin llave:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp"
    }
  }
}

Si tienes una cuenta gratuita de Context7, la clave es aumentar los límites. Los encabezados se transmiten a través del bloque headers y es conveniente mantener la clave en una variable de entorno:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "context7": {
      "type": "remote",
      "url": "https://mcp.context7.com/mcp",
      "headers": {
        "CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
      }
    }
  }
}

La construcción {env:NAME} sustituye el valor de la variable de entorno al cargar la configuración, por lo que la clave no termina en el repositorio. Antes de iniciar el agente, se debe exportar la variable en la terminal.

Otro servidor público útil es Grep de Vercel; busque ejemplos de código en GitHub:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "gh_grep": {
      "type": "remote",
      "url": "https://mcp.grep.app"
    }
  }
}

Autorización vía OAuth

Algunos servidores remotos requieren OAuth. OpenCode puede atravesar este escenario por sí mismo: detecta la respuesta 401, activa la autorización y guarda los tokens. Para Sentry, simplemente especifique el servidor:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sentry": {
      "type": "remote",
      "url": "https://mcp.sentry.dev/mcp",
      "oauth": {}
    }
  }
}

Después de esto, la autorización se puede iniciar manualmente; se abrirá el navegador:

opencode mcp auth sentry

Los comandos de servicio también son útiles en el trabajo diario. La lista de mcp de código abierto muestra los servidores y el estado de autorización, el cierre de sesión de mcp de código abierto elimina los tokens almacenados y la depuración de mcp de código abierto verifica la conectividad de red y el descubrimiento de OAuth para un servidor específico. Los tokens se almacenan localmente en el archivo ~/.local/share/opencode/mcp-auth.json.

Si el servidor no utiliza OAuth, sino una clave API normal, la autorización automática debe estar deshabilitada; de lo contrario, OpenCode intentará pasar OAuth donde no sea necesario:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-api-key-server": {
      "type": "remote",
      "url": "https://mcp.example.com/mcp",
      "oauth": false,
      "headers": {
        "Authorization": "Bearer {env:MY_API_KEY}"
      }
    }
  }
}

Gestión de herramientas

Las herramientas MCP consumen contexto: cada servidor agrega descripciones de sus funciones a la solicitud. Por lo tanto, es mejor mantener apagados los servidores que rara vez se necesitan. Esto se puede hacer globalmente a través del bloque herramientas:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp-foo": {
      "type": "local",
      "command": ["npx", "-y", "my-mcp-command-foo"]
    },
    "my-mcp-bar": {
      "type": "local",
      "command": ["npx", "-y", "my-mcp-command-bar"]
    }
  },
  "tools": {
    "my-mcp*": false
  }
}

La plantilla my-mcp* deshabilita todas las herramientas cuyo nombre comienza con este prefijo. Si hay muchos servidores, tiene más sentido deshabilitarlos globalmente y habilitarlos localmente para un agente específico:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "my-mcp": {
      "type": "local",
      "command": ["npx", "-y", "my-mcp-command"],
      "enabled": true
    }
  },
  "tools": {
    "my-mcp*": false
  },
  "agent": {
    "my-agent": {
      "tools": {
        "my-mcp*": true
      }
    }
  }
}

Funciones de búsqueda profunda

La conexión con DeepSeek funciona porque los modelos admiten funciones de llamada y las herramientas MCP para ellos parecen funciones normales. DeepSeek en sí no conecta servidores MCP y no debería hacerlo: la conexión la maneja OpenCode.

A qué debes prestar atención:

  • Seleccionar un modelo. Para ediciones pequeñas y rutinarias, deepseek-flash es suficiente. Para tareas en las que necesitas mantener mucho contexto en tu cabeza y seleccionar cuidadosamente una herramienta, es mejor usar deepseek-v4-pro.
  • Tamaño del contexto. Los servidores pesados ​​como GitHub MCP agregan muchos tokens y, junto con un proyecto grande, alcanzan fácilmente el límite. Actívelos solo mientras dure una tarea específica.
  • Los esquemas de herramientas de

  • costos se envían con cada solicitud, por lo que cuantos más servidores se incluyan, más costosa será cada iteración. Pagas al proveedor directamente, por lo que los servidores adicionales se notan en tu factura.
  • Consejos para el agente. Es más seguro no confiar en el ingenio del modelo, sino nombrar directamente el servidor en la solicitud o escribir una regla en AGENTS.md.

Un ejemplo de una regla para AGENTS.md, para que el propio agente acceda a la fuente requerida:

Когда нужно посмотреть документацию библиотеки, используй инструменты context7.

Receta práctica

Para el trabajo diario, suelen ser suficientes dos servidores: Context7 para la documentación y un servidor estrecho para una tarea específica, por ejemplo, Sentry para analizar errores o Grep para buscar ejemplos de código. Es mejor mantener el resto apagado y encenderlo según sea necesario.

Mi procedimiento es el siguiente: agrego el servidor a opencode.json, reinicio OpenCode, verifico la lista a través de opencode mcp list y luego hago una pregunta de prueba que menciona explícitamente el servidor. Si no se llama a la herramienta, miro hacia la depuración de mcp de código abierto y el tiempo de espera; es posible que un servidor lento no tenga tiempo de responder en los 30 segundos asignados.

A qué prestar atención

Un par de puntos prácticos. Los servidores MCP son códigos confiables: el servidor local se ejecuta en su máquina con sus derechos y usted envía los datos de la solicitud al remoto. Por lo tanto, la instalación de servidores aleatorios desde Internet debe realizarse con la misma precaución que cualquier CLI de terceros.

Mantenga las claves y los tokens en las variables de entorno y no se comprometa con el repositorio. OpenCode almacena tokens OAuth localmente, pero en una máquina compartida también vale la pena considerar esto: opencode mcp logoout los elimina cuando ya no es necesario el acceso.

Y una cosa más: no enciendas todo a la vez. MCP agrega herramientas al contexto, y el contexto es dinero y calidad de respuesta. Dos o tres servidores realmente necesarios funcionan mucho mejor que diez conectados por si acaso.

Enlaces

https://opencode.ai/docs/mcp-servers/
https://opencode.ai/docs/config/
https://modelcontextprotocol.io/
https://github.com/upstash/context7
https://mcp.sentry.dev
https://mcp.grep.app
https://github.com/anomalyco/opencode

Fuentes

https://opencode.ai/docs/mcp-servers/
https://modelcontextprotocol.io/
https://api-docs.deepseek.com/
https://api-docs.deepseek.com/quick_start/agent_integrations/opencode

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

DemensDeum
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.