v0.2.0
Pre-releaseDriven by two field reports from real work-PC usage: bulk metadata cost about
19x the tokens of the equivalent bash line, and SVN working copies were
invisible to the registry. A third report claim was checked and found false —
vcs data was never cached, only a misleading scanned_at field suggested it was.
Coverage
- Discovery indexes .svn working copies alongside .git; ProjectNode carries
vcs_type: 'git' | 'svn'. The svn binary is never invoked, so remote, branch
and is_clean stay null for those projects rather than being guessed. - New tool list_files(project, glob?) over
rg --files, respecting
.gitignore, filtering secret-pattern files, capped at 500 with a truncated
flag. Eleven tools total. - read_file takes optional offset and limit for line-based paging.
- search takes limit (default 50, max 500) and reports truncated. Previously
it capped silently at 100. - scanned_at dropped from project_info and from ProjectNode; the tool
description now states that vcs state is queried live on every call.
Token economy
- All structured responses are compact JSON. Pretty-printing cost 20-40% on
every reply. - list_projects takes include: ['branch','is_clean','stack'], so one call
answers a whole-group metadata sweep instead of N project_info calls. - list_projects returns a {fields, rows} matrix: rows are positional against
fields, so keys are paid once rather than once per project. Same shape with
and without include. This is a breaking change for any consumer that read
payload.projects[i].name.
Benchmark
A token benchmark drives the real server over stdio and compares every tool
against an information-equivalent bash command, counting through Anthropic's
count_tokens against a pinned model. Without credentials it counts UTF-8
bytes and labels itself DEGRADED rather than silently substituting a proxy.
Measured on claude-opus-5 over 42 projects in 16 groups, mcp vs bash:
map_workspace 0.51, list_groups 0.58, list_files 0.61, project_info 0.68,
read_file 1.01-1.03, find_project 1.42, list_projects sweep 1.70,
write_file 1.74, list_projects 1.77, search 2.15. Schema cost is 1886 tokens
once per session, repaid by roughly three map_workspace calls.
The bulk sweep is 1355 tokens against 15184 for 42 project_info calls, 11.2x
smaller, past the 10x design target. The matrix took that figure from 6.6x.
The list_projects rows stay above parity by design: their bash baselines
print strictly less than the tool returns, so near-parity is the ceiling.
Latency is unchanged and well inside budget: cold scan 87 ms, registry tools
under 1 ms, project_info 5.6 ms, search 6.7 ms. 109 tests, 100% statements,
branches, functions and lines.
Requires Node.js >= 22, git and ripgrep on PATH. Three runtime dependencies.
The README now documents three install routes — an npm pack tarball needing no
registry, credentials or CA trust; clone and build; and a private registry —
plus how to register the server with clients other than Claude Code.