Skip to main content

fastapi-architect-mcp

An MCP server that gives Claude Code IDE-level intelligence for FastAPI projects — semantic code navigation, safe renaming, route inspection, dependency trees, Pydantic model analysis, and a typed knowledge graph of the whole application.

Instead of Claude reading files blindly, it calls structured tools backed by Jedi (Python language server) and Python's AST.

Tools

Tool Description
find_references Find all usages of a symbol across the project
rename_symbol Safely rename a symbol across all files
go_to_definition Jump to where a symbol is defined
get_completions Get completion suggestions at a cursor position
list_routes List all FastAPI routes with their full paths (router prefixes applied)
get_dependencies Get the full injection tree for a handler (router, decorator and signature Depends())
build_dependency_graph Per-file view: route → input models → dependencies → response model
validate_response_models Detect routes missing a response_model declaration
list_models List all Pydantic/SQLModel models in a file
inspect_model Inspect a model's fields, types, defaults, and validators
find_model_usages Find everywhere a model is used across the project
detect_schema_orm_mismatches Detect field mismatches between ORM model and Pydantic schema

Knowledge graph

Tool Description
build_knowledge_graph Build or refresh the project graph and return its statistics
graph_report Markdown overview: routes with their auth, most connected symbols, tables, audit findings
graph_neighbors Explore what a route, function, model or table uses and is used by
impact_analysis Everything affected if a symbol changes, with the chain explaining each impacted route
find_path Shortest paths between two nodes, e.g. from a route to a SQL table
audit_graph Write routes without auth, duplicate or unmounted routes, unused schemas, unreferenced ORM models, dependency cycles
export_graph_html Standalone interactive HTML visualization of the graph

Knowledge graph

The graph is built statically from the AST — no code is executed and no LLM is involved.

Nodes: App, Router, Route, Handler, Dependency, Middleware, Function, Schema, ORMModel, Class, Table, Template, Module

Edges:

App/Router ──INCLUDES──▶ Router          (prefixes → full route paths)
Route ──HANDLED_BY──▶ Handler
Route/Router/function ──DEPENDS_ON──▶ Dependency
function ──ACCEPTS / RETURNS──▶ Schema/ORMModel
function ──CALLS──▶ function             function/class ──USES──▶ class
function ──QUERIES──▶ Table              (raw SQL strings: SELECT, INSERT, UPDATE, DELETE, CREATE)
function ──RENDERS──▶ Template           App ──MIDDLEWARE──▶ Middleware
ORMModel ──MAPS_TO / REFERENCES──▶ Table ORMModel ──RELATES_TO──▶ ORMModel
Schema ──INHERITS──▶ Schema              Schema ──MIRRORS──▶ ORMModel (name + field overlap, with confidence)

It covers both structured projects (APIRouter, Depends, SQLAlchemy/SQLModel) and flat ones (a single main.py, raw psycopg2 queries, Jinja2 templates, manual auth checks).

Cache: per-file extraction results are stored in <project>/.fastapi-architect/graph.json (git-ignored automatically). Only new or modified files are re-parsed, so graph tools stay fast after the first build.

Installation

pip install fastapi-architect-mcp

Configuration

Option 1 — Global (available in all projects)

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "fastapi-architect": {
      "command": "fastapi-architect-mcp"
    }
  }
}

Create .mcp.json at your project root:

{
  "mcpServers": {
    "fastapi-architect": {
      "command": "/path/to/your/project/venv/bin/fastapi-architect-mcp"
    }
  }
}

Using your project's own venv gives Jedi access to all your project's dependencies, which enables full cross-file find_references and rename_symbol support.

Then restart Claude Code.

Usage examples

Once connected, you can ask Claude Code things like:

  • "List all routes in this project"
  • "What are the dependencies of the get_users handler?"
  • "Find all references to get_db across the project"
  • "Rename get_db to get_session everywhere"
  • "Inspect the UserCreate model"
  • "Are there any routes missing a response_model?"
  • "Show me the full dependency graph for the users router"
  • "Are there any mismatches between my User ORM model and UserPublic schema?"
  • "Give me an overview of this FastAPI project"
  • "If I change the User model, which endpoints are affected?"
  • "Which write endpoints have no authentication?"
  • "How does POST /chat reach the chat_logs table?"
  • "Export the knowledge graph as HTML"

Supported patterns

Dependency injection

  • def handler(x=Depends(func)) — standard FastAPI
  • def handler(*, x=Depends(func)) — keyword-only args
  • @router.get("/", dependencies=[Depends(func)]) — decorator-level deps
  • SessionDep = Annotated[Session, Depends(get_db)] — Annotated aliases (modern FastAPI)

Models

  • BaseModel — Pydantic
  • SQLModel — SQLModel
  • BaseSettings — Pydantic settings
  • RootModel — Pydantic v2
  • Inherited models (e.g. class UserCreate(UserBase))

Validators

  • @validator — Pydantic v1
  • @field_validator — Pydantic v2

Known limitations

  • find_references and rename_symbol work cross-file only when the MCP is configured to use the project's own venv (Option 2 above). With a global install, they only operate on the file where the symbol is defined.
  • get_dependencies and the knowledge graph support native FastAPI Depends() / Security() only. Other DI frameworks (Dishka, dependency-injector, etc.) are not supported.
  • Auth detection in audit_graph is inferred from names (dependencies, auth headers, called functions). Middleware-based auth is not detected; pass auth_dependencies to declare custom guards.
  • Static analysis limits: routes registered dynamically, dependencies passed through variables, calls through self or injected objects, and SQL built at runtime are only partially captured.
  • export_graph_html loads vis-network from a CDN, so viewing the page requires internet access.
  • Runtime dependencies (middleware, lifespan events, startup hooks) are not visible to static analysis and won't appear in dependency trees.
  • get_completions is most useful at attribute access positions (e.g. after a .). On empty lines it returns all Python builtins.

Requirements

  • Python 3.11+
  • Claude Code (VS Code extension or CLI)

Author

Abdessamad Touzani

Metadata

Release files for fastapi-architect-mcp 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fastapi-architect-mcp 0.3.0
File Size Uploaded Provenance Actions
fastapi_architect_mcp-0.3.0.tar.gz 47.7 kB Without provenance Details for fastapi_architect_mcp-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for fastapi-architect-mcp 0.3.0
File Interpreter ABI Platform Actions
fastapi_architect_mcp-0.3.0-py3-none-any.whl Python 3 none any Details for fastapi_architect_mcp-0.3.0-py3-none-any.whl

Total release size: 90.0 kB

Release files / fastapi_architect_mcp-0.3.0.tar.gz

Download URL fastapi_architect_mcp-0.3.0.tar.gz
Size 47.7 kB
Tags Source
SHA-256 checksum
How to use checksums
059eed13a971c5f23775e752b30b81006f74337cf491bc5c5d30f8d9553b4ab0
BLAKE2b-256 checksum
How to use checksums
d83c05d9228d73efc2c17238d8b9f558d2025c5b6181fd9dc52b7c466873375c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / fastapi_architect_mcp-0.3.0-py3-none-any.whl

Download URL fastapi_architect_mcp-0.3.0-py3-none-any.whl
Size 42.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6f3a5bb4ccb19ba72995da322a43ac0bac235f0e265b5d71bf3b3de9dab1d2be
BLAKE2b-256 checksum
How to use checksums
9aec5535b21ce84e6e6ae935757d4d9cf1afcaa111b346a5beb144864776aa5a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.0 {"installer":{"name":"uv","version":"0.12.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Security for fastapi-architect-mcp 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page