TL;DR
claude mcp login <nombre>(desde v2.1.186) corre el flujo OAuth de un MCP desde tu shell, sin abrir el panel/mcpa media sesión. El token se guarda seguro y se refresca solo, así que autenticas una vez y todas las sesiones futuras (y los runs headless) arrancan con el MCP listo.claude mcp logout <nombre>revoca. Por SSH,--no-browserte imprime la URL.
Estás a mitad de una tarea, el MCP se pone en rojo pidiendo login, y de golpe peleas con el navegador y el callback en vez de programar. Ese corte a media sesión siempre me ha parecido un coñazo. La buena noticia: puedes sacar ese paso fuera del flujo.
Cómo funciona
Muchos MCP remotos (Sentry, Notion, Linear…) piden OAuth 2.0. Cuando el servidor responde 401 o 403, Claude Code lo marca como "necesita auth". Hasta ahora la única vía era abrir /mcp dentro de la sesión y seguir el navegador. Desde v2.1.186 tienes el comando directo:
claude mcp login sentry
Se abre el navegador, te logueas, y el token queda guardado (keychain en macOS o archivo de credenciales) y se refresca solo. No es un login por sesión: lo haces una vez y ya.
¿Para qué loguearte fuera de la sesión?
Si estás sentado programando, /mcp sirve. claude mcp login gana en tres casos:
- Pre-autenticar. Lo haces antes de empezar, y ninguna sesión te vuelve a cortar para pedirte login.
- Headless. En
claude -p, en el Agent SDK o en un cron no hay panel/mcp: Claude Code no puede abrir el navegador por ti. Desde v2.1.196 el run te avisa de que ese server necesita auth, pero la única forma de dejarlo listo es haberte logueado antes conclaude mcp login. Aquí quien usa el MCP no eres tú: es la automatización. - Provisioning.
claude mcp add … && claude mcp login …en un script deja una máquina lista sin abrir Claude ni una vez.
Lo que ves
$ claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Added HTTP MCP server sentry
$ claude mcp login sentry
Opening browser to authorize sentry…
✓ Authenticated. Credentials stored securely.
Puesta en marcha
1. Añade el servidor
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
2. Autentícate desde la shell
claude mcp login sentry
3. Comprueba y revoca
claude mcp get sentry # verifica que el OAuth está configurado
claude mcp logout sentry # borra las credenciales guardadas
Por SSH o sin navegador
Desde v2.1.191, si no hay navegador local (una sesión SSH, Linux sin entorno gráfico), el comando imprime la URL en vez de intentar abrirlo. Ábrela en tu máquina, autentícate y pega de vuelta la URL de redirección completa. Necesita terminal interactiva para el pegado, así que conéctate con ssh -t. Fuerza ese modo aunque haya navegador con --no-browser:
claude mcp login sentry --no-browser
Referencia
| Comando | Qué hace |
|---|---|
claude mcp login <nombre> |
Corre el OAuth desde la shell (v2.1.186+) |
claude mcp login <nombre> --no-browser |
Imprime la URL en vez de abrir el navegador |
claude mcp logout <nombre> |
Borra las credenciales guardadas |
claude mcp get <nombre> |
Verifica que el OAuth está configurado |
/mcp (en sesión) |
La alternativa interactiva: "Re-authenticate" / "Clear authentication" |
Cuando OAuth no basta:
- Si el server no soporta registro dinámico ("Incompatible auth server"), fija el puerto con
--callback-porty pasa tus credenciales con--client-id/--client-secret. - Para pinchar solo los permisos que quieres, usa
oauth.scopesen.mcp.json. - Si tu auth no es OAuth (Kerberos, SSO, tokens de vida corta), genera las cabeceras al vuelo con
headersHelper. Y para un token estático,--header "Authorization: Bearer …"al añadir el server.
Esto es el paso siguiente a conectar tu primer MCP: ya lo añadiste, ahora autentícalo. Y cuando uno se ponga en rojo, el árbol de decisión de «Failed to connect» te dice si el 401/403 es justo esto.
Documentación oficial: Authenticate with remote MCP servers
Relacionado: Configura tu primer MCP · MCP «Failed to connect»
Requisitos
claude mcp login/logoutrequieren Claude Code v2.1.186+; la detección "sin navegador", v2.1.191.- OAuth funciona con servidores HTTP (y SSE), no con stdio locales.