pi-cmp
Codebase Memory for pi. Provides cbm_* tools that answer structural questions about a codebase (symbol search, call chains, architecture, git change blast radius, and more) by querying a local tree-sitter knowledge graph, avoiding slow grep/read fallbacks.
README
pi-cmp · Codebase Memory
Codebase Memory tools (cbm_*) for pi. They answer structural questions about a codebase from a local tree-sitter knowledge graph — before pi falls back to slow grep/read loops.
The extension proxies each tool call to the codebase-memory-mcp server, which maintains a graph of symbols, call chains, and relationships per project.
Quick start
cd /path/to/this/repo
pi install "$(pwd)"
Then /reload in pi (or restart pi) and verify:
pi list
What's included
Extension tools only — no MCP configuration to maintain. The extension spawns and talks to the local codebase-memory-mcp server itself.
| Tool | Description |
|---|---|
cbm_search_graph |
Symbol search by name pattern or natural-language query |
cbm_trace_path |
Call chains: who calls a function (inbound), what it calls (outbound) |
cbm_get_code_snippet |
Full source for one symbol with metrics |
cbm_get_architecture |
High-level codebase overview (languages, entry points, hotspots) |
cbm_search_code |
Literal text / exact identifier search over indexed files |
cbm_get_graph_schema |
Node/edge labels and relationship patterns |
cbm_query_graph |
Read-only openCypher queries |
cbm_detect_changes |
Map git changes to affected symbols with blast radius |
cbm_list_projects |
All indexed projects with node/edge counts |
cbm_index_status |
Index health (indexed, stale, or missing) with git-HEAD freshness proof |
cbm_index_repository |
Index a repository (one-time; auto-sync keeps it fresh) |
cbm_delete_project |
Remove a project from the knowledge graph (requires UI confirmation) |
cbm_manage_adr |
Create, update, or read Architecture Decision Records |
cbm_ingest_traces |
Ingest runtime traces to validate service-to-service edges |
Requirements
- Node.js 22.19.0 or newer
- The
codebase-memory-mcpserver binary onPATH, or point theCBM_BINARYenvironment variable at it
codebase-memory-mcp is a separate project; install it from its own source before using these tools.
Usage
1. Start pi inside a project
cd /path/to/project
pi
2. Index the project (once)
Ask pi:
Index this project with cbm_index_repository.
Subsequent queries use the local .codebase-memory/ index in the project.
3. Ask structural questions
Good prompts:
Use Codebase Memory. Explain how authentication reaches the request handler.
Use Codebase Memory. What calls PlanBoostSession?
Use Codebase Memory. What would break if I change UserRepository?
Use Codebase Memory. Show files under internal/services and important symbols.
Tool choice
cbm_get_architecture/cbm_search_graphfor broad "how does this work?" questionscbm_trace_pathwhen you already know a function name and want callers/calleescbm_search_graphfor declarations and symbol names, not arbitrary textcbm_search_codefor literal text, exact identifiers, or distinctive stringscbm_detect_changesbefore refactors — blast radius of uncommitted changes
How it works
pi extensions are not MCP configuration files. This package registers native pi tools, and each tool proxies one JSON-RPC request to the local codebase-memory-mcp process over stdio:
pi agent
-> pi-cmp extension tool
-> codebase-memory-mcp process (cwd = your project)
-> .codebase-memory/ graph database in the current project
-> structured result back to pi
Additional behavior:
- On
session_startthe project cache is reset;before_agent_startinjects tool-choice guidance into the system prompt. - Tools default to the project matching pi's current working directory; pass
projectexplicitly (seecbm_list_projects) to query others. cbm_index_statuscompares the indexed git HEAD against the repository's current HEAD for real freshness proof (no fabricated timestamps).cbm_delete_projectrequires interactive confirmation when pi has a UI.- Long-running tools (
cbm_index_repository) use a 10-minute timeout; others default to 20 seconds. Errors surface as diagnostics with secrets redacted.
Development
npm install
npm run typecheck # tsc --noEmit
npm test # vitest run
Install the local checkout into pi:
pi install /path/to/pi-cmp
Repository layout
pi-cmp/
├── extensions/ # extension source only (logic lives here)
│ ├── index.ts # entry point: registers tools, injects guidance
│ ├── tools.ts # cbm_* tool definitions (typebox schemas)
│ ├── mcp-client.ts # spawns codebase-memory-mcp, JSON-RPC over stdio
│ ├── project.ts # project resolution from list_projects output
│ └── sync-check.ts # git-HEAD freshness annotation for index_status
├── __tests__/ # vitest tests (mirror the files above)
├── package.json # pi manifest: "pi": { "extensions": ["./extensions"] }
└── tsconfig.json
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.