npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

koragraphmcp

v0.2.0

Published

Local multi-repo code-graph MCP server

Readme

The ultimate context layer for your AI coding agent.

Completely free. Runs entirely on your machine.

A local knowledge graph of every repo you point it at, plus a memory layer that knows when the code it remembers has changed.

npm License: BUSL-1.1 Node.js >=22 MCP compatible Website

Install

npm install -g koragraphmcp
koragraph ingest /path/to/repo        # point it at as many repos as you like
claude mcp add koragraph -s user -- koragraph mcp

koragraph doctor checks the whole chain and prints the exact line for any editor.

Two ways to use it from here: your agent calls the tools over MCP, or you (or a script, or a Claude Code hook) run them straight from the shell, for example koragraph explore "how does checkout work" or koragraph blast src/pay.js. Same graph either way.

Then run KORAINIT in your editor

This is the step that lights up the memory layer, so don't skip it. In your coding agent (Claude Code, Cursor, Windsurf, whatever you use), tell it:

"Read KORAINIT.md and follow it."

It imports your existing CLAUDE.md / AGENTS.md into koragraph's memory, anchored to the code each rule is about, flags any rule that points at code that's already gone, and finishes wiring koragraph into the session. Run it once per project.

Prefer zero setup? Hand the whole thing to your agent instead. Paste this from the repo you want indexed, and it installs, indexes, wires itself in, and runs KORAINIT for you:

Install koragraph and set it up for this repo, then report back:
1. npm install -g koragraphmcp
2. koragraph ingest .
3. koragraph doctor, then run the `claude mcp add …` line it prints (or wire `koragraph mcp` into
   my editor's MCP config).
4. Find KORAINIT.md in the installed package (`npm root -g`, then koragraphmcp/KORAINIT.md) and
   follow it: it imports my existing CLAUDE.md / AGENTS.md into memory, verified against the code.
Report: nodes/edges indexed, whether the MCP connected, and KORAINIT's summary.

Adoption is highest on Claude Code: its hooks let koragraph put the graph in front of the agent on every turn, so it actually gets used instead of falling back to grep. Other editors reach koragraph over MCP, where the agent decides when to call it.


One map of everything you've built

Koragraph turns every repo you point it at into one live graph: a resolved structure, with an edge only where there really is one.

  • Every service, file, endpoint, and table.
  • The real calls between them, resolved against the syntax tree, not guessed by name.
  • The edges that cross a repo boundary, where single-repo tools go quiet.

A memory that knows when the code changed

Everything your agent learns is saved locally, anchored to the exact declaration, not a line number. Rename the code and the fact follows; delete it and the fact retires. No CLAUDE.md to maintain, and it survives every upgrade.

  • Failures and their fixes. The fix surfaces before you hit the same wall twice.
  • Hazards, rules, corrections. Stated once, honoured every session after.
  • The "let's push this to Wednesday." Deferrals and half-finished intent, parked against the code and surfaced the moment you're back.

Measurably the most accurate, scored by the compilers

Every graph is graded by an independent compiler front-end (CPython ast, go/parser, Roslyn, syn, tsc, Ripper, php-ast, ctags, swiftc), never the tool under test. koragraph wins 34 of 39 language×plane cells, and leads precision on all 39.

Call-graph recall, the hardest plane:

| Language | koragraph | CodeGraph | GitNexus | Graphify | |---|:--:|:--:|:--:|:--:| | JavaScript | 87.6 | 39.4 | 41.9 | 45.1 | | TypeScript | 70.6 | 55.2 | 50.2 | 44.2 | | Python | 86.1 | 85.1 | 54.6 | 53.3 | | Go | 89.1 | 85.0 | 63.8 | 65.3 | | Java | 86.0 | 73.1 | 68.6 | 53.5 | | C# | 83.6 | 79.8 | 50.5 | 54.4 | | PHP | 88.9 | 88.0 | 77.1 | 31.7 | | Ruby | 51.5 | 41.3 | 28.7 | 40.8 | | Rust | 68.7 | 76.5 | 48.9 | 47.6 |

Reproduces from test/benchmark: pinned corpus, pinned competitor versions, pinned oracles. Full breakdown in test/benchmark/REPORT.md.


The tools

Nine tools, reachable two ways: as MCP tools in your editor, and as CLI commands in your shell. On Claude Code a hook also calls the CLI to push the relevant slice into context on every turn, so the graph gets used whether or not the agent thinks to ask. Every tool returns file:line, never pasted source. Exactly one writes.

| Tool | Shell | What it's for | |---|---|---| | blast_radius | koragraph blast <files…> | Run before editing. Everything that depends on this, across repos, and what has no test coverage. | | explore | koragraph explore "<symbol or phrase>" | Ranked declarations, source, callers, callees, in one call. | | search_code | koragraph search <name> | Find a name in the graph, not raw text. | | neighbours | koragraph neighbours <symbol> | Callers and callees of one symbol. | | changes_with | koragraph cochange <symbol> | What has historically shipped together with a symbol. | | file_symbols | koragraph symbols <file> | Declarations in one file. | | overview | koragraph overview | Orient on turn one, across every repo. | | recall | koragraph recall <symbol> | A past failure and its fix, a hazard, an open loop. | | remember | koragraph remember "<fact>" | Save a durable, code-anchored fact. The only writer. |

Every query verb takes --format compact|json|paths and --budget <tokens>, so a result can be trimmed before it ever enters an agent's context. Plus the operational CLI: ingest, serve, status, doctor, diff, trace, hooks, practice, report.


Languages

c · c++ · c# · go · java · javascript · php · python · ruby · rust · swift · typescript / tsx, fully resolved, tree-sitter throughout. Plus experimental kotlin · scala · elixir · solidity · vue · zig · objective-c · ocaml · rescript.


License

BUSL-1.1. Free to use, including at work. Converts to Apache-2.0 on the change date.