v0.1.2 · PyPI · Open Source

Your WAFPass data,
inside any MCP host.

WAF++ MCP Bridge exposes the WAFPass REST API as Model Context Protocol tools for AI assistants. Ask Claude to list runs, inspect findings, or explore compliance data — all through the same SSO session and role-based permissions you already trust.

MCP SSE stdio OIDC pass-through Role filtering OpenAPI generated Token introspection
v0.1.2
PyPI release
113+
Exposed tools
2
Transports
0
Extra credentials needed
Features

A secure bridge, not a second auth system.

The bridge re-uses WAFPass identity, permissions and audit trails. It validates, proxies, and filters — never stores cloud secrets or IdP passwords.

IdP-agnostic

No direct Keycloak, Entra or Okta integration. The bridge trusts tokens issued by wafpass-server, which already handles OIDC and SAML flows.

Token introspection

Every new SSE connection is validated against GET /auth/me. Instant revocation detection and no JWT secret sharing required.

Least-privilege tools

tools/list is filtered by the authenticated user's role. Admin-only endpoints stay invisible to engineers, and row-level auth applies on every backend call.

Context propagation

The original Authorization: Bearer header is forwarded to WAFPass on every proxied request, preserving user identity and audit attribution.

OpenAPI generated

At startup the bridge fetches /openapi.json and registers safe operations as typed MCP tools with Pydantic-validated arguments.

stdio or SSE

Run the bridge as a local stdio process for Claude Desktop, or expose it over HTTP/SSE for remote MCP hosts and browser-based clients.

Quick start

Connect Claude Desktop in minutes.

Install the bridge, log in once, and point Claude Desktop at the stdio command. No certificates, no open ports, no extra auth.

1. Install and configure
git clone https://github.com/WAF2p/wafpass-mcp.git
cd wafpass-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

wafpass-mcp-configure
# Enter WAFpass API URL, username and password
2. Claude Desktop config (stdio)
{
  "mcpServers": {
    "wafpass": {
      "command": "/path/to/wafpass-mcp/.venv/bin/wafpass-mcp-stdio"
    }
  }
}
3. Docker Compose (alternative)
# From the WAF++ repository root
docker compose up -d wafpass-mcp

# SSE endpoint: http://localhost:3001/sse
# Override WAFPASS_TOKEN_MODE or WAFPASS_JWT_SECRET in .env
Architecture

How the bridge fits in.

The user authenticates through the upstream IdP, exchanges tokens with WAFPass, then brings the same Bearer token to the MCP host. The bridge proxies requests and filters tools by role.

User
SSO login
IdP
Keycloak / Entra
WAFPass
wafpass-server
AI client
MCP host
Bridge
wafpass-mcp
VariableDefaultDescription
WAFPASS_API_BASE_URLhttp://localhost:8000Upstream WAFpass API.
WAFPASS_TOKEN_MODEintrospectionintrospection or jwt_secret for local HS256.
WAFPASS_JWT_SECRETRequired for jwt_secret mode; must match backend.
WAFPASS_ACCESS_TOKENWAF++ token for stdio mode; optional if stored by configure helper.
WAFPASS_REFRESH_TOKENRefresh token for automatic access-token refresh in stdio mode.
WAFPASS_REFRESH_THRESHOLD_SECONDS300Refresh access token if it expires within this many seconds.
MCP_HOST0.0.0.0Bridge bind host in HTTP/SSE mode.
MCP_PORT3001Bridge bind port in HTTP/SSE mode.
LOG_LEVELINFOLogging level.
Ready to connect?

Let AI assistants work with your compliance data.

Install the bridge from PyPI or GitHub, connect it to Claude Desktop, and start asking natural-language questions about runs, findings and controls.