Roslyn Workbench MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get-solution-structureB | Returns bounded solution folders, projects, target frameworks and direct project relationships. |
| get-project-detailsB | Returns project metadata, options and selected document details. |
| get-document-optionsC | Returns language and optional detailed parse and analyzer-config options for a document. |
| get-document-outlineC | Returns a bounded semantic outline for one document. |
| get-code-contextB | Returns a bounded code window with the enclosing semantic context for a selected location. |
| search-symbolsB | Searches declarations by name, metadata name and optional semantic filters. Input: Provide query, metadataName, or both. |
| resolve-symbolB | Resolves the symbol at a location or selection and returns its canonical selector. |
| get-symbol-infoC | Returns detailed metadata for a resolved symbol. |
| get-symbol-membersA | Lists declared members and optional inherited or interface members for a resolved symbol. |
| get-symbol-attributesB | Returns declared and inherited attributes for a resolved symbol. |
| go-to-definitionA | Finds source or metadata definitions for a resolved symbol. |
| find-referencesC | Finds source references, optionally including declarations and access classification. |
| find-callersB | Returns bounded direct source call sites and containing symbols. |
| find-calleesA | Returns symbols directly invoked by a method or selected executable body. Input: Provide exactly one of symbol or location. |
| find-implementationsC | Finds implementations of an interface or abstract member. |
| find-overridesC | Finds overrides of a virtual or abstract member. |
| find-derived-typesC | Finds derived types for a resolved base type. |
| get-type-hierarchyA | Returns base, interface, and optional derived type relationships for a resolved type. |
| find-overloadsA | Returns overload signatures for a resolved method or constructor. |
| get-partial-declarationsC | Returns the declarations for a partial type or method. |
| get-symbol-dependenciesC | Returns the direct symbols used by a resolved symbol. |
| get-symbol-dependentsB | Returns symbols that directly depend on a resolved symbol. |
| get-dependency-graphC | Returns a bounded dependency graph for the selected scope and granularity. |
| find-dependency-cyclesB | Returns detected dependency cycles for the selected scope and granularity. |
| find-unused-symbolsB | Returns candidate unused locals and members from compiler diagnostics. |
| find-duplicate-codeB | Returns bounded duplicate executable-block pointers that normalize to the same statement sequence. |
| get-diagnosticsB | Returns compiler and analyzer diagnostics for a selected scope. |
| analyze-nullabilityB | Returns nullable-flow diagnostics for a selected scope or location. |
| analyze-asyncA | Returns bundled AsyncFixer diagnostics and compiler diagnostic CS4014 for a selected scope. |
| analyze-disposablesB | Returns advisory findings for undisposed local disposable values. |
| analyze-control-flowC | Analyzes control flow for an exact complete statement or contiguous statement range. |
| analyze-data-flowB | Analyzes data flow for an exact expression, complete statement, or contiguous statement range. |
| get-operation-treeB | Returns a bounded IOperation tree with metadata and exact source pointers. |
| get-control-flow-graphB | Returns a bounded control-flow graph with operation metadata and exact source pointers. Input: Provide exactly one of symbol or location. |
| get-change-impactB | Returns a bounded impact summary and supporting source locations for a symbol change. |
| get-api-surfaceC | Returns exported API symbols for a selected scope. |
| get-test-impactB | Returns likely impacted tests for a resolved symbol. |
| submit-error-reportA | After applying the configured consent policy, submits one previously prepared immutable external error report to its reviewed destination. Result: Returns the dispatcher, immutable report reference and reviewed payload digest. |
| prepare-error-reportA | Creates the complete external payload without network activity. Exception messages may contain Workspace data. Present the returned destination, payload JSON string and digest to the user before calling submit-error-report when approval is required; the user can choose to remove exception messages during submission. |
| workspace-openA | Loads an additional writable workspace. Open only a fully trusted workspace: loading evaluates MSBuild project logic, evaluated source inputs including external linked or package-provided documents become queryable, and later diagnostic or Code Action operations can load and execute project analyzers with the Host's permissions. Documents outside workspaceRoot remain read-only. If instance status reports that the workspace is or may be in use elsewhere, use it only for necessary queries, expect results to become stale, and coordinate mutation ownership before starting a transaction. |
| server-statusA | Returns server diagnostics without requiring a loaded workspace. Result: server diagnostics, effective configuration, plugin status, and unfinished recovery state. |
| workspace-statusA | Reports the selected workspace lifecycle and cross-instance state. Treat a workspace that is or may be in use elsewhere as query-only, use it only when necessary, and expect results to become stale. |
| list-code-actionsB | Lists bounded Roslyn code fixes and refactorings for a document, selection or caret. |
| workspace-closeC | Closes the selected workspace. |
| workspace-listA | Lists the currently loaded workspaces. |
| prepare-fix-allA | Revalidates a Code Fix and reports the bounded impact of one explicit Fix All scope without staging changes. |
| workspace-reloadB | Reloads the selected workspace when it is out of date. |
| get-error-detailsA | Returns temporary local diagnostic details for an unexpected tool failure. The result may contain paths and user-authored identifiers, is intended only for the trusted local agent, and must never be submitted externally. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 48 tools
Most tools target clearly distinct Roslyn operations (analyze-* group, workspace-* group, symbol hierarchy tools). However, a few clusters could be confused: find-references vs find-callers vs get-symbol-dependents, and get-code-context vs get-document-outline vs get-operation-tree overlap in intent. Descriptions help but an agent may still hesitate between dependency and reference tools.
Every tool follows a consistent kebab-case verb_noun pattern (get-*, find-*, analyze-*, workspace-*, prepare/submit-error-report). Prefixes map predictably to intent groups, making the set easy to scan.
48 tools is heavy, well past the 25+ threshold and approaching the extreme 50+ tier. While a semantic analysis domain is broad, this many tools burdens selection and several (find-callers/find-callees, get-symbol-dependencies/dependents) could plausibly be consolidated.
Coverage is strong across diagnostics, symbol resolution, hierarchy, dependency/impact analysis, code actions, and workspace lifecycle. The notable gap is mutation: list-code-actions and prepare-fix-all exist but no apply/rename/refactor tool, suggesting a read-only surface despite the 'workbench' framing.