Slnmap 0.12.0
dotnet tool install --global Slnmap --version 0.12.0
dotnet new tool-manifest
dotnet tool install --local Slnmap --version 0.12.0
#tool dotnet:?package=Slnmap&version=0.12.0
nuke :add-package Slnmap --version 0.12.0
Slnmap
Slnmap (sln-map) — a semantic map of your .sln for AI coding agents.
Open source under the MIT license. Source, issues, and full docs: github.com/EMahmoudNabil/slnmap
Your AI agent can't refactor .NET code it can't see. Ask an agent "what breaks if I change this interface?" and it guesses from the files in its context — missing callers in other projects and files it never opened. Slnmap gives the agent a precise, compiler-accurate map of your whole solution, so it answers correctly: every caller, every implementation, across every project. It runs locally and serves the map to your agent or editor over MCP.
Quickstart
1. Install (requires the .NET SDK 9.0+):
dotnet tool install --global Slnmap
2. Analyze your solution (builds slnmap.db in the current folder):
slnmap analyze path/to/YourSolution.sln
3. Connect your MCP client. For Claude Code, add this to .mcp.json, using an absolute path to
the slnmap.db you just built:
{
"mcpServers": {
"slnmap": {
"command": "slnmap",
"args": ["serve", "--db", "C:/path/to/your/project/slnmap.db"]
}
}
}
The tools
The server exposes fifteen read-only tools — find_symbol, get_dependencies, impact_analysis,
get_architecture_overview, find_usages, find_implementations, get_type_hierarchy,
find_tests_for_symbol, get_project_dependencies, find_circular_dependencies,
get_symbol_source, list_endpoints, find_endpoint, find_orphan_calls, and
list_frontend_callsites (full descriptions in the
README).
For an interface, impact_analysis follows both the interface's callers and its concrete
implementations/overrides — across projects, in files nobody has open. HTTP endpoints are
first-class graph nodes — from ASP.NET Core Minimal APIs (v0.7.0) and attribute-routed controllers
(v0.8.0): ask "which endpoint serves /api/vendors/42?" or "what breaks if I change this handler?"
and get the actual route back.
There's also slnmap viz: exports the graph as a single self-contained, interactive HTML file —
no server, no CDN, works offline. And slnmap watch (v0.10.0): analyze once, keep the workspace
warm, and re-analyze on every file save — a one-file change lands in the database in about a
second on a 10-project solution, and a slnmap serve running beside it keeps answering from the
same file, so your agent's answers stay fresh while you type.
And slnmap analyze-ts (v0.11.0): adds TypeScript/React frontend HTTP call sites to the same
graph — resolved route templates and an honestly-labeled unresolved bucket, six named reasons,
never a guess. Requires Node 18+; the extractor itself is fetched via npx automatically.
And slnmap link (v0.12.0): joins those frontend call sites to the C# endpoints they actually
hit, deterministically — after which impact_analysis on a handler surfaces the exact frontend
call sites that break, and find_orphan_calls names every one that doesn't match anything, by
exact reason, never a guess.
Privacy
100% local — and now you can verify it. No telemetry, no cloud service; analyze/watch/
serve/viz/status/doctor make no network calls at all. One documented exception:
analyze-ts fetches its extractor from the public npm registry via npx (skip it to stay fully
offline). Now that the CLI and MCP server are open source, the claim is auditable.
License & support
Slnmap is open source under the MIT license. The CLI and MCP server are MIT-licensed and will stay that way. Future hosted or team-oriented features may be commercial.
For questions or to report an issue, open a GitHub issue or contact hello@slnmap.dev.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
This package has no dependencies.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.12.0 | 39 | 8/22/2026 |
| 0.11.0 | 48 | 8/22/2026 |
| 0.10.0 | 50 | 8/21/2026 |
| 0.9.0 | 47 | 8/21/2026 |
| 0.8.2 | 106 | 8/14/2026 |
| 0.8.1 | 85 | 8/14/2026 |
| 0.8.0 | 93 | 8/12/2026 |
| 0.7.0 | 93 | 8/12/2026 |
| 0.6.1 | 89 | 8/8/2026 |
| 0.6.0 | 93 | 8/8/2026 |
| 0.5.0 | 103 | 8/7/2026 |
| 0.4.0 | 120 | 7/23/2026 |
| 0.3.0 | 107 | 7/22/2026 |
| 0.2.1 | 113 | 7/19/2026 |
| 0.2.0 | 104 | 7/18/2026 |
| 0.1.9 | 98 | 7/18/2026 |
| 0.1.8 | 104 | 7/18/2026 |
| 0.1.7 | 99 | 7/18/2026 |
| 0.1.6 | 107 | 7/17/2026 |
| 0.1.5 | 102 | 7/17/2026 |
New: `slnmap link` -- the cross-stack linker, the final piece of the
frontend-analysis project. Joins every FrontendCallSite (v0.11.0) to the C# Endpoint (v0.7.0/
v0.8.0) it actually hits: exact verb matching (an honestly-unresolvable verb is disclosed, never
guessed), route-precedence tie-breaking scoped to the one case it's actually knowable (a literal
call site beats a parameterized sibling endpoint), and a truthful set edge for real runtime
fan-out and irreducible ambiguity alike -- never a guessed single link. impact_analysis and
find_usages now continue straight through a C# handler into its frontend callers with no
separate query. Two new MCP tools, find_orphan_calls and list_frontend_callsites, close the
remaining coverage/listing gaps. Field-trial verified against a real, live production codebase:
407 of 434 real call sites (93.8%) link deterministically or via the precedence rule; every one
of the rest is individually disclosed by exact reason, including the specific production bug
that motivated this entire project. See CHANGELOG.md for details.
Source: https://github.com/EMahmoudNabil/slnmap