Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Roslyn Workbench MCP

NUGET · LANTEAN.ROSLYN.WORKBENCH.MCP

Bring Visual Studio-style C# fixes and refactorings to your AI agent with local Roslyn Code Actions.

+5 this week 92 Trust /100

Last scanned (1 hour ago)

Scores higher than 97% of NuGet servers

Category Developer Tools

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to lantean-code/roslyn-workbench-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 8 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability78
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 10114 tokens (~168/item across 60 items; 48 tools + 12 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
  • Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 48 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 3 Nov 26 +2
    • Schema quality: 115 → 168 ▼ functional
    • Schema quality: unverified → 100 ▲ functional
    • Package version: 1.1.0 → 1.2.0 functional
  • 2 Nov 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 29 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

  • 25 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

  • 23 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 27 to 30. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 9 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed nuget/Lantean.Roslyn.Workbench.Mcp@1.2.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem nuget
Reason Verified
Discovered via GitHub artifact attestations
Source repo lantean-code/roslyn-workbench-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/lantean-code/roslyn-workbench-mcp/.github/workflows/release.yml@refs/tags/1.2.0
Rekor log index 3524151531
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha256:f48d1ece3c4ae6cd4cbe01df003070d3daf00d11ec12d7ba98fdec43afdf85a0

Signer

Signed as Repository signature, names nuget.org
Subject CN=NuGet.org Repository by Microsoft,O=NuGet.org Repository by Microsoft,L=Redmond,ST=Washington,C=US
Issuer CN=DigiCert Trusted G4 Code Signing RSA4096 SHA384 2021 CA1,O=DigiCert\, Inc.,C=US
Valid from 23 Feb 2024
Valid until 18 May 2027
Service index https://api.nuget.org/v3/index.json
Owners Lantean

Background: How many MCP packages publish verified provenance →

Dependencies 0 packages
Packages resolved 0
Tree resolution Complete

Background: SBOMs and build attestations, explained →

Registry declarations For information only

What the registry and the package's own manifest say about this version. The publisher or the registry writes these, nothing here is verified, and none of it affects the score.

Repository https://github.com/lantean-code/roslyn-workbench-mcp
Repository type git
Commit f6597970a8eb30f4edb6285f7f605bc7eefebc10
Project URL https://lantean-code.github.io/roslyn-workbench-mcp/
MCP tools · 48 exposed · ~9,758 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
analyze-async ~147

Reports only bundled AsyncFixer01 through AsyncFixer06 diagnostics plus compiler warning CS4014 for selected source documents. Use this for focused async/await review, including bundled rules when the project does not reference AsyncFixer; use get-diagnostics for general compiler and project analyser findings. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 findings by default; check findings.hasMore before treating the report as complete.

NameTypeReqDescription
findingsLimitinteger|null–Maximum number of results to return.
scopeobject|null–The optional search scope.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

analyze-control-flow ~203

Analyses entry and exit reachability, exit points and return statements for an exact complete statement or contiguous sibling statements in one executable body. Use this to understand a selected region; use get-control-flow-graph for the enclosing executable graph, or analyze-data-flow for variable-flow information. The selection must match statement spans exactly; a caret or partial statement is rejected. Echo the current expectedSnapshot. Exit points and return statements are limited independently to 100 each by default; check exits.hasMore and returns.hasMore.

NameTypeReqDescription
exitsLimitinteger|null–Maximum number of exit points to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
locationobjectyesAn exact complete statement or contiguous statement range to analyze.
returnsLimitinteger|null–Maximum number of return statements to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

analyze-data-flow ~194

Returns Roslyn variable sets for declarations, reads, writes, captures and data flowing into or out of an exact expression, complete statement or contiguous sibling statements in one executable body. Use this when planning to extract or move selected code; use get-operation-tree for semantic operation structure, or analyze-control-flow for region reachability and exits. Echo the current expectedSnapshot and select exact syntax spans. Each variable category is limited independently to 50 symbols by default; check its hasMore before treating the category as complete.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
locationobjectyesAn exact expression, complete statement or contiguous statement range to analyze.
symbolsPerCategoryLimitinteger|null–Maximum number of symbols to return in each data-flow category.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

analyze-disposables ~162

Heuristically flags local declarations of IDisposable or IAsyncDisposable values that lack a recognised disposal pattern. Use this for advisory resource-handling review; verify ownership transfers and control flow before acting. Using declarations are skipped, and supported direct or finally-block Dispose/DisposeAsync calls are recognised. Analysis is limited to local declarations and recognised patterns; use get-diagnostics for configured compiler and analyser rules. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 findings by default; check findings.hasMore.

NameTypeReqDescription
findingsLimitinteger|null–Maximum number of results to return.
scopeobject|null–The optional search scope.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

analyze-nullability ~216

Reports compiler diagnostics whose IDs begin with CS86 for focused nullable analysis. Use get-diagnostics for other compiler or project analyser findings, and get-document-options to inspect project-level nullable context. A supplied location overrides scope and keeps diagnostics intersecting its resolved span; echo its expectedSnapshot. Without a location, searches the selected scope or the loaded solution by default. Findings depend on compiler settings and are limited to 50 by default; check findings.hasMore.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
findingsLimitinteger|null–Caps returned nullable-flow diagnostics. Omitted or null uses 50; zero returns no findings.
locationobject|null–Provide exactly one of span or selection.
scopeobject|null–Selects documents or projects to analyse when location is omitted; omitted searches the loaded solution. Ignored when location is supplied.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-callees ~278

Finds distinct method and constructor targets invoked by a source executable symbol or selected executable region. Use this for outgoing calls; use find-callers for incoming call sites. Reads the loaded workspace without executing code. Direct calls are the default; includeIndirect traverses reachable source bodies up to maxDepth (default 3, direct calls at depth 1). Nested lambda and local-function bodies are skipped during each body scan. Returns source and a bounded callees collection, not call sites or runtime dispatch targets. calleesLimit defaults to 100; check callees.hasMore for result truncation within the requested depth. Input: Provide exactly one of symbol or location.

NameTypeReqDescription
calleesLimitinteger|null–Maximum number of results to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeIndirectboolean–Whether reachable source callees should be traversed transitively.
location––Source location or executable region whose contained callees should be found.
maxDepthinteger–The maximum call depth to traverse when indirect callees are included. Direct callees are at depth one.
symbolobject–Symbol whose callees should be found.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-callers ~273

Finds callers of a resolved symbol and groups source call sites by calling symbol. Use this to trace incoming calls; use find-references for general source usages or find-callees for calls made by a selected member. Searches the selected scope, or the loaded solution when scope is omitted. Defaults to 100 callers and 100 call sites per caller, limited independently. Check callers.hasMore and each caller's callSites.hasMore before treating the results as complete.

NameTypeReqDescription
callSitesPerCallerLimitinteger|null–Caps call sites independently for each returned caller. Omitted or null uses 100; zero retains callers without call sites.
callersLimitinteger|null–Caps returned callers independently of the call-site limit. Omitted or null uses 100; zero returns no callers.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeContextboolean–Include the trimmed source line for each returned call site when available; defaults to false.
scopeobject|null–Limits caller discovery to the selected documents or projects; omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-dependency-cycles ~259

Finds mutually dependent groups in a static dependency graph for the selected scope, or the loaded solution when scope is omitted. Use this to investigate circular coupling; use get-dependency-graph to inspect individual dependency edges. granularity defaults to Type; Namespace groups source dependencies and Project uses direct project references. A document scope uses its containing project for Project granularity. Returns a bounded cycles collection of strongly connected node groups, not ordered traversal paths. cyclesLimit defaults to 25; check cycles.hasMore for additional groups. Analysis budgets default to 25000 nodes and 100000 edges; exceeding either rejects the query with AnalysisLimitExceeded rather than returning a partial cycle analysis. Narrow the scope or raise the relevant budget to retry. Read-only; no tests or application code are run.

NameTypeReqDescription
cyclesLimitinteger|null–Maximum number of results to return.
edgesLimitinteger|null–The maximum number of graph edges to analyse.
granularitystring–The dependency graph granularity.
nodesLimitinteger|null–The maximum number of graph nodes to analyse.
scopeobject|null–The scope to analyse.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-derived-types ~242

Finds source types derived from a resolved named type, with their inheritance distance. Use this to explore descendants; use get-type-hierarchy for base types as well, or find-implementations for interface member implementations. For an interface, includes derived interfaces and implementing types. Searches projects selected by scope, or the loaded solution when scope is omitted. Defaults to three inheritance levels and 100 returned types. Check derivedTypes.hasMore for truncation within maxDepth; deeper types are excluded.

NameTypeReqDescription
derivedTypesLimitinteger|null–Caps returned derived types within maxDepth. Omitted or null uses 100; zero returns no derived types.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
maxDepthinteger–Maximum traversal depth; directly derived types are at depth one.
scopeobject|null–Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-duplicate-code ~225

Finds groups of whole executable blocks with identical statement text after whitespace normalisation. Use this to locate duplication candidates for manual inspection; identifiers and literal values remain significant, so this is not semantic clone detection. Scans block-bodied methods, constructors, local functions and accessors in the selected scope, or the loaded solution when scope is omitted; expression bodies and arbitrary statement subsequences are not candidates. minimumStatements defaults to 3 top-level statements per block. Returns groups with statementCount and bounded occurrences containing symbol and location pointers, without source excerpts or edits. Limits default to 25 groups and 100 occurrences per group; check groups.hasMore and each occurrences.hasMore independently.

NameTypeReqDescription
groupsLimitinteger|null–Maximum number of results to return.
minimumStatementsinteger–The minimum statement count to consider.
occurrencesPerGroupLimitinteger|null–Maximum number of occurrences to return for each duplicate group.
scopeobject|null–The optional search scope.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-implementations ~202

Finds implementations of a resolved interface or member and returns symbol references. Use this to locate implementing types or members; use find-overrides for overrides of a virtual or abstract member, or find-references for source usages. Searches projects selected by scope, or the loaded solution when scope is omitted. Returns up to 100 implementations by default; check implementations.hasMore before treating the results as complete.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
implementationsLimitinteger|null–Caps returned distinct implementation symbols. Omitted or null uses 100; zero returns no implementations.
scopeobject|null–Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-overloads ~193

Lists callable signatures for a resolved method or constructor so you can compare parameter and return types. Requires a callable symbol; use search-symbols to discover one first. Methods are matched by name and method kind within the same containing type; instance constructors include only explicitly declared constructors. The selected callable can appear in the results. This does not resolve a call against arguments or collect inherited overloads. Returns symbol and a bounded overloads collection ordered by parameter count then signature. overloadsLimit defaults to 50; check overloads.hasMore for truncation. Reads symbols without invoking code.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
overloadsLimitinteger|null–Maximum number of results to return.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-overrides ~229

Finds distinct overriding methods, properties or events for a resolved member. Use this to follow virtual or abstract member overrides; use find-implementations for interface implementations or find-derived-types for type inheritance. Searches the selected projects, or the loaded solution when scope is omitted; a document scope searches its containing project. Returns the selected symbol and a bounded overrides collection of symbol references. overridesLimit defaults to 100; check overrides.hasMore before treating the list as complete. This is a read-only symbol search and does not execute the member.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
overridesLimitinteger|null–Caps returned distinct overriding members. Omitted or null uses 100; zero returns no overrides.
scopeobject|null–Selects projects to search; a document scope searches its containing project. Omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-references ~258

Finds source usages of a resolved symbol, with locations, containing symbols and access classification where available. Use this to locate usages or inspect writes; use find-callers when you need incoming calls grouped by calling symbol. Searches the selected scope, or the loaded solution when scope is omitted. Declarations are included by default and share the default 100-occurrence limit with references. Check references.hasMore before treating the results as complete.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeContextboolean–Include the trimmed source line for each returned reference when available; declaration entries have no context. Defaults to false.
includeDefinitionsboolean–Include source declarations alongside references within the same result limit; defaults to true.
referencesLimitinteger|null–Caps returned occurrences, including declarations when requested. Omitted or null uses 100; zero returns no occurrences.
scopeobject|null–Limits references and declarations to the selected documents or projects; omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

find-unused-symbols ~184

Uses only compiler diagnostics CS0168, CS0169 and CS0219 to identify candidate unused symbols. Use this to review potentially removable locals and private members; inspect find-references before removing code, or get-diagnostics for the underlying warnings. includeInternal widens the accessibility filter; generated-looking documents are excluded by default. Searches the selected scope, or the loaded solution when scope is omitted. Returns up to 50 candidates by default; check candidates.hasMore before treating the candidate list as complete.

NameTypeReqDescription
candidatesLimitinteger|null–Maximum number of results to return.
excludeGeneratedboolean–Whether generated files should be excluded.
includeInternalboolean–Whether internal members should be included.
scopeobject|null–The optional search scope.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-api-surface ~171

Lists API declarations from source in the selected scope, with symbol references, accessibility and obsolete status. Use this to inventory accessible types and members; use search-symbols to locate declarations by name, or get-symbol-info to inspect one symbol. Omitted scope searches the loaded solution. Defaults to Public accessibility, includes obsolete symbols and returns up to 100 symbols. Check symbols.hasMore before treating the inventory as complete.

NameTypeReqDescription
includeObsoleteboolean–Whether obsolete symbols should be included.
minimumAccessibilitystring–The minimum accessibility threshold as Public, Protected, or Internal.
scopeobject|null–The search scope.
symbolsLimitinteger|null–Maximum number of results to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-change-impact ~244

Summarises source references, method callers, overrides, implementing types for interfaces and a public-surface indicator for a resolved symbol. Use this as static relationship evidence when planning a symbol change; use get-symbol-dependents for the referencing symbols themselves, or get-dependency-graph for a scoped graph. Counts reflect the selected scope, or the loaded solution when scope is omitted. Supporting source-reference locations are limited to 100 by default, independently of the counts; check locations.hasMore before treating the returned locations as complete.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
locationsLimitinteger|null–Caps returned reference locations without limiting impact counts. Omitted or null uses 100; zero returns counts without locations.
scopeobject|null–Selects documents for references and callers, and projects for override and implementation counts. A document scope uses its containing project for those counts; omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-code-context ~316

Reads source around a location, returning the resolved location, text, enclosingSymbols and diagnostics. Use this to inspect a search result or diagnostic in context; use get-symbol-info for symbol details or get-diagnostics for broader diagnostic analysis. Includes all lines touched by the selection plus 10 lines before and after by default; beforeLines and afterLines each accept 0 to 100 and are clipped at document boundaries. Enclosing symbols and compiler diagnostics are opt-in via includeEnclosingSymbols and includeDiagnostics, both false by default. Diagnostics cover the selected span, not the expanded text window or project analysers. Limits default to 16 enclosing symbols and 50 diagnostics; check each collection.hasMore. Reads the loaded workspace without modifying source.

NameTypeReqDescription
afterLinesinteger|null–The optional number of lines to include after the selected location.
beforeLinesinteger|null–The optional number of lines to include before the selected location.
diagnosticsLimitinteger|null–Maximum number of diagnostics to return.
enclosingSymbolsLimitinteger|null–Maximum number of enclosing symbols to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeDiagnosticsboolean–Whether diagnostics should be included for the selected span.
includeEnclosingSymbolsboolean–Whether the enclosing symbol chain should be included.
locationobjectyesThe location selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-control-flow-graph ~264

Builds a Roslyn control-flow graph for a source symbol or the executable body enclosing a source location, with basic blocks, reachability, successor ordinals, operations and flow regions. Use this to inspect branching across an executable body; use analyze-control-flow for reachability and exits of an exact statement region, or get-operation-tree for nested semantic operations. Defaults to 64 blocks, 32 regions and 32 operations per block, bounded independently. Check blocks.hasMore, regions.hasMore and each block operations.hasMore; successor ordinals may refer to blocks omitted by the block limit. Input: Provide exactly one of symbol or location.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
location––Source location whose enclosing executable body should be graphed.
maxBlocksinteger|null–The maximum number of projected basic blocks.
maxOperationsPerBlockinteger|null–The maximum number of projected operations in each basic block.
maxRegionsinteger|null–The maximum number of projected flow regions.
symbolobject–Symbol whose control-flow graph should be returned.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-dependency-graph ~200

Builds a dependency graph at Project, Namespace, Type or Symbol granularity, with edges directed from dependents to dependencies. Use this to inspect relationships across a scope; use get-symbol-dependencies or get-symbol-dependents for one symbol, or get-change-impact for a symbol-centred count summary. Project granularity uses selected projects; other granularities use selected source documents. Omitted scope covers the loaded solution. Defaults to Type granularity, 200 nodes and 400 edges. Check both nodes.hasMore and edges.hasMore; omitted nodes also exclude their connected edges.

NameTypeReqDescription
edgesLimitinteger|null–Maximum number of edges to return.
granularitystring–The dependency graph granularity.
nodesLimitinteger|null–Maximum number of nodes to return.
scopeobject|null–The scope to graph.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-diagnostics ~183

Returns compiler diagnostics and diagnostics from analysers referenced by the selected projects. Use this for general diagnostic inspection; use analyze-async for the additional bundled AsyncFixer rule set, or get-document-options to inspect document configuration. Omitted scope searches the loaded solution. Document scope keeps diagnostics whose primary source location belongs to that document; broader scopes can include findings without source locations. Requested diagnostic IDs and severities filter results before the default 200-diagnostic limit. Check diagnostics.hasMore before treating the report as complete.

NameTypeReqDescription
diagnosticsLimitinteger|null–Maximum number of results to return.
idsarray|null–The included diagnostic identifiers.
scopeobject|null–The optional scope selector.
severitiesarray|null–The included diagnostic severities.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-document-options ~156

Inspects configuration for one selected document, returning language version and project-level nullable context. Use this to understand configuration behind diagnostic results; use get-diagnostics for findings or get-project-details for broader project configuration. Source nullable directives can override the reported project-level context. Detailed parse options and analyser configuration are omitted by default: request includeParseOptions for documentation mode and preprocessor symbols, or includeAnalyzerConfig for project configuration-file paths and syntax-tree analyser options.

NameTypeReqDescription
documentobjectyesTarget document.
includeAnalyzerConfigboolean–Whether to include effective analyser configuration.
includeParseOptionsboolean–Whether to include parse options.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-document-outline ~181

Returns a semantic declaration tree for one document, with names, kinds, locations and nested children. Use this to navigate the structure of a known file; use search-symbols to discover declarations across documents, or get-symbol-info for detailed symbol metadata. Members are included by default. Defaults to 200 projected nodes below the document root and 16 hierarchy levels. Check truncated for content omitted by the node or depth limit; root may be null when syntax or semantic information is unavailable.

NameTypeReqDescription
documentobjectyesTarget document.
includeMembersboolean–Whether member nodes should be included.
maxDepthinteger–The maximum semantic hierarchy depth below the document root.
nodesLimitinteger|null–The optional maximum total number of projected outline nodes.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-error-details ~67

Returns temporary local diagnostic details for an unexpected tool or resource-read failure. The result may contain paths and user-authored identifiers, is intended only for the trusted local agent, and must never be submitted externally.

NameTypeReqDescription
correlationIdstringyesCorrelation identifier returned with the failed tool invocation.

No output schema declared.

No examples provided.

get-operation-tree ~202

Projects a semantic IOperation tree with operation kinds, types, constant-value presence and source locations. Use this to inspect the semantic structure at a source location; use analyze-data-flow for variable-flow sets or get-control-flow-graph for branches and successors. If the selected syntax node has no operation, the first immediate child with an operation is used. Echo the current expectedSnapshot. Defaults to 200 total nodes and maxDepth 8, counting the root at depth zero. Check the result and node truncated flags; nodesLimit zero returns a null root.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
locationobjectyesThe selected location.
maxDepthinteger–The maximum traversal depth.
nodesLimitinteger|null–The optional maximum total number of projected operation nodes.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-partial-declarations ~168

Returns source declaration locations for a resolved symbol, ordered by document path and source position. Use this to navigate split partial type declarations; use get-symbol-info for symbol metadata or find-references for usages. Only declarations belonging to the resolved symbol are returned: partial method definition and implementation parts are not combined automatically. Metadata-only or implicitly declared symbols may return no declarations. Defaults to 32 locations; check declarations.hasMore before treating the results as complete.

NameTypeReqDescription
declarationsLimitinteger|null–Maximum number of results to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-project-details ~226

Inspects one selected project, returning target frameworks, compilation and parse options, project references, metadata references and analyzers. Use get-solution-structure to discover projects, then use this to inspect project configuration and dependencies. Document references are opt-in through includeDocuments and do not include file contents; use get-document-outline to inspect declarations in one document. Collections are bounded independently, including a default 200-document limit when requested. Check each returned collection for hasMore before treating it as complete.

NameTypeReqDescription
analyzersLimitinteger|null–Maximum number of analyzers to return.
documentsLimitinteger|null–Maximum number of documents to return.
includeDocumentsboolean–Whether documents should be included.
metadataReferencesLimitinteger|null–Maximum number of metadata references to return.
projectobjectyesProvide projectId, name, path, targetFramework, or any combination.
projectReferencesLimitinteger|null–Maximum number of project references to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-solution-structure ~250

Maps the loaded solution into solution folders and projects with workspace-relative paths, target frameworks and direct project references. Use this first to discover project and document selectors; use get-dependency-graph for a dependency graph or get-code-context to read a selected source region. Documents are omitted unless includeDocuments=true. Independent limits default to 200 folders, 100 projects, 50 references per project and 200 documents per project. Returns solutionPath and bounded folders and projects collections; check their hasMore flags and those on each projectReferences or documents collection for truncation. This read-only query can report ProjectStructureUnavailable if hierarchy or target-framework information cannot be obtained.

NameTypeReqDescription
documentsPerProjectLimitinteger|null–Maximum number of documents to return for each project.
foldersLimitinteger|null–Maximum number of folders to return.
includeDocumentsboolean–Whether documents should be included in project projections.
projectReferencesPerProjectLimitinteger|null–Maximum number of direct project references to return for each project.
projectsLimitinteger|null–Maximum number of projects to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-symbol-attributes ~200

Inspects attributes attached to a resolved symbol, returning their types, inherited flags and rendered constructor and named arguments. Use this for attribute metadata; use get-symbol-info for general symbol details. Defaults to directly declared attributes. includeInherited follows base types or overridden methods, properties and events, honours Inherited and AllowMultiple settings, and does not traverse interface declarations. Returns symbol and a bounded attributes collection; attributesLimit defaults to 50. Check attributes.hasMore for truncation. Reads Roslyn metadata without instantiating attributes or executing their constructors.

NameTypeReqDescription
attributesLimitinteger|null–Maximum number of results to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeInheritedboolean–Whether inherited attributes should be included.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-symbol-dependencies ~187

Lists distinct direct dependencies found in a resolved symbol signature and supported executable operations, including referenced types and members. Use this for outgoing relationships; use get-symbol-dependents to find source symbols that reference the selected symbol, or get-dependency-graph for relationships across a scope. Dependencies may include metadata symbols. Containing assembly names are included by default. Returns up to 100 dependencies by default; check dependencies.hasMore before treating the inventory as complete.

NameTypeReqDescription
dependenciesLimitinteger|null–Maximum number of results to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeAssembliesboolean–Whether containing assembly names should be included with each dependency.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-symbol-dependents ~211

Finds distinct enclosing symbols at source references to a resolved symbol. Use this to identify incoming dependencies; use get-symbol-dependencies for outgoing dependencies, find-references for individual source occurrences, or get-change-impact for relationship counts. Searches the selected documents or projects, or the loaded solution when scope is omitted. Returns up to 100 dependent symbol references by default; check dependents.hasMore before treating the results as complete.

NameTypeReqDescription
dependentsLimitinteger|null–Caps returned distinct dependent symbols. Omitted or null uses 100; zero returns no dependents.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
scopeobject|null–Limits the source references used to discover dependents to the selected documents or projects; omitted searches the loaded solution.
symbolobjectyesProvide exactly one of location or documentationCommentId.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-symbol-info ~207

Inspects one resolved symbol, returning accessibility, modifiers, associated type and source declaration locations, plus method parameters and return type when applicable. Use this after search-symbols or resolve-symbol to understand a chosen declaration; use find-references for its usages or get-symbol-members to enumerate type members. XML documentation is opt-in through includeDocumentation. Defaults to 32 declarations and 64 method parameters, bounded independently; check declarations.hasMore and parameters.hasMore when present. Metadata-only symbols may have no source declarations.

NameTypeReqDescription
declarationsLimitinteger|null–Maximum number of declarations to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeDocumentationboolean–Whether XML documentation should be included.
parametersLimitinteger|null–Maximum number of parameters to return.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-symbol-members ~233

Lists members of a resolved named type to inspect its declaration surface. Use get-api-surface for an accessibility-filtered API inventory or get-symbol-info for details about one member. Defaults to explicitly declared members of the selected type, including non-public members. includeInherited adds base-type members except private, implicit and constructor/destructor members. includeExplicitInterface adds declarations from all implemented or inherited interfaces, not just explicit implementations on the selected type. Both options default to false. Returns symbol and a distinct, bounded members collection; membersLimit defaults to 100. Check members.hasMore for truncation. Reads the loaded workspace without modifying source.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeExplicitInterfaceboolean–Whether explicit interface members should be included.
includeInheritedboolean–Whether inherited members should be included.
membersLimitinteger|null–Maximum number of results to return.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-test-impact ~296

Suggests tests to inspect after changing a resolved symbol, using static direct references to the target or its owning type. This heuristic can include tests that use another member of that type and misses indirect helper-call dependencies; it is not a coverage report or a guarantee of the tests affected. Candidate methods are selected by type names ending in Test, Tests, Spec or Specs, or method names starting GIVEN_ or containing _THEN_Should; test attributes alone do not select candidates. testScope limits candidate documents or projects and defaults to the loaded solution. Returns symbol and a bounded tests collection with test symbols and locations; includeReasons defaults to false. testsLimit defaults to 100; check tests.hasMore for truncation. Does not execute tests.

NameTypeReqDescription
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeReasonsboolean–Include explanations of why each returned test may be affected; defaults to false and does not change which tests match.
symbolobjectyesProvide exactly one of location or documentationCommentId.
testScopeobject|null–Limits candidate test discovery to the selected documents or projects; omitted searches the loaded solution.
testsLimitinteger|null–Caps returned likely impacted tests. Omitted or null uses 100; zero returns no tests.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

get-type-hierarchy ~290

Inspects the inheritance neighbourhood of a resolved named type, returning type, baseTypes, interfaces and derivedTypes. Use this for a combined hierarchy view; use find-derived-types when you need a scoped descendant search. Derived types are included by default and searched across the loaded solution; includeDerived=false omits that collection. maxDepth defaults to 3 for base and derived types, with direct relationships at depth 1; it does not limit the transitive interface list. Independent result limits default to 16 base types, 64 interfaces and 100 derived types. Check each collection.hasMore for result truncation; base and derived counts describe only the requested depth. Read-only; no code is executed.

NameTypeReqDescription
baseTypesLimitinteger|null–Maximum number of base types to return.
derivedTypesLimitinteger|null–Maximum number of derived types to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
includeDerivedboolean–Whether derived types should be included.
interfacesLimitinteger|null–Maximum number of interfaces to return.
maxDepthinteger–The maximum base-type and derived-type traversal depth. Direct relationships are at depth one.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

go-to-definition ~176

Locates declaration sites for a resolved symbol, preferring its source definition in the loaded solution. Use this to navigate to a declaration; use find-references for usages or find-implementations for concrete implementations. Returns symbol and a bounded definitions collection, which can contain multiple source locations for partial declarations. If no source location exists, returns a metadata definition record rather than decompiled source. definitionsLimit defaults to 32; check definitions.hasMore for truncation. Reads the workspace without modifying files.

NameTypeReqDescription
definitionsLimitinteger|null–Maximum number of definitions to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
symbolobjectyesThe symbol selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

list-code-actions ~280

Discovers applicable Roslyn Code Fixes and refactorings for a document, selection or caret. Use this to choose an actionId for stage-code-action in mutation-enabled modes, or a Code Fix with advertised fixAllScopes for prepare-fix-all. Echo the current expectedSnapshot. Omitted range selects the whole document; a zero-length range selects a caret, using zero-based UTF-16 positions. Returns up to 50 action leaves by default; check actions.hasMore. Action IDs are temporary, process-local and tied to the exact workspace snapshot: rediscover after changes or expiry. Listing stores references but does not stage changes or write source files.

NameTypeReqDescription
diagnosticIdsarray|null–The optional diagnostic identifier filter for code fixes.
documentobjectyesTarget document.
expectedSnapshotobjectyesEcho the snapshot returned with the data or transaction state used to construct this request.
includeProvenanceboolean–Whether returned actions should reference a response-level runtime provider catalogue.
kindsstringyesThe kinds of actions to discover.
limitinteger|null–The maximum number of action leaves to return.
rangeobject|null–The optional selection or caret range. An omitted range selects the complete document.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

prepare-error-report ~78

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.

NameTypeReqDescription
correlationIdstringyesCorrelation identifier of the captured failure to prepare for review.

No output schema declared.

No examples provided.

prepare-fix-all ~251

Evaluates one supported Document, Project or Solution Fix All operation for a Code Fix from list-code-actions, without staging or writing source files. Supply the originating actionId, an advertised fixAllScopes value and the matching expectedSnapshot; refactorings and already-prepared Fix All references are not accepted. Rejects operations exceeding maxChanges source documents, default 50. The affectedDocuments preview is limited separately to 20 identities by default; check its hasMore and totalCount. Returns a new temporary actionId for stage-code-action in mutation-enabled modes: use this prepared ID, not the originating ID, with the same snapshot. Staging revalidates the exact prepared change set.

NameTypeReqDescription
actionIdstringyesThe opaque originating Code Fix reference.
affectedDocumentsLimitinteger|null–The maximum number of affected document identities to return.
expectedSnapshotobjectyesEcho the snapshot returned with the data or transaction state used to construct this request.
maxChangesinteger|null–The maximum number of changed source documents to allow.
scopestringyesThe explicit Fix All scope.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

resolve-symbol ~171

Resolves the symbol at a source location or selection, returning a symbol reference, a reusable selector when available and bounded source declarations. Use this to turn a known location into a target for symbol inspection; use search-symbols when only a name is known, or get-symbol-info for detailed metadata. Echo the location snapshot in expectedSnapshot to reject stale locations. Returns up to 32 source declarations by default; check declarations.hasMore. Metadata-only symbols may have no source declarations.

NameTypeReqDescription
declarationsLimitinteger|null–Maximum number of declarations to return.
expectedSnapshotobject|null–Echo the snapshot returned with the data or transaction state used to construct this request.
locationobjectyesThe location selector.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

search-symbols ~229

Finds source type and member declarations using a Roslyn name pattern and optional semantic filters. Use this to discover symbols by name; use resolve-symbol for a known source location, then get-symbol-info to inspect a chosen symbol. Searches the selected document or projects, or the loaded solution when scope is omitted. Filters narrow the candidate set. Returns symbol references, capped at 100 by default; check symbols.hasMore before treating the results as complete. Input: Provide query, metadataName, or both.

NameTypeReqDescription
accessibilitiesarray|null–The included accessibilities.
kindsarray|null–The included symbol kinds.
metadataNamestring–Filters declaration metadata names by a case-insensitive substring; also supplies the search pattern when query is omitted.
namespacestring|null–The optional namespace filter.
querystring–Source-name query.
scopeobject|null–The optional scope selector.
symbolsLimitinteger|null–Maximum number of results to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

server-status ~145

Reports Host health without requiring a loaded workspace. Use this to diagnose startup, component availability, tool publication or effective operational policy; use workspace-status for one workspace and get-diagnostics for source findings. detail defaults to Minimal, returning server/Roslyn versions, MSBuild and Code Action component status and toolCount. Full additionally returns effective non-sensitive configuration, startup warnings, plugin status and unfinished recovery records; Standard currently has the same projection as Minimal. This read-only query does not load a workspace, run source diagnostics or repair recovery state. Result: server diagnostics, effective configuration, plugin status, and unfinished recovery state.

NameTypeReqDescription
detailstring–Amount of server status detail to return.

No output schema declared.

No examples provided.

submit-error-report ~176

Submits a reviewed unexpected-failure report through the configured provider. First use prepare-error-report and review its destination, payloadJson and payloadDigest, then supply its unexpired submissionHandle. Use get-error-details for local investigation instead. Prompt consent (default) requests client approval and offers exception-message removal; Always consent skips the prompt. Declined or unavailable approval sends nothing; declining also discards the handle. Success means provider acceptance: Sentry queues an external event, while the Logging provider writes locally. It does not confirm remote delivery or offer retraction. Reusing a retained successful handle returns its receipt without dispatching again; an expired handle requires a new prepared report. Result: Returns the dispatcher, provider report reference and dispatched payload digest.

NameTypeReqDescription
submissionHandlestringyesOpaque handle returned for the exact reviewed payload to submit.

No output schema declared.

No examples provided.

workspace-close ~96

Closes the selected workspace and releases its loaded solution, file watching and Host resources without changing source files. Use this when finished with a workspace; use workspace-reload to refresh an out-of-date workspace and continue working. An active or conflicted transaction blocks close: commit or roll it back first. Use workspace-open to load the workspace again.

NameTypeReqDescription
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

workspace-list ~104

Lists workspaces currently loaded in this Host, returning their identities and transactionOwnerWorkspaceId when a transaction is active. Use this to discover workspaceId, alias or path selectors before workspace-status or other workspace tools; use workspace-open to load a new workspace. Takes no workspace selector and can return an empty list. This read-only inventory does not discover repositories on disk or workspaces loaded only by other Host processes. Use workspace-status for lifecycle, reload requirements and advisory cross-instance information.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

workspace-open ~195

Loads an additional workspace for inspection and, when enabled by Host policy, staged mutation. 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 analysers 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.

NameTypeReqDescription
aliasstring|null–The optional caller-friendly alias for the workspace.
msBuildPropertiesobject|null–The optional allowlisted MSBuild global properties used to evaluate this workspace.
pathstringyesThe absolute solution or project path to load.
workspaceRootstring|null–The optional absolute repository or workspace root used for coordination and transaction boundaries.

No output schema declared.

No examples provided.

workspace-reload ~167

Recreates an out-of-date loaded workspace from its current on-disk solution or project inputs. Use this after workspace-status reports reloadRequired or a query reports WorkspaceOutOfDate; use workspace-open for a workspace not yet loaded. An active transaction blocks reload: finish it first, rolling back if conflicted. A workspace that is not out of date is rejected with WorkspaceReloadNotRequired. Preserves workspaceId and alias, but replaces the loaded solution with a new workspace epoch and snapshot; resolve document, symbol and action references again before reuse. Returns workspace identity, project/document counts and load diagnostics. Reload evaluates trusted MSBuild project logic with Host permissions; it does not apply staged source changes.

NameTypeReqDescription
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

workspace-status ~173

Inspects a loaded workspace, returning its lifecycle state, identity, project/document counts, active transaction, reloadRequired, detected external change and other live instances. Use this before mutation or after external edits; use server-status for Host configuration and component health. detail defaults to Standard; Full also includes workspace load diagnostics. Advisory instance-status diagnostics can appear at any detail level. Checking status detects external input changes and can mark the workspace out of date or its transaction conflicted. 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; coordinate mutation ownership first. No source files are written.

NameTypeReqDescription
detailstring–Amount of workspace status detail to return.
workspaceobject|null–Provide workspaceId, alias, path, or any combination.

No output schema declared.

No examples provided.

Install

How do I install the Roslyn Workbench MCP server?

Roslyn Workbench MCP runs locally as a NuGet package, launched with dnx Lantean.Roslyn.Workbench.Mcp@1.2.0 --yes. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

nuget · Lantean.Roslyn.Workbench.Mcp

# add to Claude Code
claude mcp add lantean-code-roslyn-workbench-mcp -- dnx Lantean.Roslyn.Workbench.Mcp@1.2.0 --yes
Common questions

What is the Roslyn Workbench MCP server?

Roslyn Workbench MCP is listed in the public MCP registry as io.github.lantean-code/roslyn-workbench-mcp. Bring Visual Studio-style C# fixes and refactorings to your AI agent with local Roslyn Code Actions. This page covers its NuGet package (Lantean.Roslyn.Workbench.Mcp).

Is the Roslyn Workbench MCP server safe to use?

Roslyn Workbench MCP scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Roslyn Workbench MCP server expose?

Roslyn Workbench MCP exposes 48 tools: get-solution-structure, get-project-details, get-document-options, get-document-outline, get-code-context, and 43 more. Their descriptions and schemas cost roughly 9,758 tokens of context every time the server is loaded.

Is the Roslyn Workbench MCP server still maintained?

Roslyn Workbench MCP is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Roslyn Workbench MCP server under?

Roslyn Workbench MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.