The agent access layer for FastAPI: one graphql_query tool with composition and per-caller auth, derived from your existing app — zero decorators.
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":"fastapi-mcp-neo","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.
# fastapi-mcp-neo [](https://pypi.python.org/pypi/fastapi-mcp-neo) [](https://pepy.tech/projects/fastapi-mcp-neo) The **agent access layer for FastAPI** — agents call one `graphql_query` tool with full composition and per-caller credentials, instead of one tool per endpoint. The GraphQL layer + MCP server are derived from your existing app: zero decorators, zero model changes. ```python from fastapi import FastAPI from fastapi_mcp_neo import FastAPIMCP app = FastAPI() # ... your existing routes ... mcp = FastAPIMCP( app, name="my-app", mode="graphql", # or "progressive" / "tools" — the three shapes below ) mcp.run() # HTTP MCP server: get_schema + graphql_query + graphql_mutation ``` **Three modes, one engine** — pick how agents talk to your app ([full comparison](#modes)): | mode | what the agent does | |---|---| | `graphql` (default) | reads the schema once, then one query composes any routes — projection, aliases, one round trip | | `progressive` | the same queries, discovery served in fragments grouped by your route **tags** (tags = "domains" in the schema) — for large apps (constant ~1.5k-token catalog at any size) | | `tools` | one typed tool per route — plain arguments, no GraphQL to write; clients gate each tool individually. The natural landing for [fastapi_mcp migrants](#migrating-from-fastapi_mcp): the tool-per-route shape carries over, so existing permission and client setups keep working (the other modes change the tool set) | **Contents** — [Installation](#installation) · [Why](#why) · [How it works](#how-it-works) · [Capability boundaries](#capability-boundaries) · [Usage](#usage) · [Agent lifecycle](#what-the-agent-sees-connection-lifecycle) · [Authentication](#authentication) · [Observability](#observability-opentelemetry) · [Hardening](#hardening-the-bridge) · [Demo](#demo) · [Development](#develop…
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.