query_symbolLABSCO SUMMARY
Grep finds the string; this finds the usages.
The distinction matters most on query_usages — inheritance, generic constraints and nameof references are usages that no text search will surface. The digest-then-read pattern is the other thing to adopt early: on a file of a few thousand lines, reading the outline first and pulling two members costs a fraction of reading the file.
What it is
An MCP server that opens your .sln or .slnx through MSBuild Workspaces and compiles every project in memory. All of its tools run against a real Roslyn semantic model rather than text search, and NuGet types are resolved alongside your own source.
What you get
- query_symbol — find types, methods, properties, fields, extension methods, constants and enum values across the solution and its NuGet packages
- get_type_details — properties, methods, base types and nested types, including for NuGet types
- query_usages — every usage of a type: calls, constructor calls, property and field reads and writes, generic arguments and constraints, return and parameter types, inheritance,
nameof,typeof,isandas, with predicate filtering and scan scope control - read_cs_file_digest — a structural outline of a large file, types and members with line numbers and no implementations; then
read_large_cs_filefetches only the members you name - decompile_type — decompile any type from a NuGet assembly back to C#, with ILSpy built in and no external tool needed
- code_lens — fully-qualified types for a line range: locals, field and property types, call signatures, object creations and declarations
- get_project_design and
get_project_design_details— abstraction groups by namespace and the dependencies between them, with*wildcard support - One server handles any number of solutions; the workspace is cached with file watchers, so
.csedits recompile incrementally while.csprojor.slnchanges invalidate the cache
Requirements
The .NET 10 SDK, then dotnet tool install -g HoldMyCoolantMeatbag.AmazingMCP. It runs as an HTTP server on http://localhost:7777 by default, changeable with --urls, and clients connect with "type": "http". Output sizes are tunable: --Symbol:QueryOutputLineLimit (100), --ReadCs:ReadOutputMaxLength (20000), --ProjectDesign:DetailsOutputMaxLength (30000) and --QueryUsages:QueryMatchLimit (200). --DisabledTools takes a comma-separated list if you want fewer tools in context. The first call against a solution is slow because it compiles; later calls are not.
Setup effort
One command — dotnet tool install -g HoldMyCoolantMeatbag.AmazingMCP
USE CASES
Working out what breaks if you change a type
Find every real usage, including inheritance and generic constraints, before touching it.
Reading a very large source file without burning context
Get the structural outline first, then fetch only the members you need.
Understanding a type that lives in a package
Decompile it to C# instead of guessing from the public signature.
Getting oriented in an unfamiliar solution
Read the architecture map of namespaces and their dependencies, then drill into the ones that matter.
9 tools
Listed in project docs. Your client may show a different list.
get_type_detailsquery_usagesread_cs_file_digestread_large_cs_filedecompile_typecode_lensget_project_designget_project_design_detailsBEFORE YOU INSTALL
What to know first
Tools you get
9 tools named in the project's documentation. --DisabledTools takes a comma-separated list, so a configured install can expose fewer.
Requires
.NET 10 SDK
Where it runs
Both documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Requires .NET 10 SDK.
dotnet tool install -g HoldMyCoolantMeatbag.AmazingMCPAdd to your MCP client config (Claude Desktop, JetBrains AI, Kiro, etc.) — the block is under MCP Clients
Start the server manually: AmazingMCP --urls=http://localhost:7777 <YOUR_OTHER_OPTIONS> — or add the extra "AmazingMCP Launcher" entry ("command": "AmazingMCP", "args": ["--urls=http://localhost:7777"]) so the client starts it automatically
MCP Clients
JetBrains IDEs, Kiro
{
"mcpServers": {
"AmazingMCP": {
"type": "http",
"url": "http://localhost:7777"
}
}
}