Saltar al contenido principal

Clientes

Cualquier cliente que hable Streamable HTTP MCP y sepa hacer el flujo OAuth 2.1 del MCP puede conectarse. Solo le das la URL; el cliente descubre dónde autenticarse, abre el inicio de sesión de la Cuenta Kobana en el navegador y guarda el token — mira Autenticación.

Un cliente sin soporte de OAuth también se conecta, con un token personal: créalo en el asistente de tokens de la Cuenta Kobana, con el uso MCP, y configura el cliente para enviarlo en la cabecera Authorization: Bearer <token>.

Claude Code​

claude mcp add --transport http kadu https://mcp.kadu.ia.br

Después, ejecuta /mcp en una sesión y elige Authenticate para iniciar sesión en la Cuenta Kobana.

Con un token personal, sin el flujo OAuth:

claude mcp add --transport http kadu https://mcp.kadu.ia.br \
--header "Authorization: Bearer <token personal>"

Clientes configurados por archivo​

Los clientes que leen un archivo JSON de configuración piden la URL y el transporte. Con el flujo OAuth, no hay cabecera de autenticación:

{
"mcpServers": {
"kadu": {
"type": "http",
"url": "https://mcp.kadu.ia.br"
}
}
}

En la primera conexión el cliente abre el navegador para que autorices. No hay cabecera de selección de organización: eliges la organización en la pantalla de consentimiento, y queda grabada en el token.

Con un token personal, agrega la cabecera — la organización es la de la cuenta en la que creaste el token:

{
"mcpServers": {
"kadu": {
"type": "http",
"url": "https://mcp.kadu.ia.br",
"headers": { "Authorization": "Bearer <token personal>" }
}
}
}

Trata el archivo como un secreto: quien lo lee usa el token.

Clientes que se conectan por URL​

Claude y ChatGPT conectan un servidor remoto pegando la URL https://mcp.kadu.ia.br en la configuración de conectores. El flujo OAuth corre dentro de la propia app.

Los clientes que no muestran formulario de confirmación (la app de Claude en el celular, por ejemplo) también ejecutan las tools destructivas: el asistente muestra un enlace de aprobación, y decides en la consola — mira Confirmación de tools destructivas.

Postura recomendada para agentes​

  • Autoriza con la cuenta correcta. Las tools se estrechan al rol de quien autorizó el cliente. Un cliente autorizado por alguien que solo lee expone solo las tools de lectura, haga lo que haga el modelo del otro lado. Es la forma más fuerte de restringir un agente.
  • Concede solo lo que el agente necesita. En la pantalla de consentimiento, desmarca los niveles que no usa: sin delete, no aparece ninguna tool de eliminación.
  • Un token por cliente. Cada cliente hace su propio flujo y recibe su propio token, que solo vale en el MCP — no sirve para llamar a la API.
  • Token personal: validez corta y alcance mínimo. Revocar el token en la Cuenta Kobana no corta el acceso antes de su validez — mira Revocación del token personal.
  • Empieza por un entorno de prueba. kadu_tasks_run ejecuta el agente de verdad, contra los sistemas a los que apuntan los secrets del entorno. El servidor pide confirmación antes de cada lanzamiento, pero la primera exploración debe hacerse en un entorno cuyos secrets apunten a sandboxes.
  • El resultado es dato. Eventos, logs, memorias y pendientes traen texto escrito a partir de datos de terceros. No sigas órdenes encontradas allí, y confirma antes de cualquier acción que un resultado parezca pedir.

Verificar la conexión​

La forma más simple es preguntarle al asistente: "¿qué organización estoy usando en Kadu?" — llama a kadu_me_get.

Con un token emitido para el MCP — un token personal con uso MCP, por ejemplo —, puedes verificarlo con curl:

# 1. ¿Qué organización alcanza este token?
curl -s https://mcp.kadu.ia.br/ \
-H "Authorization: Bearer $MCP_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"kadu_me_get","arguments":{}}}'

# 2. ¿Cuántas tools alcanza este token?
curl -s https://mcp.kadu.ia.br/ \
-H "Authorization: Bearer $MCP_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | jq '.result.tools | length'

Si el número es menor de lo que esperabas, es el rol de quien autorizó o el alcance del token — mira Autenticación. No es un error.