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.

−5 this week 80 Trust /100

Last scanned (34 minutes 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 7 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 Management64
  • 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 5 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
preview_multi_file_edit ~143

Preview text edits to multiple files against a single Solution snapshot; returns per-file diffs plus a token redeemed via preview_multi_file_edit_apply.

NameTypeReqDescription
fileEditsarrayyesArray of file edits. Each has filePath (string) and edits (array of TextEditDto with startLine, startColumn, endLine, endColumn, newText)
skipSyntaxCheckboolean–When false (default), each C# file is parsed after edits; all non-hidden parse diagnostics and parser-recovered skipped text reject the preview. Set true only for intentional intermediate states.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

preview_multi_file_edit_apply ~49

Apply a previously previewed multi-file edit. Rejects stale tokens if the workspace has changed since preview.

NameTypeReqDescription
previewTokenstringyesThe preview token returned by preview_multi_file_edit

No output schema declared.

No examples provided.

preview_record_field_addition ~188

Pre-flight audit for adding a positional field to a record: construction, deconstruction, property-pattern, and `with`-expression sites. Catches breaking shapes the C# compiler does NOT flag.

NameTypeReqDescription
defaultValuestring|null–Optional default-value expression to splice into rewritten construction sites (e.g. 'false', 'Guid.Empty'). When null, rewrites use a /* TODO */ placeholder.
newFieldNamestringyesThe proposed new positional field name (PascalCase, valid C# identifier)
newFieldTypestringyesThe proposed new field type display string (e.g. 'bool', 'System.Guid', 'string?')
recordMetadataNamestringyesFully qualified metadata name of the target record (e.g. 'SampleLib.MyRecord')
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

probe_position ~91

Return raw lexical and containing-symbol state at a source position without adjacent-identifier fallback; a whitespace caret reports Whitespace. Useful for test fixtures.

NameTypeReqDescription
columnintegeryes1-based column number
filePathstringyesAbsolute path to the source file
lineintegeryes1-based line number
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

project_diagnostics ~229

Get workspace diagnostics: compiler CS*, analyzers CA*/IDE*, and load issues. Unlike compile_check, which is CS-only, this includes analyzer and workspace results.

NameTypeReqDescription
diagnosticIdstring|null–Optional: filter to a specific diagnostic ID (e.g., CS8019, CA1000)
filestring|null–Optional: filter by file path
limitinteger–Maximum diagnostics to return per call (default: 200); primary payload cap.
offsetinteger–Number of diagnostics to skip before returning results (default: 0)
projectNamestring|null–Optional: filter by project name
severitystring|null–Minimum severity (Error, Warning, Info, Hidden); default Info. total* fields ignore severity/diagnosticId filters; filteredDiagnostics counts matches before pagination.
summaryboolean–When true, return counts grouped by diagnostic ID, severity, and category (no individual diagnostics). 10-100x smaller payload.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

project_graph ~37

Get the project dependency graph and project metadata for a loaded workspace

NameTypeReqDescription
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

recommend_workflow ~141

Recommend a compact first-hop workflow for a task. Returns primaryTools, followUpTools, avoid, why, and requiredWorkspaceState so agents pick focused Roslyn tools without reading the full catalog.

NameTypeReqDescription
filePathstring|null–Optional absolute file path relevant to the task.
intentstring|null–Optional explicit intent label when the task text is ambiguous.
symbolstring|null–Optional symbol name, metadata name, or handle relevant to the task.
taskstringyesNatural-language task, e.g. 'find callers', 'outline this file', 'compile sanity', 'run related tests', or 'rename this symbol'.

No output schema declared.

No examples provided.

record_field_add_with_satellites_preview ~140

Composite preview proposing satellite edits (Clone/Snapshot/With) when a type gains a field. Requires ≥2 sibling fields with identical satellite coverage, else empty with `patternDetectionReason`.

NameTypeReqDescription
newFieldNamestringyesThe new field name (valid C# identifier)
newFieldTypestringyesThe new field type display string (e.g. 'int', 'string', 'System.Guid')
typeMetadataNamestringyesFully qualified metadata name of the target record/class (e.g. 'SampleLib.Counters')
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_central_package_version_preview ~61

Preview removing a PackageVersion entry from Directory.Packages.props.

NameTypeReqDescription
packageIdstringyesNuGet package id to remove from Directory.Packages.props
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_dead_code_apply ~37

Apply a previously previewed dead-code removal operation.

NameTypeReqDescription
previewTokenstringyesThe preview token returned by remove_dead_code_preview

No output schema declared.

No examples provided.

remove_dead_code_preview ~111

Preview removing unused symbols by handle, preserving exterior trivia. removeEmptyFiles deletes files only when no real declarations remain (UX-005).

NameTypeReqDescription
removeEmptyFilesboolean–When true, delete files whose remaining content is purely trivia or empty namespace shells after the removal (UX-005). False keeps the file and instead emits a warning
symbolHandlesarrayyesArray of stable symbol handles returned by semantic tools
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_interface_member_preview ~112

Preview removal of a dead interface method, property, or event and every implementation. Refuses if a non-implementation caller exists; redeem via remove_dead_code_apply.

NameTypeReqDescription
interfaceMemberHandlestringyesSymbol handle from symbol_search/find_unused_symbols/etc. pointing at an interface method, property, or event.
removeEmptyFilesboolean–When true, also delete files left empty after the removal (default: false).
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_package_reference_preview ~68

Preview removing a PackageReference from a project file.

NameTypeReqDescription
packageIdstringyesNuGet package id to remove
projectNamestringyesProject name or project file path within the loaded workspace
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_project_reference_preview ~71

Preview removing a ProjectReference from a project file.

NameTypeReqDescription
projectNamestringyesProject name or project file path within the loaded workspace
referencedProjectNamestringyesReferenced project name or project file path
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

remove_target_framework_preview ~75

Preview removing a target framework from a project file.

NameTypeReqDescription
projectNamestringyesProject name or project file path within the loaded workspace
targetFrameworkstringyesTarget framework moniker to remove, for example net8.0
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

rename_apply ~44

Apply a previously previewed rename refactoring using its preview token. Rejects stale tokens if the workspace has changed.

NameTypeReqDescription
previewTokenstringyesPreview token from rename_preview.

No output schema declared.

No examples provided.

rename_preview ~235

Preview a workspace-wide symbol rename and its affected edits. Prefer symbolHandle for precise targeting; set summary=true for high-fan-out symbols (>150 references) to fit the MCP output cap.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number of the symbol to rename
filePathstring|null–Optional: absolute path to the source file containing the symbol
lineinteger|null–Optional: 1-based line number of the symbol to rename
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
newNamestringyesThe new name for the symbol
summaryboolean–When true, replace per-file unified diffs with compact one-line summaries. The stored preview still carries every real edit, so rename_apply rewrites all references correctly. Use for high-fan-out sy…
symbolHandlestring|null–Optional: stable symbol handle returned by other semantic tools
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

replace_invocation_preview ~165

Preview rewriting every oldMethod call to newMethod by matching parameter names and reordering arguments. Redeem the returned token with bulk_replace_type_apply.

NameTypeReqDescription
newMethodstringyesFully-qualified signature of the replacement method: 'Namespace.Type.NewMethod(ParamTypeA, ParamTypeB)'. Parameter names (matched against oldMethod's) drive the argument reorder.
oldMethodstringyesFully-qualified signature of the method being replaced: 'Namespace.Type.OldMethod(ParamType1, ParamType2)'. Parameter-type list disambiguates overloads.
scopestring|null–Optional: scope filter — reserved for future use (currently only 'all' is supported).
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

replace_string_literals_preview ~143

Preview replacing argument or initializer string literals with constant or identifier expressions for magic-string centralization; redeem via preview_multi_file_edit_apply.

NameTypeReqDescription
filePathstring|null–Optional: restrict scope to this file path
projectNamestring|null–Optional: restrict scope to this project (name or file path)
replacementsarrayyesReplacement pairs. Each has literalValue (the exact string literal to find, without quotes), replacementExpression (the C# expression text to substitute, e.g. 'Constants.MyValue'), and optional using…
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

restructure_preview ~172

Preview a syntax-tree pattern-based C# find-and-replace. __name__ placeholders capture and splice subexpressions; redeem the result through preview_multi_file_edit_apply.

NameTypeReqDescription
filePathstring|null–Optional: restrict scope to this file path
goalstringyesThe replacement goal. Must be the same syntactic kind as pattern. Placeholders are substituted (e.g., 'return new { count = __items__.Length, items = __items__ };')
patternstringyesThe pattern to match. C# expression or statement, with __name__ placeholders (e.g., 'return __items__;')
projectNamestring|null–Optional: restrict scope to this project (name or file path)
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

revert_apply_by_sequence ~78

Revert a specific earlier solution-snapshot apply by its workspace_changes sequence number. Refuses when a later apply touched the same file; revert blocking sequences first.

NameTypeReqDescription
sequenceNumberintegeryesThe sequence number reported by workspace_changes for the apply you want to revert
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

revert_last_apply ~64

SINGLE-SLOT LIFO: reverts only the latest apply; a second call reports 'No operation to revert'. For earlier workspace_changes entries, use revert_apply_by_sequence. Does not remove created files.

NameTypeReqDescription
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

scaffold_first_test_file_preview ~169

Preview scaffolding the FIRST <Service>Tests.cs fixture for a service. Errors when the destination file already exists — use scaffold_test_preview for follow-on tests.

NameTypeReqDescription
serviceMetadataNamestringyesFully-qualified type name of the production service (e.g. RoslynMcp.Roslyn.Services.RestructureService)
testFrameworkstring–Test framework: mstest, xunit, nunit, or auto (infer from PackageReference in the test csproj)
testProjectNamestring|null–Optional: name or absolute path of the destination test project. When omitted, the scaffolder picks the unique project that references the service's containing project AND whose name ends in '.Tests'.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

scaffold_test_apply ~35

Apply a previously previewed test scaffolding operation.

NameTypeReqDescription
previewTokenstringyesThe preview token returned by scaffold_test_preview

No output schema declared.

No examples provided.

scaffold_test_batch_preview ~124

Preview scaffolding test files for multiple target types in one composite preview; apply via apply_composite.

NameTypeReqDescription
targetsarrayyesArray of targets. Each item: { targetTypeName: string, targetMethodName?: string }
testFrameworkstring–Test framework: mstest, xunit, nunit, or auto (default — inferred from the test project's PackageReferences)
testProjectNamestringyesTest project name or project file path within the loaded workspace
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

scaffold_test_preview ~268

Preview scaffolding a new test file for a target type; MSTest/xUnit/NUnit auto-detected and a sibling fixture's conventions replicated.

NameTypeReqDescription
referenceTestFilestring|null–Optional: absolute path to an existing sibling test file whose scaffolding (class attributes, base class, IClassFixture<T> constructor) should be replicated. When omitted, the most-recently-modified…
targetMethodNamestring|null–Optional: target method name for the generated test stub
targetTypeNamestringyesTarget type name for the generated test
testFrameworkstring–Test framework: mstest, xunit, nunit, or auto (infer from PackageReference in the test csproj)
testProjectNamestringyesTest project name or project file path within the loaded workspace
useSamplingboolean–When true on a 2026-07-28 request with MRTR sampling input support, request a sampled Given/When/Then test method name from the MCP client. Legacy and sampling-unsupported requests use the determinis…
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

scaffold_type_apply ~35

Apply a previously previewed type scaffolding operation.

NameTypeReqDescription
previewTokenstringyesThe preview token returned by scaffold_type_preview

No output schema declared.

No examples provided.

scaffold_type_preview ~206

Preview scaffolding a new type file in a project; interface members are stubbed unless implementInterface is false.

NameTypeReqDescription
baseTypestring|null–Optional: base type name
implementInterfaceboolean–When true (default), auto-implement interface members of baseType/interfaces as NotImplementedException stubs; set false to emit an empty class body
interfacesarray|null–Optional: additional interface names to declare on the scaffolded type. Pass as a native JSON array, not a JSON-encoded string. Example: ["IDisposable", "IMyService"].
namespacestring|null–Optional: namespace override
projectNamestringyesProject name or project file path within the loaded workspace
typeKindstring–Type kind: class, interface, record, or enum
typeNamestringyesType name to create
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

security_analyzer_status ~52

Check whether security analyzer packages are present in the workspace. Returns which analyzers are installed and recommends missing packages for improved security coverage.

NameTypeReqDescription
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

security_diagnostics ~83

Get security-relevant diagnostics with OWASP categorization, severity classification, and fix hints. Filters the existing diagnostic pipeline to return only security findings.

NameTypeReqDescription
filestring|null–Optional: filter by file path
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

semantic_grep ~188

Token-aware .NET regex search of C# identifiers, strings, comments, or all, not ripgrep. Identifier scope splits member access, so Task\.Run cannot match.

NameTypeReqDescription
limitinteger–Page size — maximum hits to return per call (default 500). Hits beyond the 500-hit collection ceiling are dropped; narrow pattern or projectName if hasMore stays true at offset=500.
offsetinteger–Number of hits to skip before returning results (default: 0).
patternstringyes.NET regex pattern to match against token text.
projectNamestring|null–Optional: case-sensitive Project.Name filter to scope the walk.
scopestring–Token-kind scope: 'identifiers' | 'strings' | 'comments' | 'all'.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

semantic_search ~114

Search symbols with structured Roslyn predicates parsed from natural language, not embeddings or vector search. The async predicate requires the literal async modifier.

NameTypeReqDescription
limitinteger–Maximum number of results to return (default: 50)
projectNamestring|null–Optional: filter by project name
querystringyesSemantic search query, e.g. 'async methods returning Task<bool>', 'classes implementing IDisposable', 'public static methods'
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

server_heartbeat ~51

Connection readiness block only (state/loadedWorkspaceCount/stdioPid/serverStartedAt); cheaper than server_info. Do not poll waiting for `idle` to self-advance — a workspace_load call is required.

Input schema present but exposes no named parameters.

NameTypeReqDescription
connectionobjectyes–

No examples provided.

server_info ~48

Server version, capabilities, runtime, and workspace count plus a `connection` readiness block (state=idle|ready|degraded). workspace_list is authoritative for sessions; server_heartbeat is cheaper.

Input schema present but exposes no named parameters.

NameTypeReqDescription
capabilitiesobjectyes–
catalogVersionstringyes–
connectionobjectyes–
osstringyes–
pathBoundaryobject|nullyes–
productBoundariesarrayyes–
productShapestringyes–
resourceServerNamesobjectyes–
roslynVersionstringyes–
runtimestringyes–
serverstringyes–
surfaceobjectyes–
updateobject|nullyes–
versionstringyes–
workspaceCountintegeryes–
workspaceCountHintstring|nullyes–

No examples provided.

set_conditional_property_preview ~133

Preview setting an allowlisted property in a conditional PropertyGroup within a project file.

NameTypeReqDescription
conditionstringyesCondition expression using $(Configuration), $(TargetFramework), or $(Platform)
projectNamestringyesProject name or project file path within the loaded workspace
propertyNamestringyesAllowlisted property name (Nullable, LangVersion, ImplicitUsings, TargetFramework, DefineConstants, Optimize, DebugType, NoWarn, TreatWarningsAsErrors)
valuestringyesProperty value to set
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

set_diagnostic_severity ~144

Set dotnet_diagnostic.&lt;id&gt;.severity in .editorconfig for C# files (error, warning, suggestion, silent, none), scoped from a source file path.

NameTypeReqDescription
diagnosticIdstringyesDiagnostic id (e.g. CA1000, CS8602)
filePathstringyes(required) Absolute path to any C# file used to locate the applicable .editorconfig. Without this the server can't pick which .editorconfig to mutate.
severitystringyesSeverity: error, warning, suggestion, silent, or none
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

set_editorconfig_option ~146

Set a key/value in the applicable .editorconfig for a C# source file, creating one when needed. Read current options first; this direct apply is reversible through revert_last_apply.

NameTypeReqDescription
filePathstringyesAbsolute path to the C# source file whose .editorconfig should be updated.
keystringyesEditorConfig key on one line (e.g. dotnet_diagnostic.CA1000.severity)
valuestringyesSingle-line value without inline '#'/';' comments (e.g. warning, suggestion, silent, none; empty or 'unset' clears)
workspaceIdstringyesWorkspace session id from workspace_load.

No output schema declared.

No examples provided.

set_project_property_preview ~107

Preview setting an allowlisted property in a project file.

NameTypeReqDescription
projectNamestringyesProject name or project file path within the loaded workspace
propertyNamestringyesAllowlisted property name (Nullable, LangVersion, ImplicitUsings, TargetFramework, DefineConstants, Optimize, DebugType, NoWarn, TreatWarningsAsErrors)
valuestringyesProperty value to set
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

source_generated_documents ~51

List source-generated documents for a workspace or specific project

NameTypeReqDescription
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

split_class_preview ~112

Preview splitting a type into a new partial class file by moving selected members.

NameTypeReqDescription
filePathstringyesAbsolute path to the source file containing the type
memberNamesarrayyesMember names to move into the new partial class file
newFileNamestringyesFile name for the new partial class file, for example Dog.Behavior.cs
typeNamestringyesType name to split
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

split_service_with_di_preview ~169

Composite preview that splits a service type into N partition implementations plus a forwarding facade, and emits DI-registration deltas, under one preview token.

NameTypeReqDescription
hostRegistrationFilestring|null–Absolute path to the file containing the existing services.Add* registration for sourceType; pass null to scan the workspace for any matching registration.
partitionsarrayyesPartition specs: each { typeName, memberNames[] } — every MemberName must exist on sourceType and each member must belong to exactly one partition.
sourceFilePathstringyesAbsolute path to the source file containing the type to split
sourceTypestringyesName of the concrete type to split (e.g., 'Foo')
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

suggest_refactorings ~93

Return ranked workspace refactoring suggestions from complexity metrics, cohesion (LCOM4), and unused-symbol detection; each carries severity, target location, and a recommended tool sequence.

NameTypeReqDescription
limitinteger–Maximum number of suggestions to return (default: 20)
projectNamestring|null–Optional: filter by project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

symbol_impact_sweep ~252

Sweep downstream impact of a symbol change: references, non-exhaustive switches (CS8509/CS8524/IDE0072), and mapper/converter-suffix callsites. Returns a suggested-tasks list.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file containing the symbol
lineinteger|null–Optional: 1-based line number
maxItemsPerCategoryinteger|null–Optional cap on items per category (References, MapperCallsites, SwitchExhaustivenessIssues). Use together with summary=true on extremely high-fan-out symbols.
metadataNamestring|null–Optional: fully qualified metadata name (preferred when caller knows the symbol shape)
summaryboolean–When true, drops per-reference 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 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.

symbol_info ~192

Get detailed information for a symbol at a file position. Strict resolution returns NotFound on whitespace; use allowAdjacent=true to walk to a neighbouring token.

NameTypeReqDescription
allowAdjacentboolean–Default false (strict). When true, the resolver walks to the preceding token when the exact-position lookup misses — restores the pre-v1.19.1 lenient behavior that could silently resolve whitespace t…
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.

symbol_refactor_preview ~102

Composite preview chaining heterogeneous refactor operations (rename, multi-file edit, structural rewrite) in order. Atomic: a failure in any step aborts the whole preview.

NameTypeReqDescription
operationsarrayyesOrdered list of operations. Each is { kind: 'rename'|'edit'|'restructure', ...kind-specific fields }. Order matters — later ops see earlier ops' rewritten state.
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

symbol_relationships ~213

Summarize one symbol's definitions, references, implementations, base members, and overrides. A member type-token caret auto-promotes to its enclosing member.

NameTypeReqDescription
columninteger|null–Optional: 1-based column number
filePathstring|null–Optional: absolute path to the source file
limitinteger–Maximum number of items to return per relationship bucket (default: 100)
lineinteger|null–Optional: 1-based line number
metadataNamestring|null–Optional: fully qualified metadata name, e.g. Namespace.TypeName
preferDeclaringMemberboolean–When true (default), a caret on a method's return-type token or a property's type token is auto-promoted to the enclosing member symbol. Set to false to resolve the type token literally.
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.

symbol_search ~332

Search workspace symbols by case-insensitive substring; wildcards and regex metacharacters are matched literally. Use summary=true for broad queries.

NameTypeReqDescription
allowElicitationboolean–Default false (agent-first). When false, a query matching more than one symbol returns the full paginated candidate list to the calling agent. When true AND the client supports form elicitation, a >1…
kindstring|null–Optional: filter by symbol kind (Class, Method, Property, Field, Interface, etc.)
limitinteger–Maximum number of results to return (default: 50, max: 50)
namespacestring|null–Optional: filter by namespace
offsetinteger–Number of results to skip before returning (default: 0)
projectNamestring|null–Optional: filter by project name
querystringyesSearch query — substring match (case-insensitive). Pass bare fragments, not wildcards or regex.
summaryboolean–When true, drops expensive per-symbol fields (documentation, parameters, baseTypes, interfaces, modifiers, returnType) to keep the response small for broad queries. Locator-essential fields (name, fu…
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

symbol_signature_help ~195

Get a symbol's display signature, parameters, return type, and documentation from a position or locator. Type-token carets auto-promote unless preferDeclaringMember=false.

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
preferDeclaringMemberboolean–When true (default), a caret on a method's return-type token or a property's type token is auto-promoted to the enclosing member symbol. Set to false to resolve the type token literally.
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.

test_coverage ~68

Run tests with code coverage collection and return coverage metrics per module and class. Requires the coverlet.collector NuGet package in test projects.

NameTypeReqDescription
projectNamestring|null–Optional: specific test project name
workspaceIdstringyesThe workspace session identifier returned by workspace_load

No output schema declared.

No examples provided.

test_discover ~161

Discover tests from test projects in the loaded workspace. Results are paginated to stay within MCP context budgets - filter large suites with projectName and/or nameFilter. The response includes returnedCount/totalCount/hasMore.

NameTypeReqDescription
limitinteger–Maximum number of test cases to return (default: 200; raise carefully — 1000 cases is roughly 350KB of JSON)
nameFilterstring|null–Optional: case-insensitive substring filter applied to fully-qualified test names
offsetinteger–Number of test cases 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.

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 5 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 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 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.