Authplane JWT validation adapter for the official MCP Python SDK
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"authplane-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# authplane-mcp [](https://pypi.org/project/authplane-mcp/) [](https://opensource.org/licenses/Apache-2.0) Authplane JWT validation for servers built on the [official MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk). ## Install ```bash pip install authplane-mcp ``` ## Compatibility Supported `mcp` range: **`>=1.28.1, <2.0.0`**. The floor is `1.28.1` because earlier releases (`<=1.28.0`) are affected by [PYSEC-2026-3483](https://osv.dev/vulnerability/PYSEC-2026-3483), fixed in `1.28.1`. The adapter targets the mcp 1.x server API (`mcp.server.fastmcp.FastMCP`) and the camelCase URL-elicitation field (`ElicitRequestURLParams(elicitationId=...)`), which are the shape of the current 1.x line. As a belt-and-braces measure the adapter does not hard-code that spelling: it resolves the elicitation-id field name from the model's own schema — a known spelling is checked at import, then resolved per call — so a rename within 1.x would be picked up automatically rather than breaking the consent path. mcp 2.0 is not yet supported: it removes `mcp.server.fastmcp` and renames the elicitation field to snake_case `elicitation_id`, which is a separate port. If your project needs mcp 2.0, please open an issue. ## Quickstart ```python import asyncio from authplane_mcp import authplane_mcp_auth, install_request_context, require_scope from mcp.server.fastmcp import FastMCP async def main() -> None: auth_result = await authplane_mcp_auth( issuer="https://auth.company.com", resource="https://mcp.company.com", scopes=["tools/query", "tools/write"], ) mcp = FastMCP("My MCP Server", port=8080, json_response=True, **auth_result) # Wires Authplane's per-app hooks onto the server: advertises the issuer / # resource identifiers verbatim in the Protected Re…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.