Context Bunker MCP
by tonghaoch
README.md
# Context Bunker MCP šļø
[](https://github.com/tonghaoch/context-bunker-mcp/actions/workflows/build-and-test.yml)
> **Stop wasting tokens on orientation.** Pre-computed codebase intelligence for AI coding tools. One command. Code never leaves your machine.
## What is this?
AI coding agents spend [~80% of tokens just figuring out where things are](https://earezki.com/ai-news/2026-02-26-how-i-cut-my-ai-coding-agents-token-usage-by-65-without-changing-models/) ā re-reading files, tracing imports, grepping for symbols. Every. Single. Session.
Context Bunker fixes this. It's an [MCP](https://modelcontextprotocol.io/) server that indexes your codebase using **tree-sitter AST parsing** and gives your AI tools instant access to structural intelligence ā dependency graphs, call trees, dead code, cross-session diffs ā all from a local SQLite database.
**One call replaces 8-16 grep/read calls. ~90% token savings. Zero cloud. Zero API keys.**
Works with Claude Code, Cursor, Windsurf, Copilot, and any MCP-compatible client.
> **Why not just grep?** Grep finds text. Context Bunker understands **structure** ā dependency graphs, cross-session memory, dead code detection, and token-efficient summaries. Things grep structurally can't do. [Full comparison](./docs/cli-comparison.md).
## Setup
### Install
```bash
# Run directly ā no install needed
bunx context-bunker-mcp /your/project
# Or install globally
bun install -g context-bunker-mcp
# No Bun? npx / npm work too
```
### Add to your AI tool
**Claude Code:**
```bash
# With a project (auto-indexes on startup)
claude mcp add context-bunker -- bunx context-bunker-mcp /your/project
# Without a project (AI calls set_project dynamically)
claude mcp add context-bunker -- bunx context-bunker-mcp
# No Bun? npx work too
```
**Cursor / Windsurf / VS Code** ā add to `settings.json`:
```json
{
"mcpServers": {
"context-bunker": {
"command": "bunx",
"args": ["context-bunker-mcp", "/your/project"]
}
}
}
```
## Tools (16)
| Tool | What it does |
|------|-------------|
| š„ `get_changes_since_last_session` | What changed since the AI last looked. No more re-orientation. |
| š„ `find_unused_exports` | Dead code detection ā exported but never imported anywhere. |
| š„ `find_unused_code` | Find dead internal code ā functions, classes, variables, types never referenced. |
| š„ `get_file_summary` | File overview in ~50 tokens. Scan 10 files for the cost of 1. |
| š„ `search_by_pattern` | Find structural patterns: HTTP calls, env access, error handlers, async, TODOs. |
| š§ `get_smart_context` | Full file context in 1 call ā imports, exports, dependents, types, tests. |
| š§ `get_dependency_graph` | "If I change this, what breaks?" ā transitive import graph with depth control. |
| š§ `find_symbol` | AST-aware symbol search by name, kind, and scope. Not text matching. |
| š§ `find_references` | Where a symbol is used, classified by kind (import, call, type annotation). |
| š§ `get_call_graph` | What a function calls, recursively, as a tree. |
| š§ `get_symbol_source` | Extract one definition ā not the whole file. 80% token savings. |
| š§ `get_project_map` | Architecture overview: modules, public APIs, relationships. |
| š§ `set_project` | Point the index at any project directory on the fly. |
| š§ `search_code` | Semantic search via local TF-IDF. No API keys needed. |
| š§ `reindex` | Force re-index of the codebase or a single file. |
| š§ `get_status` | Index health, file counts, token savings estimate. |
š„ Unique š§ Core Intelligence š§ Housekeeping
## Language Support
TypeScript, JavaScript (TSX/JSX/MTS/CTS), Python, Go, Rust, Java, C#
Powered by tree-sitter WASM grammars. Adding a new language = one extractor file in `src/languages/`.
## Tech Stack
| | |
|---|---|
| **Runtime** | Bun (Node.js fallback) ā `bun:sqlite` = zero native deps, 4-10x faster startup |
| **MCP** | `@modelcontextprotocol/sdk` |
| **AST** | `web-tree-sitter` (WASM) ā no native bindings, works everywhere |
| **Storage** | SQLite (WAL mode) ā single file, survives restarts |
| **Search** | TF-IDF (local) ā zero API keys, no cloud |
| **Watch** | `chokidar` ā incremental re-index on file changes |
## Storage
The index lives in your OS cache directory ā **not** inside the project. No `.gitignore` needed.
| Platform | Location |
|----------|----------|
| macOS | `~/Library/Caches/context-bunker/<project>/index.db` |
| Linux | `~/.cache/context-bunker/<project>/index.db` |
| Windows | `%LOCALAPPDATA%\context-bunker\<project>\index.db` |
Want it inside the project instead? Use `--local` or set `{ "storage": "local" }` in `.context-bunker.json`.
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues