Skip to main content
Glama
isac322

pi-codegraph

by isac322

@isac322/pi-codegraph

CodeGraph tools for Pi and OMP, with worktree-aware index lifecycle management.

Why this package

The extension exposes CodeGraph's structural tools with native Pi metadata and rendering while keeping OMP on its native MCP path. Indexes are separated per worktree, stored centrally, synchronized automatically, identity-checked, and garbage-collected after worktrees disappear.

Related MCP server: codegraph

Install

Pi

pi install npm:@isac322/pi-codegraph

OMP

omp install @isac322/pi-codegraph
omp plugin list

Restart OMP or run /reload-plugins after installation. omp install uses the user scope by default.

OMP loads the package-local .mcp.json and omp.extensions entry. Pi loads pi.extensions and starts the internal MCP facade at session start, never during extension discovery.

The package installs @colbymchenry/codegraph@1.4.1 as an optional dependency and falls back to a codegraph executable on PATH.

Node.js 22.19 through Node 24 is required. OMP itself may run under Bun, but it starts this package's compiled MCP facade with the node command declared in .mcp.json; MCP child processes do not inherit or need to match the host agent's runtime.

The repository contains TypeScript source only. Release builds compile it into dist, and the npm tarball includes the compiled JavaScript, declarations, and source maps rather than the TypeScript runtime source.

Tools

  • codegraph_explore: broad architecture and flow exploration

  • codegraph_search: symbol-name lookup

  • codegraph_node: one known symbol and its relationships

  • codegraph_files: indexed project structure

  • codegraph_callers: inbound calls

  • codegraph_callees: outbound calls

  • codegraph_impact: transitive change impact

  • codegraph_status: CodeGraph index health

Pi adds compact call/result rendering and /codegraph status|sync|doctor|gc.

Worktrees

Each worktree gets a distinct database. New indexes are stored under the configured central index store and exposed to CodeGraph through the worktree's .codegraph symlink. Existing real .codegraph directories remain in place and receive identity metadata.

A project path is accepted only when it is inside an allowed root or resolves to a worktree with the same Git common directory as the session root. Repository and worktree identities are checked before an index is reused. Missing or replaced worktrees fail closed.

Configuration

Global configuration is read from ~/.config/pi-codegraph/config.json, or from PI_CODEGRAPH_CONFIG.

{
  "autoSync": true,
  "autoGc": true,
  "indexStore": "/home/me/.cache/pi-codegraph",
  "workerIdleTimeoutMs": 300000,
  "maxWorkers": 6,
  "requestTimeoutMs": 30000,
  "syncMinIntervalMs": 15000,
  "maxOutputChars": 60000,
  "allowedProjectRoots": ["/work/company"],
  "promptInjection": true,
  "codegraphExecutable": ""
}

Environment overrides:

  • PI_CODEGRAPH_AUTO_SYNC

  • PI_CODEGRAPH_AUTO_GC

  • PI_CODEGRAPH_INDEX_STORE

  • PI_CODEGRAPH_WORKER_IDLE_MS

  • PI_CODEGRAPH_MAX_WORKERS

  • PI_CODEGRAPH_REQUEST_TIMEOUT_MS

  • PI_CODEGRAPH_SYNC_MIN_INTERVAL_MS

  • PI_CODEGRAPH_MAX_OUTPUT_CHARS

  • PI_CODEGRAPH_ALLOWED_ROOTS

  • PI_CODEGRAPH_PROMPT_INJECTION

  • PI_CODEGRAPH_EXECUTABLE

PI_CODEGRAPH_ALLOWED_ROOTS uses the platform path delimiter.

Runtime behavior

  • Pi defers process startup until session_start and closes all resources on session_shutdown.

  • OMP uses one package-local MCP facade and project-scoped CodeGraph workers.

  • Workers are capped, evicted by least-recently-used idle order, and terminated after the idle timeout.

  • Tool cancellation and timeout propagate to the worker. Diagnostics are ANSI-stripped, size-limited, and redact common token and secret forms.

  • codegraph_files accepts absolute in-project paths and ~, normalizing them to repo-relative POSIX prefixes.

  • Large results are bounded and retain both their beginning and end with an explicit truncation marker.

Development

npm ci
npm run typecheck
npm run build

npm pack and local npm publish run the build through prepack. The release workflow installs locked dependencies, typechecks, builds dist, and publishes that distribution through npm OIDC.

Security

Pi checks project trust before initialization or tool execution. The MCP facade resolves real paths and restricts access to the active workspace, sibling worktrees of the same repository, and explicitly configured roots.

The npm package declares the pi-package keyword and an explicit pi.extensions manifest. After npm publication, Pi's package gallery can index it at pi.dev/packages.

Releases are managed by Release Please. Conventional commits on main update a release PR. Merging that PR updates package.json and CHANGELOG.md, creates the version tag and GitHub Release, and publishes the package through npm trusted publishing in the same workflow. See CONTRIBUTING.md for the version rules and release process.

Use fix: for patch releases, feat: for minor releases, and a ! or BREAKING CHANGE: footer for major releases. Configure the npm trusted publisher with GitHub owner isac322, repository pi-codegraph, workflow filename publish.yml, no environment, and the npm publish action.

Shared daemon lifecycle

All Pi and OMP sessions that use the same indexStore attach to one CodeGraph daemon. Each tool request forwards its canonical projectPath, so the daemon can serve multiple repositories and Git worktrees without merging their indexes.

maxWorkers controls the shared daemon's query worker count. workerIdleTimeoutMs controls how long the daemon remains alive after the last Pi or OMP client disconnects; the default is five minutes. Set the same indexStore for every session that should share a daemon.

License

MIT

Available Tools

1 tool
codegraph_statusB

Report CodeGraph index health and pending synchronization state.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathNoAbsolute path to the target project or worktree. Pi fills this with the active cwd when omitted; OMP child agents should pass their exact worktree path.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. The word 'Report' implies a read-only operation, but the description does not explicitly state that the tool is non-destructive, does not require authentication, or has any other behavioral constraints. For a read-only tool, this is a minimal but insufficient disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that directly states the tool's purpose. There is no extraneous information, and it achieves front-loading of the core function. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one optional parameter, no output schema), and the description explains the purpose but not the expected output format or example values. Without an output schema, a brief note on what the report contains (e.g., 'Returns health status: green/yellow/red') would improve completeness. As is, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'projectPath' already fully documented in the schema. The tool description adds no additional parameter information, but the baseline score is 3 when schema coverage is high. The description does not compensate for any gaps, nor is it necessary.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Report CodeGraph index health and pending synchronization state.' It uses a specific verb ('Report') and identifies the resource ('CodeGraph index health and pending synchronization state'). With no sibling tools listed, differentiation is not required, and the purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, nor does it specify prerequisites or exclusions. There are no sibling tools to reference, but even a brief note on typical scenarios (e.g., 'Use to check if indexing is complete') would improve this dimension.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.3.1
    • First observedcodegraph_status

TDQS

B3.4/5.0
Disambiguation5/5

With only one tool, there is no potential for confusion or ambiguity among tools.

Naming Consistency5/5

Single tool name follows a clear pattern (codegraph_status), consistent with itself.

Tool Count2/5

A single tool is too few for meaningful interaction; suggests insufficient scope for a standalone server.

Completeness2/5

Only one reporting tool; missing core operations like querying, updating, or managing the code graph.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/isac322/pi-codegraph'

If you have feedback or need assistance with the MCP directory API, please join our Discord server