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.

io.github.darylmcd/roslyn-mcp

NUGET · DARYLMCD.ROSLYNMCP

Local-first MCP server for semantic C# analysis & refactoring via Roslyn & MSBuildWorkspace.

−6 this week 80 Trust /100

Last scanned (19 hours ago)

Scores higher than 65% 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 & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Build provenance not yet verified. View diagnostics → Unverified
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 24236 tokens (~137/item across 176 items; 171 tools + 5 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 Management60
  • Stability check failed: the tool surface changed between 4.3.0 and 5.0.0: 4 tool removals, 2 breaking changes, 0 additions. See how to fix → Fail
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
  • Structured output schemas are declared (5% of tools); any adoption earns full credit.Pass
Tool Safety81
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 2 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_file_preview" implies "delete" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 173 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (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 −5

    No change was recorded against any check on this day. Stability & Change Management went from 97 to 60.

  • 29 Oct 26 −1
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Stability: pass → fail ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 4.4.0 → 5.0.0 functional
  • 28 Oct 26 0
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 4.3.0 → 4.4.0 functional
  • 25 Oct 26 +1
    • Stability: 0.97 → pass security
  • 24 Oct 26 −1
    • Stability: pass → 0.97 functional
  • 17 Oct 26 +1
    • Stability: 0.93 → pass security
  • 16 Oct 26 +45
    • Injection markers: unverified → pass ▲ security
    • Tool coverage: unverified → 100 ▲ functional
    • Stability: unverified → 0.93 ▲ functional
    • MCP protocol: unverified → pass ▲ functional
    • Schema quality: unverified → 100 ▲ functional
  • 12 Oct 26 −45
    • Tool safety: pass → unverified ▼ security
    • Stability: fail → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
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 4 Nov 2026 · Analysed nuget/Darylmcd.RoslynMcp@5.0.0

Provenance Inconclusive

We could not complete the check, so nothing is claimed either way. This is a gap on our side, not a finding about the package.

Result Inconclusive
Ecosystem nuget
Reason Signature present, unverified

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 darylmcd

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/darylmcd/Roslyn-Backed-MCP
Repository type git
Commit f8734a2f8a12d5445c7c831696b6f1f5e9fd52d4
Project URL https://github.com/darylmcd/Roslyn-Backed-MCP
MCP tools · 171 exposed · ~23,672 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
find_implementations ~191

Find concrete implementations of an interface or abstract member. Use metadataName without an exact cursor; generator partials are deduped by default.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number — must point at the symbol name token
filePathstring|null–Optional: absolute path to the source file
includeGeneratedPartialsboolean–When true, emit every partial-declaration location (including generator-emitted .g.cs files). Default false dedupes to user-authored partials.
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.IMyInterface
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_overloads ~270

Enumerate every overload of a member by type + name, including BCL/NuGet methods with no workspace source — the case symbol_search cannot reach.

NameTypeReqDescription
includeInheritedboolean–Optional: when true, also walk the base-class chain for additional overloads. Inaccessible (e.g. private) base members are excluded via Roslyn's own accessibility rules; there is no override-chain de…
memberNamestringyesBare member name to enumerate overloads of, e.g. 'Max'. No signature needed — resolves ALL overloads of that name. Extension methods are out of scope — query the extending static class directly inste…
projectNamestring|null–Optional: restrict type resolution to one project by name (case-sensitive), for multi-targeted solutions where the same type could differ across TFMs.
typeMetadataNamestringyesFully qualified metadata name of the containing type, e.g. 'System.Math' or 'System.Collections.Generic.List`1' (backtick arity for generics).
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_overrides ~140

Find true virtual or abstract overrides — only symbols actually marked `override`. Excludes sibling interface implementations; use member_hierarchy for those.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_property_writes ~140

Find every property assignment and classify its WriteKind as ObjectInitializer, Assignment, OutRef, or PrimaryConstructorBind.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file containing the property
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_references ~380

Find every reference to one symbol across the solution. Use summary=true for high fan-out and projectFilter for named projects; use find_references_bulk for many symbols.

NameTypeReqDescription
allowElicitationboolean–Default false (agent-first). When false, a metadataName resolving to more than one candidate returns the structured candidate list to the calling agent. When true AND the client supports form elicita…
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
limitinteger–Maximum number of references to return (default: 100)
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
offsetinteger–Number of references to skip before returning results (default: 0)
projectFilterstring|null–Optional: case-sensitive Project.Name filter to scope the result; comma-separated for multiple projects (e.g. 'Foo.Core,Foo.Tests'). Null/empty preserves the unfiltered solution-wide walk.
summaryboolean–When true, drops per-ref preview text to keep the response small for high-fan-out symbols. File path + line + column + classification still populated. Default false preserves the v1.18.2 shape.
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstring|null–Optional: the workspace session identifier returned by workspace_load. With one workspace loaded you may omit it — the read-path middleware resolves it automatically; pass it explicitly when two or m…

No output schema declared.

No examples provided.

find_references_bulk ~259

Find references for up to 50 symbols in one call. Each locator sets exactly one of symbolHandle, metadataName, or filePath+line+column.

NameTypeReqDescription
includeDefinitionboolean–Include the definition location in each result (default: false)
maxItemsPerSymbolinteger–Maximum number of reference locations to keep per symbol (default: 100). Applied BEFORE the outer envelope is assembled so the cap actually bounds aggregate output. Each result's `truncated` flag ind…
summaryboolean–When true, drops per-ref preview text to keep each symbol's references small for high-fan-out batches. File path + line + column + classification still populated. Default false preserves the v1.18.2…
symbolsarrayyesArray of locator objects (max 50). Example shape: symbols: [ { metadataName: "SampleLib.IAnimal" }, { filePath: "C:/src/x.cs", line: 10, column: 5 } ]
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_reflection_usages ~158

Find solution-wide reflection API usage, including typeof, Type.GetMethod, Activator.CreateInstance, and Assembly.Load, bucketed by UsageKind. isComplete=false means totals are lower bounds.

NameTypeReqDescription
limitinteger–Maximum number of usages to return per call (default: 200); primary payload cap.
offsetinteger–Number of usages to skip before returning results (default: 0).
projectNamestring|null–Optional: filter by project name
summaryboolean–When true, return only per-UsageKind aggregate counts (no item arrays). 10-100x smaller payload on reflection-heavy solutions.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_shared_members ~143

Find private members of a type that are referenced by multiple public methods. Helps plan type extractions by identifying shared dependencies that would need duplication or extraction.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_type_consumers ~128

File-granularity rollup of source files referencing a named type, with deduped usage kinds and site counts. Unlike find_type_usages, it does not classify individual sites.

NameTypeReqDescription
limitinteger–Maximum number of file rollup entries to return (default: 100)
typeNamestringyesType name to resolve. Accepts a fully qualified metadata name (e.g. 'Namespace.TypeName' or 'List`1') or a short type name when unambiguous.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_type_mutations ~172

Heavy analysis: find every mutating member of a type (settable properties, methods writing instance state) and their external callers, classified as construction-phase vs post-construction.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file containing the type
limitinteger–Maximum number of mutating members to return (default: 100)
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_type_usages ~189

Find all type usages across the solution and classify each role, including return, parameter, property, field, generic argument, inheritance, cast, and construction.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file containing the type
limitinteger–Maximum number of usages to return (default: 100)
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. System.Collections.Generic.Dictionary`2
offsetinteger–Number of usages to skip before returning results (default: 0)
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

find_unused_symbols ~303

Find symbols with zero solution-wide references, with confidence levels. Skips convention-invoked shapes by default. Scan failures throw; successful scans may still under-count.

NameTypeReqDescription
excludeConventionInvokedboolean–When true (default), skip symbols matching convention-invoked shapes — EF ModelSnapshot, xUnit/MSTest/NUnit fixtures, ASP.NET middleware (Invoke/InvokeAsync(HttpContext)), SignalR Hubs, FluentValidat…
excludeEnumsboolean–When true, skip enum members (often referenced indirectly).
excludeRecordPropertiesboolean–When true, skip properties declared on record types (often DTO/serialization shaped).
excludeTestProjectsboolean–When true, skip projects whose names look like test projects (*.Tests, *Tests).
excludeTestsboolean–When true, skip symbols in test fixture types (xUnit/NUnit/MSTest-shaped names and attributes).
includePublicboolean–Include public symbols in the search (default: false, since public APIs may be consumed externally)
limitinteger–Maximum number of results to return (default: 50)
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

fix_all_apply ~54

Apply a fix-all preview token across its recorded scope. Use only after fix_all_preview; tokens from unrelated preview families are rejected before workspace mutation.

NameTypeReqDescription
previewTokenstringyesThe preview token returned by fix_all_preview

No output schema declared.

No examples provided.

fix_all_preview ~149

Preview one Fix All provider across document, project, or solution scope. Use after list_analyzers or project_diagnostics; the result identifies per-occurrence code_fix_preview fallback when needed.

NameTypeReqDescription
diagnosticIdstringyesDiagnostic identifier to fix everywhere, e.g. CS8019, IDE0005
filePathstring|null–Required when scope is 'document': absolute path to the source file
projectNamestring|null–Required when scope is 'project': the project name
scopestringyesScope of the fix: 'document', 'project', or 'solution'
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

format_check ~75

Report documents that Roslyn would reformat without applying edits. Use projectName to scope the workspace-wide check; results include violations and change counts.

NameTypeReqDescription
projectNamestring|null–Optional: restrict the check to a specific project name. Defaults to all projects.
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

format_document_apply ~36

Apply a previously previewed format document operation using its preview token

NameTypeReqDescription
previewTokenstringyesPreview token from format_document_preview.

No output schema declared.

No examples provided.

format_document_preview ~49

Preview formatting a document: applies standard C# formatting rules

NameTypeReqDescription
filePathstringyesAbsolute path to the source file.
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

format_range_apply ~36

Apply a previously previewed range format operation using its preview token

NameTypeReqDescription
previewTokenstringyesPreview token from format_range_preview.

No output schema declared.

No examples provided.

format_range_preview ~130

Preview formatting a specific range within a document — more efficient than full-document formatting and produces smaller diffs

NameTypeReqDescription
endColumnintegeryes1-based end column of the range to format
endLineintegeryes1-based end line of the range to format
filePathstringyesAbsolute path to the source file.
startColumnintegeryes1-based start column of the range to format
startLineintegeryes1-based start line of the range to format
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

get_code_actions ~130

Get available Roslyn code fixes and refactorings at a position or selection range in a source file

NameTypeReqDescription
endColumninteger|null–Optional: 1-based end column number for a selection range
endLineinteger|null–Optional: 1-based end line number for a selection range
filePathstringyesAbsolute path to the source file
startColumnintegeryes1-based start column number
startLineintegeryes1-based start line number
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_cohesion_metrics ~211

Measure type cohesion via LCOM4 metrics. Identifies independent method clusters that share no state — a score > 1 suggests the type has multiple responsibilities and should be split.

NameTypeReqDescription
excludeTestProjectsboolean–When true, exclude MSBuild test projects (IsTestProject / test framework packages) from analysis
excludeTestsboolean–When true, exclude test classes (names/paths suggesting tests) from results after metrics are computed
filePathstring|null–Optional: filter by source file path
includeInterfacesboolean–When true, include interface types in results and mark them with TypeKind=Interface
limitinteger–Maximum number of results to return (default: 50)
minMethodsinteger|null–Optional: minimum instance method count threshold (default: 2)
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_completions ~213

Get IntelliSense completions at a member/token position, not the literal dot column. Use probe_position when uncertain; triggerCharacter='.' requests instance-member candidates.

NameTypeReqDescription
columnintegeryes1-based column number
filePathstringyesAbsolute path to the source file
filterTextstring|null–Optional: case-insensitive prefix filter applied to candidate FilterText/DisplayText (UX-007)
lineintegeryes1-based line number
maxItemsinteger–Maximum number of completion items to return (default: 100, must be > 0)
triggerCharacterstring|null–Optional: trigger character (e.g. '.') that signals completion was invoked by typing this character. When supplied, Roslyn returns the member-access candidate set (instance members on the receiver ex…
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_complexity_metrics ~210

Calculate cyclomatic complexity, lines of code, nesting depth, parameter count, and an approximate maintainability index (0-100, higher is better) for methods in the workspace.

NameTypeReqDescription
filePathstring|null–Optional: filter by source file path
filePathsarray|null–Optional: list of source file paths to include (union with filePath). Pass as a native JSON array of absolute file paths, not a JSON-encoded string. Example: ["/abs/path/a.cs", "/abs/path/b.cs"]. Emp…
limitinteger–Maximum number of results to return (default: 50)
minComplexityinteger|null–Optional: minimum cyclomatic complexity threshold (default: return all)
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_coupling_metrics ~242

Compute per-type Martin coupling metrics: AfferentCoupling Ca, EfferentCoupling Ce, Instability I = Ce/(Ca+Ce). Classifies types stable / balanced / unstable / isolated. Companion to get_cohesion_metrics — cohesion looks inward, coupling outward.

NameTypeReqDescription
excludeTestProjectsboolean–When true, exclude MSBuild test projects (IsTestProject / test framework packages) from analysis
includeInterfacesboolean–When true, include interface types alongside classes/structs/records
limitinteger–Maximum number of per-type results to return (default: 100). Ignored when summary=true: the rollup always covers every analyzed type.
projectNamestring|null–Optional: filter by project name (case-insensitive exact match)
summaryboolean–When true, return per-project rollup counts (typeCount, avgInstability, stableCount, balancedCount, unstableCount, isolatedCount) without per-type detail rows. 10-100x smaller payload on multi-projec…
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_di_registrations ~253

Scan solution DI registrations (AddSingleton/AddScoped/AddTransient) and map services to implementations. isComplete=false means totals are observed lower bounds.

NameTypeReqDescription
limitinteger–Maximum items returned per call. Applies to the registrations list in detailed mode (default 100) and to the override-chain summary page when summary=true (clamped to [1, 500]).
offsetinteger–0-based offset into the paginated response. Applies to the registrations list in detailed mode and to the override-chain summary page when summary=true.
projectNamestring|null–Optional: filter by project name
showLifetimeOverridesboolean–When true, also emit overrideChains[] grouping registrations by service type with the winning lifetime, lifetime-mismatch flag (Singleton vs Scoped vs Transient), and dead-registration count. Default…
summaryboolean–When true, return a compact aggregate shape for large DI graphs. The detailed/default response is paginated via offset/limit when false.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_editorconfig_options ~73

Get the effective .editorconfig options for a source file — returns the active code style rules, formatting settings, and naming conventions that Roslyn applies to the file.

NameTypeReqDescription
filePathstringyesAbsolute path to the source file to inspect.
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

get_msbuild_properties ~160

Dump evaluated MSBuild properties for a project. The full set is large (frequently 60KB+); always pass a propertyNameFilter substring or an includedNames allowlist unless you need everything.

NameTypeReqDescription
includedNamesarray|null–Optional: explicit allowlist of property names to return. Pass as a native JSON array, not a JSON-encoded string. Example: ["Nullable", "TargetFramework"]. Takes precedence over propertyNameFilter wh…
projectNamestringyesProject name as loaded in the workspace
propertyNameFilterstring|null–Optional: case-insensitive substring filter applied to property names (e.g., 'Nullable', 'Target')
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

get_namespace_dependencies ~74

Get the namespace dependency graph for the solution and detect circular namespace dependencies.

NameTypeReqDescription
circularOnlyboolean–When true, return only namespaces and edges involved in circular dependencies
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_nuget_dependencies ~102

List NuGet package references across workspace projects. isComplete=false means totals are observed lower bounds because one or more projects failed evaluation; healthy project data is retained.

NameTypeReqDescription
summaryboolean–When true, returns a compact per-package summary `{packageId, version, projectCount, distinctVersionCount}` instead of the full per-project graph. Default false preserves the verbose shape.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_operations ~130

Return the language-agnostic IOperation tree at an exact source token for behavioral analysis. Use a method identifier or operator token; approximate cursors may select a narrower operation.

NameTypeReqDescription
columnintegeryes1-based column number — must point at the token whose operation you want (UX-003)
filePathstringyesAbsolute path to the source file.
lineintegeryes1-based line number
maxDepthinteger–Maximum depth of the operation tree to return (default: 3)
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

get_prompt_text ~155

Render any registered MCP prompt as plain text via the tool channel, for clients that cannot use the prompts/get channel. Pass `promptName` plus a `parametersJson` object; returns messages as JSON.

NameTypeReqDescription
parametersJsonstring–JSON object of named parameters the prompt expects (e.g. {"workspaceId":"...","filePath":"...","line":12}). Service-typed parameters (IDiagnosticService, IWorkspaceManager, etc.) are resolved automat…
promptNamestringyesThe name of the prompt as registered with [McpServerPrompt(Name = "...")]. Use prompts/list or read roslyn://server/catalog/prompts/{offset}/{limit} for the full list.

No output schema declared.

No examples provided.

get_source_text ~175

Read source text of a document as the loaded Roslyn workspace currently sees it (may differ from disk until reload). Returns the full file by default; pass startLine/endLine (1-based, inclusive) to slice. Output is capped at maxChars.

NameTypeReqDescription
endLineinteger|null–Optional: 1-based last line to return (inclusive). Defaults to the last line of the file.
filePathstringyesAbsolute path to the source file
maxCharsinteger–Maximum characters to return (default 65536). Truncates with a marker if the requested range exceeds the cap.
startLineinteger|null–Optional: 1-based first line to return (inclusive). Defaults to 1.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

get_syntax_tree ~327

Get a hierarchical syntax tree for a file or range, including node kinds and positions. Response budgets stop at the first cap and emit a TruncationNotice.

NameTypeReqDescription
endLineinteger|null–Optional: end line (1-based). When combined with startLine, returns all top-level nodes whose span overlaps [startLine, endLine] — including nodes that start before startLine or end after endLine.
filePathstringyesAbsolute path to the source file
maxDepthinteger–Maximum depth of the syntax tree to return (default: 3)
maxNodesinteger–Caps the total number of syntax nodes emitted. Walker stops at the first node that would exceed and emits TruncationNotice. Default 5000.
maxOutputCharsinteger–LEAF-TEXT-ONLY budget: caps the total characters emitted in node.Text across all leaves. Does NOT bound structural JSON. Use maxTotalBytes for total response size. Default 65536.
maxTotalBytesinteger–Hard cap on estimated total JSON-serialized response size in bytes (~120 bytes per node + leaf text length). Use this to guarantee the response fits under the MCP cap. Default 65536.
startLineinteger|null–Optional: start line (1-based). When combined with endLine, returns all top-level nodes whose span overlaps [startLine, endLine] — including nodes that start before startLine or end after endLine.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

go_to_definition ~251

Find the definition location(s) of the symbol at a position or metadataName. Use find_implementations instead when the symbol is an interface or abstract member and you want the concrete declarations.

NameTypeReqDescription
allowElicitationboolean–Default false (agent-first). When false, a metadataName resolving to more than one candidate returns the structured candidate list to the calling agent. When true AND the client supports form elicita…
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstring|null–Optional: the workspace session identifier returned by workspace_load. With one workspace loaded you may omit it — the read-path middleware resolves it automatically; pass it explicitly when two or m…

No output schema declared.

No examples provided.

goto_type_definition ~142

Navigate to the type definition of a symbol (e.g., for a variable, go to its type's declaration rather than the variable's declaration)

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

impact_analysis ~265

Analyze a symbol change's blast radius: references, affected declarations, and affected projects in one call. Use summary=true for broad-impact symbols to return counts only.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
declarationsLimitinteger–Maximum number of affected declarations to return (default: 100)
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
referencesLimitinteger–Maximum number of references to return per page (default: 100). Larger pages can blow MCP output budgets on broad-impact symbols.
referencesOffsetinteger–Number of references to skip before returning results (default: 0)
summaryboolean–When true, drops the per-reference and per-declaration arrays and returns only the targetSymbol, affectedProjects list, totals, and hasMore flags. Default false preserves the v1.18.x shape.
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

list_analyzers ~119

List loaded Roslyn analyzers and their rules — which diagnostic IDs are available for code_fix_preview or fix_all_preview. offset/limit paginate the flattened rule list, not whole analyzers.

NameTypeReqDescription
limitinteger–Maximum number of analyzer rules to return (default: 100)
offsetinteger–Number of analyzer rules to skip before returning results (default: 0)
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

member_hierarchy ~145

Summarize a member's base chain, true `override` members, and sibling interface implementations — the superset of find_overrides and find_base_members.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

migrate_package_preview ~78

Preview migrating one package dependency to another across all affected projects in the loaded workspace.

NameTypeReqDescription
newPackageIdstringyesReplacement package id
newVersionstringyesReplacement package version
oldPackageIdstringyesExisting package id to replace
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

move_file_apply ~35

Apply a previously previewed file move using its preview token.

NameTypeReqDescription
previewTokenstringyesPreview token from move_file_preview.

No output schema declared.

No examples provided.

move_file_preview ~119

Preview moving an existing source file, optionally updating its namespace to match the destination folder.

NameTypeReqDescription
destinationProjectNamestring|null–Optional: destination project name or project file path; defaults to the source project
sourceFilePathstringyesAbsolute path to the source file.
targetFilePathstringyesAbsolute path to the destination file.
updateNamespaceboolean–When true, updates the namespace declaration in the moved file to match the destination folder
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

move_type_to_file_apply ~39

Apply a previously previewed move-type-to-file refactoring

NameTypeReqDescription
previewTokenstringyesPreview token from move_type_to_file_preview.

No output schema declared.

No examples provided.

move_type_to_file_preview ~126

Preview moving a declaration from a multi-type source file into its own file in the same project. The source must contain at least two top-level types; use move_file_preview for single-type moves.

NameTypeReqDescription
sourceFilePathstringyesAbsolute path to the source file containing the type.
targetFilePathstring|null–Optional: target file path. If omitted, defaults to {TypeName}.cs in the same directory
typeNamestringyesName of the type to move
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

move_type_to_project_preview ~156

Preview moving a C# type declaration into another project.

NameTypeReqDescription
preserveNamespaceboolean–When true, keep the type's current namespace if targetNamespace is null (legacy). When false (default), use targetNamespace or the target project's default namespace.
sourceFilePathstringyesAbsolute path to the source file containing the type.
targetNamespacestring|null–Optional: explicit namespace for the moved type. When null and preserveNamespace is false, uses the target project's default namespace.
targetProjectNamestringyesTarget project name or project file path
typeNamestringyesName of the type declaration to move
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

nuget_vulnerability_scan ~109

Scan NuGet references for known CVEs via `dotnet list package`. Default includeTransitive=false returns direct references only; pass true for transitive coverage. Requires .NET 8+ SDK.

NameTypeReqDescription
includeTransitiveboolean–Include transitive (indirect) dependencies in the scan. Default: false
projectNamestring|null–Optional: restrict scan to a specific project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

organize_usings_apply ~39

Apply a previously previewed organize usings operation using its preview token

NameTypeReqDescription
previewTokenstringyesPreview token from organize_usings_preview.

No output schema declared.

No examples provided.

organize_usings_preview ~54

Preview organizing using directives in a file: removes unused usings and sorts them

NameTypeReqDescription
filePathstringyesAbsolute path to the source file.
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

parameter_object_preview ~373

Preview grouping method parameters into a record and rewriting every callsite. Refuses with a reason rather than partially proceeding; redeem the preview token through apply_with_verify.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number of the method declaration
dtoFoldersarray|null–Optional folder segments under the project root for the new record file. Pass as a native JSON array, not a JSON-encoded string. Example: ["Models", "Requests"]. Defaults to folders derived from the…
dtoNamespacestring|null–Optional namespace for the new record. Defaults to the method's containing namespace.
dtoProjectNamestring|null–Optional override project for the new record. Defaults to the method's project. When different, every caller project must already reference it (no auto-add of <ProjectReference> in v1).
filePathstring|null–Optional: absolute path to the source file containing the method declaration
lineinteger|null–Optional: 1-based line number of the method declaration
metadataNamestring|null–Optional: bare fully-qualified method name without parentheses (e.g. 'Foo.Bar.Baz').
newTypeNamestringyesPascalCase name of the new record type (e.g. 'OrderRequest').
parameterNamestring|null–Optional name for the new single record-typed parameter on the rewritten method. Defaults to the camelCased newTypeName.
parameterNamesarrayyesNames of method parameters to group, in the order they should appear on the new record's primary constructor. Must contain at least two entries.
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

pragma_scope_widen ~131

Extend a matching '#pragma warning restore &lt;id&gt;' to cover an uncovered fire site. Refuses when the move would cross a #region/#endregion boundary or nest into another disable for the same id.

NameTypeReqDescription
diagnosticIdstringyesDiagnostic id whose 'restore' is being moved (e.g. CA2025)
filePathstringyesAbsolute path to the source file
lineintegeryes1-based line number that must be covered after the widen (the diagnostic fire site)
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

preview_code_action ~156

Preview the changes that a specific code action would make. Use get_code_actions first to get the available actions and their indices.

NameTypeReqDescription
actionIndexintegeryesThe index of the code action to preview (from get_code_actions result)
endColumninteger|null–Optional: 1-based end column number for a selection range
endLineinteger|null–Optional: 1-based end line number for a selection range
filePathstringyesAbsolute path to the source file
startColumnintegeryes1-based start column number
startLineintegeryes1-based start line number
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

Install

How do I install the io.github.darylmcd/roslyn-mcp server?

io.github.darylmcd/roslyn-mcp runs locally as a NuGet package, launched with dnx Darylmcd.RoslynMcp@5.0.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 · Darylmcd.RoslynMcp

# add to Claude Code
claude mcp add darylmcd-roslyn-mcp -- dnx Darylmcd.RoslynMcp@5.0.0 --yes
Common questions

What is the io.github.darylmcd/roslyn-mcp server?

io.github.darylmcd/roslyn-mcp is listed in the public MCP registry as io.github.darylmcd/roslyn-mcp. Local-first MCP server for semantic C# analysis & refactoring via Roslyn & MSBuildWorkspace. This page covers its NuGet package (Darylmcd.RoslynMcp).

Is the io.github.darylmcd/roslyn-mcp server safe to use?

io.github.darylmcd/roslyn-mcp scores 80 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 4 November 2026. It declares no install or post-install scripts. 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 io.github.darylmcd/roslyn-mcp server expose?

io.github.darylmcd/roslyn-mcp exposes 171 tools: add_central_package_version_preview, add_package_reference_preview, add_pragma_suppression, add_project_reference_preview, add_target_framework_preview, and 166 more. Their descriptions and schemas cost roughly 23,672 tokens of context every time the server is loaded.

Is the io.github.darylmcd/roslyn-mcp server still maintained?

io.github.darylmcd/roslyn-mcp is still listed as active in the MCP registry. We last reached this channel on 4 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 io.github.darylmcd/roslyn-mcp server under?

io.github.darylmcd/roslyn-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.