repo-graph

A structural map of your codebase for AI coding assistants.

The model navigates to the right files by structure — instead of reading your whole repo or guessing. Works in any MCP client.

$ pip install mcp-repo-graph

Same bug, same model, same prompt — the only difference is whether repo-graph is installed.

Watch — same model, same prompt

The same bug, fixed two ways — with and without repo-graph.
~10× less context, every task.

Install — pick your client

One command — registers the server for the current project:

claude mcp add repo-graph -- uvx mcp-repo-graph --repo .

Or install as a plugin (bundles config + usage instructions):

claude plugin marketplace add James-Chahwan/repo-graph
claude plugin install repo-graph@james-chahwan

Install the extension (it wraps the MCP server and works in Chat):

code --install-extension james-chahwan.repo-graph

Or search repo-graph in the Extensions marketplace.

Add to your MCP config (~/.cursor/mcp.json or Windsurf's MCP settings):

{
  "mcpServers": {
    "repo-graph": {
      "command": "uvx",
      "args": ["mcp-repo-graph", "--repo", "."]
    }
  }
}

One command:

codex mcp add repo-graph -- uvx mcp-repo-graph --repo .

Or add to ~/.codex/config.toml:

[mcp_servers.repo-graph]
command = "uvx"
args = ["mcp-repo-graph", "--repo", "."]

Verify with /mcp in the Codex TUI.

One command:

gemini mcp add repo-graph uvx mcp-repo-graph --repo .

Or add to ~/.gemini/settings.json:

{
  "mcpServers": {
    "repo-graph": {
      "command": "uvx",
      "args": ["mcp-repo-graph", "--repo", "."]
    }
  }
}

Restart Gemini CLI; check with /mcp.

In the editor: agent panel → Manage MCP ServersView raw config, then add to mcp_config.json:

{
  "mcpServers": {
    "repo-graph": {
      "command": "uvx",
      "args": ["mcp-repo-graph", "--repo", "."]
    }
  }
}

Save, then refresh under Installed MCP Servers. (Remote servers use serverUrl; a local one like this uses command/args.)

Download the desktop extension and open it with Claude Desktop:

github.com/James-Chahwan/repo-graph → mcpb/repo-graph-*.mcpb

Or add the same mcpServers block (see “Any MCP client”) to your Claude Desktop config.

repo-graph speaks standard MCP over stdio. Point any client at:

{
  "mcpServers": {
    "repo-graph": {
      "command": "uvx",
      "args": ["mcp-repo-graph", "--repo", "."]
    }
  }
}

Listed on the MCP Registry as io.github.James-Chahwan/repo-graph.

Zero-install run (recommended):

uvx mcp-repo-graph --repo /path/to/your/repo

Or install, then run the server pointed at a repo:

pip install mcp-repo-graph
repo-graph --repo /path/to/your/repo

What it does

repo-graph parses your codebase with tree-sitter and builds a lightweight graph of what exists, how things connect, and where the entry points are — across 20+ languages and frameworks, frontend to backend. Your assistant queries the graph, finds the minimal set of files it needs, and reads only those. Less context burned, fewer wrong guesses, faster answers — for you and the model.

Six tools — one verb each, backed by the Rust engine. Every call returns a complete, ranked, located answer in one shot, so your assistant doesn't spiral through a dozen lookups.

orient

Repo shape, entry points, and where the graph is blind — so you know when to grep.

find

Any text — symbol, keyword, stacktrace, failing test, or diff — → the ranked nodes that matter.

impact

Blast radius: what a change affects or depends on, ranked and located, dead code flagged ⊘.

trace

A feature end-to-end across the stack, or the path between two nodes.

read

A node's exact source, sliced from its file — plus who calls it and what tests it.

refresh

Rebuild the graph. Incremental, and it self-updates as you edit.

What you can ask

Say it in plain language to your assistant — repo-graph answers structurally, in one lookup, instead of grepping and reading files.

“Where does this frontend action end up in the backend?”

trace

Cross-stack path in one hop — grep can’t link stacks.

“What breaks if I change this component?”

impact

Ranked blast radius, forward or backward, with likely-dead code flagged ⊘.

“Show me how the login feature flows.”

trace

Entry point → handlers → data, each hop labelled — not a keyword guess.

“Get enough context to work in this repo.”

orient

Whole-repo structural map, capped to fit the context window.

“Find everything related to billing.”

find

The relevant cluster from a seed, ranked by relevance.

“Here’s a stacktrace — where do I even start?”

find

Paste the error; get the exact nodes it implicates, ranked.

See it on real repos

Graph output for popular frameworks — what your assistant gets before it reads a single file.