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/mcpSin cabecera, Claude Code usa OAuth: ejecuta /mcp, elige openwaf y Authenticate abre el navegador.
claude mcp add --transport http openwaf https://mcp.openwaf.dev/mcp \
--header "Authorization: Bearer $OPENWAF_TOKEN"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.
Para usar un token de API en vez de OAuth en Claude Desktop, sigue valiendo el puente mcp-remote (enlace externo) en claude_desktop_config.json (Ajustes → Desarrollador → Editar configuración):
{
"mcpServers": {
"openwaf": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.openwaf.dev/mcp", "--header", "Authorization:${OPENWAF_AUTH}"],
"env": { "OPENWAF_AUTH": "Bearer owf_…" }
}
}
}La cabecera va en una variable para que no haya espacios en los argumentos. Reinicia Claude Desktop después.
Cursor
En ~/.cursor/mcp.json (o en el .cursor/mcp.json del proyecto, sin subirlo al repositorio):
{
"mcpServers": {
"openwaf": {
"url": "https://mcp.openwaf.dev/mcp"
}
}
}Sin headers, Cursor usa OAuth y solo necesita la url.
{
"mcpServers": {
"openwaf": {
"url": "https://mcp.openwaf.dev/mcp",
"headers": { "Authorization": "Bearer owf_…" }
}
}
}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:
Acceptdebe incluirapplication/jsonytext/event-stream.GETyDELETEresponden 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_limitedconRetry-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.