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.
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 Servers → View 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
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.
Repo shape, entry points, and where the graph is blind — so you know when to grep.
Any text — symbol, keyword, stacktrace, failing test, or diff — → the ranked nodes that matter.
Blast radius: what a change affects or depends on, ranked and located, dead code flagged ⊘.
A feature end-to-end across the stack, or the path between two nodes.
A node's exact source, sliced from its file — plus who calls it and what tests it.
Rebuild the graph. Incremental, and it self-updates as you edit.
Say it in plain language to your assistant — repo-graph answers structurally, in one lookup, instead of grepping and reading files.
Cross-stack path in one hop — grep can’t link stacks.
Ranked blast radius, forward or backward, with likely-dead code flagged ⊘.
Entry point → handlers → data, each hop labelled — not a keyword guess.
Whole-repo structural map, capped to fit the context window.
The relevant cluster from a seed, ranked by relevance.
Paste the error; get the exact nodes it implicates, ranked.
Graph output for popular frameworks — what your assistant gets before it reads a single file.