You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Token-efficient code navigation tools — six new read-only MCP tools that let an AI agent
retrieve precise structural/semantic information via Roslyn instead of reading whole files
(source code typically dominates an agent's token budget):
search_symbols — find symbols by wildcard/substring name pattern, or outline a single file
get_symbol_info — a symbol's kind, accessibility, modifiers, signature, base types,
interfaces, XML docs, and definition location (optionally its source) — the compact
"go to definition" payload
find_references — every use site of a symbol across the solution, as location + snippet
find_implementations — implementations of an interface/member, overrides, or derived types
get_call_graph — a depth-bounded caller/callee graph with cycle detection
get_type_hierarchy — a type's base-class chain, interfaces, and derived types
Surgical code-editing tools — two new write tools that emit a member-level change (not a
whole-file rewrite), keeping the tokens an agent produces proportional to the change. Both
default to preview mode (previewOnly: true) like ApplyFixes, so nothing is written to disk
unless the caller passes previewOnly: false explicitly:
edit_member — replace, add, or delete a single type member
rename_symbol — rename a symbol and update every reference across the solution (Roslyn rename)
IProjectLoader/ProjectLoader service that loads a project — and its containing solution when
present, so references and renames span projects — into a fresh workspace per call, plus ICodeNavigationService and ICodeEditService and their response models.
Token-savings benchmark (RoselineMCP.TokenBenchmark) — a reproducible harness that runs the
real services against RoselineMCP's own source and measures each tool's output against the source
an agent would otherwise read, tokenized with cl100k_base. Systematic sweeps; results stamped with
commit + date. Reproduce with dotnet run --project RoselineMCP.TokenBenchmark -c Release.
Documentation site (website/, Astro) with an overview, the tool reference, and the honest
benchmark (charts + methodology + limitations), deployed to GitHub Pages via .github/workflows/deploy-docs.yml. Across 477 navigation tasks the read-only tools showed a
pooled 81% / median 74% token reduction versus reading the corresponding files.
Changed
search_symbols file outline is now token-lean. The benchmark caught the outline costing
tokens (it repeated the file path and fully-qualified name on every symbol); it now returns a
lean projection (name, kind, signature, line), flipping its median from −45% to +30%. SymbolSummary also omits null fields from its JSON. Project-wide search is unchanged.
Fixed
dnx-based installs pulled an ancient 1.0.0..mcp/server.json hardcoded version/ packages[0].version at 1.0.0 — a version that was never released (releases start at 1.2.0)
— so any client resolving the MCP manifest was told to fetch 1.0.0. Worse, despite PackageType=McpServer the manifest was never packed into the .nupkg (it lives at the repo
root with no <None Include> wiring it in), so the McpServer package shipped without its own
manifest. Fixed by: (1) correcting the manifest to the current release, (2) packing ../.mcp/server.json into the package at .mcp/server.json, and (3) stamping the version into
the manifest from the release tag in publish-nuget.yml (mirroring MinVerVersionOverride) so
it can never drift out of lockstep with the package version again.