Stop grepping.
Give agents a code graph.

Exact code references for AI coding agents, over MCP.

npx graph-indexer init
  • 99.7% grep 12.8%
  • 12/12 9/12 without
  • 16% cheaper than no index

Clean context. Better answers.

Because 99.7% of its references are real (grep: 12.8%), your agent's context is signal, not noise: fewer tokens, more accurate answers.

grep
12.8% real references
Graph Indexer
99.7% real references

Powers your agent didn't have.

Know every real caller, see the blast radius before you edit, catch breakage before running, map callers and callees.

  • find_references Every real use, nothing else
  • change_impact Blast radius before you edit
  • check_changes Verify edits without building
  • call_graph Callers and callees, mapped

Exact. Cheaper. Instant.

More right answers, lower costs, instant lookups. Measured on real repos and Claude Code sessions.

  • 12 of 12 code questions answered exactly in real Claude Code sessions on nestjs, against 9 of 12 without Graph Indexer.
  • Code questions were about 16% cheaper with Graph Indexer than with no index, in 24 real Claude Code tasks.
  • Graph Indexer indexes more than 45,000 lines of code per second: the 2.3 million line Twenty monorepo, 28,512 files, in 51 seconds.
  • Graph questions such as find references, call graph and change impact are answered in under 4 milliseconds on nestjs (1.1 to 3.7 ms, median of 5 warm calls).

Four steps, nothing to set up.

Re-synced before every answer, so nothing is stale.

  1. Parse tree-sitter
  2. Bind exact refs
  3. Store SQLite
  4. Answer MCP

Measured, not claimed.

Scored against compilers and real Claude Code sessions.

Real references found
RepositoryLanguagegrepGraph Indexer
nestjsTypeScript12.8%99.7%
TwentyTypeScript0.9%99.9%
ginGo23.8%100%
caddyGo8.5%100%
nats-serverGo23.2%99.2%
petclinicJava60.9%99.4%
jsoupJava9%96%
commons-collectionsJava1.5%95.5%

It never phones home.

Your agent still sends what it reads to its model provider.

  • No network
  • No model
  • Zero dependencies
  • Read-only tools

One command. Ten agents.

npx graph-indexer init
  • Node 22.5+
  • MIT
Setup guide
Claude plugin

Now a Claude Code plugin.

  1. Add the marketplace /plugin marketplace add MaquinaTech/graph-indexer
  2. Install the plugin /plugin install graph-indexer@graph-indexer

Bundles the MCP server, hooks and a structural helper sub-agent.

Plugin guide

Quick answers.

How is it different from grep?

grep matches names; Graph Indexer binds each use to its definition. On 400 nestjs symbols, 99.7% of its references were real versus 12.8% for grep. Recall is slightly lower (96.2% vs 99.3%).

Does it use embeddings or an LLM?

No. Search is lexical plus graph, so no model is downloaded or called, and there are no embeddings or rerankers.

Which languages work?

16 bundled tree-sitter grammars: 15 languages plus TSX. Deepest support for TypeScript, JavaScript, Python, Go, Java, C# and Rust; accuracy is verified against the TypeScript, Go and Java type checkers.

Does my code leave my machine?

Graph Indexer makes no network calls and sends no telemetry. Your agent still sends what it reads to its model provider. The index is git-ignored; treat it like your repository.

Does it make agents cheaper?

On code questions and refactors, about 16% and 14% cheaper than no index in real Claude Code sessions. Fixing real issues showed no measurable saving. Samples are small.

What can't it do?

It is not a type checker: generics, reflection, any and dependency-injection tokens are only partly visible. Tools flag same-name call sites they could not bind. Java is the weakest language measured.

All questions

Try it on your repo.

npx graph-indexer init
Star on GitHub