dotMCP 0.4.0
See the version list below for details.
{ "servers": { "dotMCP": { "type": "stdio", "command": "dnx", "args": ["dotMCP@0.4.0", "--yes"] } } }
.vscode/mcp.json settings file.
dotnet tool install --global dotMCP --version 0.4.0
dotnet new tool-manifest
dotnet tool install --local dotMCP --version 0.4.0
#tool dotnet:?package=dotMCP&version=0.4.0
nuke :add-package dotMCP --version 0.4.0
dotMCP
MCP server that exposes a C# solution as a semantic graph over Roslyn, instead of requiring an LLM agent to grep files and re-parse text on every step.
What it's for
Connect this server to an MCP-capable client (Claude Code, VS Code + Copilot, Cursor, etc.) so the agent can navigate, analyze, and edit a C# solution through typed tool calls (get_type, get_call_graph, find_writes, rename_symbol, concurrency_audit, search_code, find_duplicates, tests_run, and more) instead of raw file search-and-replace.
All tool responses are TOON-encoded (Token-Oriented Object Notation, spec v3): the same facts as JSON with camelCase keys and nulls omitted, at a fraction of the token cost — uniform result lists collapse into one header plus tabular rows.
See the repository at https://github.com/QsROg8320/SharpMCP —
.claude/skills/dotmcp-tools/SKILL.md there documents all 63 tools with real
tested examples, argument constraints, and known gaps.
Usage via NuGet (dnx)
VS Code / clients that use a "servers" config block:
{
"servers": {
"dotMCP": {
"type": "stdio",
"command": "dnx",
"args": ["dotMCP@0.4.0", "--yes"]
}
}
}
qwen-code / Pi Coding Agent / other clients that use a plain "mcpServers" block
(do not include "servers" or "type" here — those are VS Code-specific and
will be rejected by these clients):
{
"mcpServers": {
"dotMCP": {
"command": "dnx",
"args": ["dotMCP@0.4.0", "--yes"]
}
}
}
Requires the .NET 10 SDK (for the dnx command) on the machine running the MCP
client.
Unpacking the bundled skill (Claude Code)
The package embeds the full tool reference (SKILL.md: every tool with argument
constraints and real captured request/response examples). The server can deploy it
into your Claude Code skills directory on startup — opt-in, it never writes outside
its working directory unless you ask:
Set
DOTMCP_DEPLOY_SKILL=truein the server's environment, e.g.:{ "mcpServers": { "dotmcp": { "command": "dnx", "args": ["dotMCP@0.4.0", "--yes"], "env": { "DOTMCP_DEPLOY_SKILL": "true" } } } }On every server start the skill is (re)written to
~/.claude/skills/dotmcp/SKILL.md— upgrades refresh it automatically. SetDOTMCP_SKILLS_DIRto redirect the skills root (thedotmcp/SKILL.mdpart stays).Restart Claude Code (or start a new session); the
dotmcpskill is picked up automatically and teaches the agent every tool below.
Tools at a glance (63)
Workspace — workspace_open open a .sln/.slnx/.csproj (mandatory first call);
get_structure namespace/type hierarchy with doc one-liners; get_diagnostics
compiler errors/warnings for solution/project/type/method.
Navigation — get_type type card (member signatures, doc, usedBy/uses);
get_method full method with symbol map, callers/callees, version token;
get_source any node as C# text; get_lines raw line range of a file;
get_symbol "what is this?" incl. NuGet/BCL symbols; search_symbols ranked
name search; search_text search string literals/comments/XML doc;
search_code regex over the raw code text (the grep of the graph).
Usages — find_usages all references classified read/write/invocation/argument;
find_local_usages usages of a local/parameter inside its method; type_usages
where a type appears (fields, params, returns, generics); get_instantiations
where and with what arguments a type is constructed.
Code graph — get_method_nodes CFG nodes of a body; replace_node swap one
CFG node; get_reaching_conditions path conditions to a node; get_call_graph
callers/callees tree; reach is there a call path A→B; get_type_hierarchy
base/derived tree; find_implementations interface/abstract implementors;
impact_of transitive blast radius of changing a member.
Analysis — complexity cyclomatic + cognitive ranking; find_duplicates
structural duplicate clusters (canonicalized tokens); concurrency_audit ranked
suspicious-concurrency findings (lock asymmetry, check-then-act, blocking under
lock...); find_dead_code uncallable/unused/unreachable; entry_points execution
roots; get_effects reads/writes/IO/sync/blocking/spawns/purity of a method;
find_writes / find_reads field access sites with lock context; get_argument_values
what values flow into a parameter; event_flow raise/subscribe map of an event;
trace_value where a value comes from / flows to; decompile C# of NuGet/BCL
symbols; run run the project; tests_list / tests_for / tests_run discover,
map, and execute tests (TUnit/xUnit/NUnit/MSTest); probe temporary counters through
a test run; trace_test per-test execution paths.
Editing (guarded) — add_type new type (with usings support); add_member
add method/property/field/event; replace_method_body swap statements;
replace_member replace a whole declaration (attributes, signature, base(...));
move_member relocate a member; update_doc rewrite XML doc; delete_member /
delete_file safe-delete with usage guard; change_signature change parameters
atomically across all call sites; rename_symbol solution-wide rename;
find_replace regex edit inside a member/type or a whole file (doc: scope).
Every edit re-parses before applying, reports semantic/ripple diagnostics plus a
unified diff, and leads with an explicit warning if the code no longer compiles.
Project ops — changes_list / changes_diff what changed since the last commit;
commit snapshot; revert_file undo one file; package_add / package_remove /
package_list NuGet references; project_create / project_remove projects;
asset_list / asset_read / asset_write non-code files (configs, json, ...).
Environment variables
DOTMCP_RELOAD_DEBOUNCE_SECONDS— quiet period of the file watcher before external edits trigger a workspace reload (default 60).DOTMCP_DEPLOY_SKILL=true— opt-in: deploy the bundled Claude Code skill doc on startup.DOTMCP_SKILLS_DIR— overrides the skills directory for that deployment.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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.