Saltar al contenido principal

Agregar servidores MCP

Desde la línea de comandos

La forma más rápida de agregar un servidor MCP:
El tipo de transporte se infiere automáticamente: una URL implica HTTP (Streamable HTTP), y los argumentos al final (o --command) implican stdio.
Los servidores MCP remotos usan Streamable HTTP de forma predeterminada. Si el servidor responde con un error HTTP 4xx, la CLI recurre a SSE en la misma URL. Establece "transport": "sse" explícitamente si es necesario; consulta fallback heredado a SSE más abajo.
De forma predeterminada, los servidores se guardan en el ámbito local (.devin/config.local.json, gitignored). Usa -s/--scope para cambiarlo:
También puedes gestionar servidores desde la línea de comandos:

Mediante el archivo de configuración

Agrega servidores directamente a la sección mcpServers de tu archivo de configuración:
Los servidores del proyecto se comparten con tu equipo a través del control de versiones.

Opciones de configuración de servidores

Los servidores MCP se pueden configurar de dos maneras: como un comando local (transporte stdio) o como un servidor remoto (transporte HTTP).

Comando local (stdio)

Servidor remoto (Streamable HTTP)

Ejemplos

Después de agregar un servidor con OAuth, ejecuta devin mcp login notion para autenticarte. Consulta Autenticación a continuación.
Después de agregarlo, ejecuta devin mcp login atlassian para autenticarte. Cada cliente MCP (Windsurf, Claude Code, Devin CLI) mantiene su propia sesión de OAuth, así que debes iniciar sesión por separado aunque ya te hayas autenticado en otra herramienta.

Autenticación

Algunos servidores MCP remotos requieren autenticación mediante OAuth. Después de agregar a tu configuración un servidor basado en OAuth, autentícate con el comando login:
Por ejemplo:
Se abre una ventana del navegador en la que puedes autorizar el acceso. Los tokens de OAuth se almacenan localmente y se actualizan automáticamente. Opcionalmente, puedes solicitar ámbitos específicos de OAuth:
Para eliminar las credenciales OAuth almacenadas para un servidor:
Si el servidor admite OAuth, también se te pedirá que te autentiques automáticamente la primera vez que se use.

Clientes OAuth prerregistrados

La mayoría de los servidores MCP basados en OAuth admiten el registro dinámico de clientes (DCR), por lo que Devin CLI se registra automáticamente y no tienes que proporcionar ninguna credencial del cliente. Algunos proveedores (p. ej., GitHub) no admiten DCR y, en su lugar, requieren un cliente OAuth prerregistrado. En esos casos, proporciona el ID del cliente —y el secreto del cliente, si es un cliente confidencial— mediante oauthClientId / oauthClientSecret:
Cuando se establece oauthClientId, Devin CLI omite el registro dinámico de clientes y usa tu cliente prerregistrado durante el flujo de OAuth. Ejecuta devin mcp login <name> (o deja que se active en el primer uso) para autenticarte como de costumbre. También puedes configurarlos desde la línea de comandos al agregar un servidor o iniciar sesión en él:
oauthClientId / oauthClientSecret son credenciales de cliente de OAuth que se usan durante el flujo de autorización. No son credenciales genéricas por solicitud; si un servidor espera un token estático, usa headers (HTTP) o env (stdio) en su lugar.
No confirmes un client secret en una configuración compartida. Haz referencia a él desde una variable de entorno (${env:VAR}), léelo desde un archivo (${file:/path}) o colócalo en .devin/config.local.json (ignorado por git). Consulta la sección “Gestión de secretos” más abajo.

Anulación del recurso de OAuth

Durante la autorización de OAuth y el intercambio de tokens, Devin CLI envía el parámetro resource de RFC 8707 para que el servidor de autorización pueda emitir tokens restringidos por audiencia. De forma predeterminada, el valor es la URL del servidor MCP. Puedes anularlo con oauthResource:
El campo tiene tres comportamientos:
  • Sin establecer (predeterminado): envía resource con la URL del servidor MCP.
  • Valor no vacío: reemplaza el valor predeterminado por tu valor (p. ej., un URI de ID de aplicación específico).
  • Cadena vacía (""): omite por completo el parámetro resource tanto de la URL de autorización como del intercambio del token.
También puedes establecerlo desde la línea de comandos al agregar un servidor o iniciar sesión en él:
Al igual que otros campos de OAuth, oauthResource permite expandir ${env:VAR} y ${file:/path}.

Habilitar y deshabilitar servidores

Puede deshabilitar temporalmente un servidor MCP sin eliminar su configuración. Un servidor deshabilitado se omite durante el descubrimiento de herramientas: sus herramientas no aparecerán y no se iniciará el proceso del servidor.
Esto establece el indicador "disabled": true en la entrada del servidor del archivo de configuración. Usa -s/--scope para seleccionar un ámbito específico:
También puedes establecer este indicador directamente en tu archivo de configuración:
Desactivarlo es útil cuando quieres conservar la configuración de un servidor (incluidas las variables de entorno y las credenciales OAuth) y dejar de usarlo temporalmente; por ejemplo, para reducir el tiempo de arranque o aislar un problema.

Gestión de secretos

Nunca hagas commit de claves de API ni secretos en el control de versiones. Usa .devin/config.local.json para los valores sensibles.
Para proyectos en equipo, el patrón recomendado es:
  1. Define el servidor en .devin/config.json con variables de entorno de ejemplo o sin variables de entorno
  2. Cada miembro del equipo agrega sus claves personales en .devin/config.local.json
El archivo de configuración local se excluye automáticamente de git.

Permisos de MCP

Puedes aprobar previamente, denegar o hacer que siempre se solicite confirmación para herramientas específicas de MCP en tu configuración de permisos:
Patrones de coincidencia de permisos:

Restricciones de la organización

Si estás en un equipo Enterprise, tu Admin puede restringir a qué servidores MCP puedes conectarte. Un servidor que hayas configurado puede quedar bloqueado si MCP está deshabilitado para tu equipo o si no está en la lista de permitidos de tu equipo ni en un registro de MCP impuesto; en ese caso, no se conectará y sus herramientas no estarán disponibles. Consulta Team Settings — MCP Registry para obtener más información.

Solución de problemas

Si ves errores como Auth required o AuthRequired al conectarte a un servidor MCP remoto, significa que el servidor requiere autenticación OAuth.Ejecuta:
Cada cliente MCP se autentica de forma independiente. Aunque ya te hayas autenticado en Windsurf o Claude Code, debes ejecutar devin mcp login por separado para Devin CLI.Para comprobar tu estado de autenticación, prueba a eliminar y volver a agregar las credenciales:
Verifica que el comando funcione fuera de Devin CLI:
Comprueba que todas las variables de entorno necesarias estén configuradas.
Pídele al agente que liste los servidores MCP y las herramientas. Puede que el servidor necesite un momento para inicializarse.
Revisa tu configuración de permisos. De forma predeterminada, las herramientas MCP solicitan aprobación. Agrégalas a permissions.allow para aprobarlas automáticamente.
Algunos servidores de autorización rechazan solicitudes de OAuth que incluyen el parámetro resource de RFC 8707. Establece oauthResource como una cadena vacía para omitir el parámetro:
Luego vuelve a autenticarte:
Consulta anulación del recurso de OAuth para conocer el conjunto completo de comportamientos de oauthResource.
Al conectarte a un servidor HTTP, Devin CLI intenta primero Streamable HTTP. Si el servidor responde con un error HTTP 4xx (p. ej., 404 o 405), cambia automáticamente a SSE heredado en la misma URL configurada. Esto sigue la guía de compatibilidad con versiones anteriores de la spec de MCP.El cambio automático solo se activa con respuestas 4xx: los errores de conexión, los tiempos de espera y las respuestas 5xx se informan directamente sin intentar SSE.Si el endpoint SSE de tu servidor está en una ruta distinta (p. ej., /sse en lugar de /mcp), establece "transport": "sse" con la URL de SSE para conectarte directamente sin intentar Streamable HTTP.Si ambos transportes fallan, el mensaje de error incluye detalles de ambos intentos para facilitar la solución de problemas.