Conectar un cliente

Ver en Markdown

Conecta Claude Code, Claude Desktop, claude.ai, Cursor, Codex o cualquier cliente MCP con OAuth y solo la URL, o con un token de API.

En esta página

Hay dos formas de autenticarse. OAuth 2.1 es la normal: le das la URL al cliente, inicias sesión en el panel cuando lo pide y eliges qué puede hacer el asistente. Un token de API es la alternativa para los clientes que no hacen OAuth, o para automatizar.

Antes de empezar

  • Una cuenta de OpenWAF Cloud con acceso a una organización. Con OAuth, inicias sesión con ella en el navegador.
  • Para la variante con token, uno propio para el asistente, creado en el panel (Tokens de API) o con POST /v1/orgs/{org}/tokens, con el rol justo y caducidad. Mira OAuth y tokens.

Claude Code

claude mcp add --transport http openwaf https://mcp.openwaf.dev/mcp

Sin cabecera, Claude Code usa OAuth: ejecuta /mcp, elige openwaf y Authenticate abre el navegador.

claude mcp list debe mostrarlo conectado, y /mcp dentro de Claude Code lista sus herramientas.

Claude Desktop y claude.ai

Ajustes → Conectores → Añadir conector personalizado → URL https://mcp.openwaf.dev/mcp → Conectar. Se abre el panel para que inicies sesión y des permiso. No hace falta mcp-remote ni Node.js.

Cursor

En ~/.cursor/mcp.json (o en el .cursor/mcp.json del proyecto, sin subirlo al repositorio):

~/.cursor/mcp.json
{
  "mcpServers": {
    "openwaf": {
      "url": "https://mcp.openwaf.dev/mcp"
    }
  }
}

Sin headers, Cursor usa OAuth y solo necesita la url.

Codex y otros clientes

Vale cualquier cliente MCP con transporte Streamable HTTP: añade https://mcp.openwaf.dev/mcp como servidor remoto. Si el cliente admite la autorización de MCP, basta la URL; si no, pon la cabecera Authorization: Bearer owf_….

A mano, para probar un token:

curl -sS https://mcp.openwaf.dev/mcp \
  -H "Authorization: Bearer $OPENWAF_TOKEN" -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Reglas del transporte

Todo cliente tiene que cumplirlas:

  • Accept debe incluir application/json y text/event-stream.
  • GET y DELETE responden 405, porque no hay sesiones.
  • Cada petición lleva un mensaje JSON-RPC: los lotes (un array) responden 400 bad_request.
  • El cuerpo es de 1 MiB como máximo (413 too_large).
  • Cada token tiene como mucho 4 peticiones MCP en curso; la siguiente responde HTTP 429 rate_limited con Retry-After: 1.

Comprobar la conexión

Pídele al asistente que liste tus zonas. Llama a list_zones y responde con las zonas que ve la credencial. Si falta una zona, seguramente el token está limitado a un cliente o a una zona; si faltan las herramientas de escritura, su rol es readonly.

Para que el asistente gaste menos contexto, conéctate con el perfil ligero.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar