io.github.darylmcd/roslyn-mcp
NUGET · DARYLMCD.ROSLYNMCP · SCANNED SEP 20
Local-first MCP server for semantic C# analysis & refactoring via Roslyn & MSBuildWorkspace.
Available components
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
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 1 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
- 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 24596 tokens (~137/item across 179 items; 174 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 Management93
- Stability check failed: the tool surface changed between 4.0.0 and 4.2.1: 0 tool removals, 1 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 176 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
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@4.2.1 --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
claude mcp add darylmcd-roslyn-mcp -- dnx Darylmcd.RoslynMcp@4.2.1 --yes
{
"mcpServers": {
"darylmcd-roslyn-mcp": {
"command": "dnx",
"args": [
"Darylmcd.RoslynMcp@4.2.1",
"--yes"
]
}
}
} {
"servers": {
"darylmcd-roslyn-mcp": {
"command": "dnx",
"args": [
"Darylmcd.RoslynMcp@4.2.1",
"--yes"
]
}
}
} codex mcp add darylmcd-roslyn-mcp -- dnx Darylmcd.RoslynMcp@4.2.1 --yes
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"darylmcd-roslyn-mcp": {
"type": "local",
"command": [
"dnx",
"Darylmcd.RoslynMcp@4.2.1",
"--yes"
],
"enabled": true
}
}
} mcp_servers:
darylmcd-roslyn-mcp:
command: "dnx"
args: ["Darylmcd.RoslynMcp@4.2.1", "--yes"] {
"McpServers": {
"darylmcd-roslyn-mcp": {
"Transport": "stdio",
"Command": "dnx",
"Arguments": [
"Darylmcd.RoslynMcp@4.2.1",
"--yes"
]
}
}
} {
"mcpServers": {
"darylmcd-roslyn-mcp": {
"command": "dnx",
"args": [
"Darylmcd.RoslynMcp@4.2.1",
"--yes"
]
}
}
} 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.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93.
- 19 Sept 26 +13
- Malware scan: unverified → pass ▲ security
- 18 Sept 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 4.2.0 → 4.2.1 functional
- 17 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 96 to 100.
- 15 Sept 26 +16
- Malware scan: unverified → pass ▲ security
- 14 Sept 26 −16
- Malware scan: pass → unverified ▼ security
- Stability: pass → fail ▼ security
- Stability: pass → 0.90 functional
- Package version: 4.1.2 → 4.2.0 functional
- 13 Sept 26 0
- Stability: 0.97 → pass security
- 12 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.
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 20 Sept 2026 · Analysed nuget/Darylmcd.RoslynMcp@4.2.1
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | nuget |
| Reason | Signature present, unreadable |
Background: How many MCP packages publish verified provenance →
Dependencies 0 packages
| Packages resolved | 0 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
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.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer|null | – | Optional: 1-based column number |
| filePath | string|null | – | Optional: absolute path to the source file |
| line | integer|null | – | Optional: 1-based line number |
| metadataName | string|null | – | Optional: fully qualified metadata name, e.g. Namespace.TypeName |
| preferDeclaringMember | boolean | – | 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. |
| symbolHandle | string|null | – | Optional: stable symbol handle returned by other semantic tools |
| workspaceId | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| projectName | string|null | – | Optional: specific test project name |
| workspaceId | string | yes | The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of test cases to return (default: 200; raise carefully — 1000 cases is roughly 350KB of JSON) |
| nameFilter | string|null | – | Optional: case-insensitive substring filter applied to fully-qualified test names |
| offset | integer | – | Number of test cases to skip before returning results (default: 0) |
| projectName | string|null | – | Optional: filter by project name |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
test_reference_map ~199
Map productive source symbols to the test methods that reference them statically, without running tests — identifies untested public/internal APIs.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Max entries returned per page. Clamped to [1, 500]. Default 200. |
| maxMockDriftWarnings | integer | – | Max mock-drift warnings returned. Clamped to [0, 500]. Default 50. Use totalMockDriftCount and hasMoreMockDrift on the response to detect truncation. |
| offset | integer | – | 0-based start index. Clamped to [0, total]. Default 0. |
| projectName | string|null | – | Optional: restrict to a single project (name or path). Matching a productive project filters the covered/uncovered sets to that project's symbols; matching a test project scopes the test scan. Unknow… |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
test_related ~311
Find likely related tests for a symbol via three mutually-exclusive locators: symbolHandle alone, metadataName alone, or filePath plus line plus column together. For file-based impact use test_related_files instead.
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer|null | – | Source-location mode: 1-based column number pointing at the symbol identifier token (not the start of the line). Must be provided together with filePath and line (all three are required as a group).… |
| filePath | string|null | – | Source-location mode: absolute path to the source file. Must be provided together with line and column (all three are required as a group). Omit all three source-location parameters when using symbol… |
| line | integer|null | – | Source-location mode: 1-based line number. Must be provided together with filePath and column (all three are required as a group). Omit all three source-location parameters when using symbolHandle or… |
| maxResults | integer | – | Maximum number of test cases to return (default: 100) |
| metadataName | string|null | – | Optional: fully qualified metadata name, e.g. Namespace.TypeName |
| symbolHandle | string|null | – | Optional: stable symbol handle returned by other semantic tools |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
test_related_files ~98
Given a list of changed source file paths, find all related tests across the solution and return a combined dotnet test filter expression. Results use heuristic name matching and may not be exhaustive.
| Name | Type | Req | Description |
|---|---|---|---|
| filePaths | array | yes | Array of absolute paths to changed source files |
| maxResults | integer | – | Maximum number of test cases to return (default: 100) |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
test_run ~248
Run dotnet test for the loaded workspace or a specific test project and return structured results. When TRX output cannot be produced the result carries a classified FailureEnvelope instead of throwing; the failures array is paginated.
| Name | Type | Req | Description |
|---|---|---|---|
| compact | boolean | – | Optional: when true, trims the response for a clean run — omits execution.stdOut/stdErr/command/arguments/workingDirectory (redundant with the count fields once succeeded && failed == 0) and the fail… |
| failuresLimit | integer | – | Maximum number of failing tests to return detail for (default: 25). Aggregate counts (total/passed/failed/skipped) are never truncated — only the per-failure detail array is paginated to keep the res… |
| failuresOffset | integer | – | Number of failing tests to skip before returning failure detail (default: 0) |
| filter | string|null | – | Optional: dotnet test filter expression |
| projectName | string|null | – | Optional: specific test project name or file path |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
trace_exception_flow ~150
Find catch handling sites and `throw new` origination sites for an exception type (usage sites, not handling sites). isComplete=false distinguishes scan failures from cap truncation.
| Name | Type | Req | Description |
|---|---|---|---|
| exceptionTypeMetadataName | string | yes | Fully qualified metadata name of the exception type to trace, e.g. 'System.Text.Json.JsonException' or 'System.ArgumentException' |
| maxResults | integer|null | – | Optional: cap the returned catch-site list. Defaults to 200; absolute upper bound is 2000 to keep the payload bounded. |
| projectName | string|null | – | Optional: restrict the walk to a specific project name |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
type_hierarchy ~135
Get the type hierarchy (base types, derived types, implemented interfaces) for a type at the given position
| Name | Type | Req | Description |
|---|---|---|---|
| column | integer|null | – | Optional: 1-based column number |
| filePath | string|null | – | Optional: absolute path to the source file |
| line | integer|null | – | Optional: 1-based line number |
| metadataName | string|null | – | Optional: fully qualified metadata name, e.g. Namespace.TypeName |
| symbolHandle | string|null | – | Optional: stable symbol handle returned by other semantic tools |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
validate_recent_git_changes ~148
Post-edit validation bundle that auto-derives the changed-file set from `git status --porcelain` and forwards to validate_workspace. Prefer this over validate_workspace when you have uncommitted edits and want touched-file scope.
| Name | Type | Req | Description |
|---|---|---|---|
| runTests | boolean | – | When true, runs the discovered related tests via dotnet test --filter. Default: false (discovery only). |
| summary | boolean | – | When true, drops the per-diagnostic ErrorDiagnostics list and per-test DiscoveredTests list to keep the response under the MCP cap on large solutions. OverallStatus + counts still surface the verdict… |
| workspaceId | string | yes | Workspace session id from workspace_load. |
No output schema declared.
No examples provided.
validate_workspace ~264
One-call post-edit validation bundle over an explicit changed-file set: in-memory compile_check, Error-severity compiler and analyzer diagnostics, related-test discovery, and optional test_run. Returns an aggregate overallStatus envelope.
| Name | Type | Req | Description |
|---|---|---|---|
| changedFilePaths | array|null | – | Optional: explicit list of changed file paths. Pass as a native JSON array of absolute file paths, not a JSON-encoded string. Example: ["/abs/path/a.cs", "/abs/path/b.cs"]. When omitted, the change t… |
| responseFormat | string|null | – | Response shape: "json" (default) returns the indented JSON envelope; "markdown" returns a compact summary table built from the same DTO so the verdict is identical across shapes. Case-insensitive. |
| runTests | boolean | – | When true, runs the discovered related tests via dotnet test --filter. Default: false (discovery only). |
| summary | boolean | – | When true, drops the per-diagnostic ErrorDiagnostics list and per-test DiscoveredTests list to keep the response under the MCP cap on large solutions. OverallStatus + counts still surface the verdict… |
| workspaceId | string | yes | Workspace session id from workspace_load. |
No output schema declared.
No examples provided.
verify_pragma_suppresses ~127
Check whether a '#pragma warning disable/restore' pair for a diagnostic id actually covers the given 1-based line. Detects 'cosmetic pragma' bugs where the pair wraps the wrong span. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| diagnosticId | string | yes | Diagnostic id whose suppression to check (e.g. CA2025) |
| filePath | string | yes | Absolute path to the source file |
| line | integer | yes | 1-based line number that should be covered (the diagnostic fire site) |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
workspace_changes ~64
List all mutations applied to a workspace during this session. Returns an ordered list of changes with descriptions, affected files, tool names, and timestamps. Use to understand what has been modified since workspace_load.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
workspace_close ~153
Close and dispose a loaded workspace session, freeing all resources. Set drainProcesses=true to also release MSBuild build-server and test-host file locks - required before `git worktree remove` in sweep teardown sequences.
| Name | Type | Req | Description |
|---|---|---|---|
| drainProcesses | boolean | – | When true, run `dotnet build-server shutdown` AND kill detached testhost/vstest.console processes rooted under the loaded path's directory after session removal, to release MSBuild build-server and t… |
| getProcessesByName | – | – | – |
| processDrainTimeout | string|null | – | – |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
workspace_drift_check ~60
Compare a loaded workspace snapshot with files on disk and return filesDrifted plus reload/noop guidance. Use before reads after out-of-band edits; source-generated documents are skipped.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | Workspace session id from workspace_load. |
| Name | Type | Req | Description |
|---|---|---|---|
| filesDrifted | array | yes | – |
| recommended | string | yes | – |
| stale | boolean | yes | – |
No examples provided.
workspace_fork_apply ~188
Experimental: fork a loaded workspace, replay an existing preview token into the fork without mutating the source workspace, run validate_workspace against the fork, then retain or delete the fork per the retention policy.
| Name | Type | Req | Description |
|---|---|---|---|
| forkName | string|null | – | Optional stable suffix for the fork directory. Sanitized by the server. |
| previewToken | string | yes | Preview token from any *_preview tool. |
| retention | string | – | Fork retention policy: drop-on-success, drop-on-failure, drop-always, or keep. Default: drop-on-success. |
| runTests | boolean | – | When true, runs related tests discovered by validate_workspace. If testFilter is supplied, runs that explicit filter instead. |
| testFilter | string|null | – | Optional explicit dotnet test filter to run against the fork when runTests=true. |
| workspaceId | string | yes | Source workspace session id from workspace_load. |
No output schema declared.
No examples provided.
workspace_health ~58
Alias for workspace_status with verbose=false — same summary JSON (isReady, restoreHint, solutionFileName, error counts). Use for agent bootstrap right after workspace_load.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
| Name | Type | Req | Description |
|---|---|---|---|
| analyzersReady | boolean | yes | – |
| buildRequired | boolean | yes | – |
| documentCount | integer | yes | – |
| isLoaded | boolean | yes | – |
| isReady | boolean | yes | – |
| isStale | boolean | yes | – |
| loadedAtUtc | string | yes | – |
| loadedPath | string|null | yes | – |
| projectCount | integer | yes | – |
| restoreHint | string|null | yes | – |
| restoreRequired | boolean | yes | – |
| snapshotToken | string | yes | – |
| solutionFileName | string|null | yes | – |
| workspaceDiagnosticCount | integer | yes | – |
| workspaceErrorCount | integer | yes | – |
| workspaceId | string | yes | – |
| workspaceVersion | integer | yes | – |
| workspaceWarningCount | integer | yes | – |
No examples provided.
workspace_list ~68
List all currently loaded workspace sessions. Returns a lean summary per workspace by default — pass verbose=true for the full per-project tree of every workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| verbose | boolean | – | When true, return the full per-project tree and workspace diagnostics for each workspace. Default false returns only counts and load state. |
Structured output declared, but exposes no named fields.
No examples provided.
workspace_load ~341
Load a .sln, .slnx, or .csproj into a Roslyn workspace session for semantic analysis. Idempotent by path: loading an already-loaded file returns the existing workspaceId. Returns a lean summary; pass verbose=true for the full project tree.
| Name | Type | Req | Description |
|---|---|---|---|
| autoRestore | boolean | – | When true and the loaded status reports restoreRequired=true, run `dotnet restore` on the target and reload once before returning. |
| evictPolicy | string | – | Controls cap-reached behaviour. 'Strict' (default) throws with activeWorkspaces and lruCandidate context for one-round-trip self-recovery. 'Lru' silently evicts the least-recently-used idle workspace… |
| expandSanctionedRoots | boolean | – | Requests one-level sanctioned-root expansion for a sibling worktree. This takes effect only when the server operator also sets ROSLYNMCP_ALLOW_ROOT_EXPANSION=true; client input alone never widens the… |
| path | string | yes | Absolute path to a .sln, .slnx, or .csproj file |
| prewarm | boolean|null | – | When true, run `workspace_warm` immediately after the load (and any auto-restore reload) succeeds, then include the warm result in the response. When omitted, large solutions with more than 50 projec… |
| verbose | boolean | – | When true, return the full per-project tree and workspace diagnostics. Default false returns only counts and load state. |
No output schema declared.
No examples provided.
workspace_readiness_report ~90
First-run/onboarding readiness report for a loaded workspace, distinct from the incident-focused workspace_support_bundle. Returns one verdict - ready, restore-needed, build-needed, or analyzer-limited - plus limitations and next workflows.
| Name | Type | Req | Description |
|---|---|---|---|
| workspaceId | string|null | – | Optional workspace session identifier returned by workspace_load. Omit only when zero or one workspace is loaded; pass explicitly when multiple workspaces are active. |
| Name | Type | Req | Description |
|---|---|---|---|
| generatedAtUtc | string | yes | – |
| limitations | array | yes | – |
| loadedWorkspaces | array | yes | – |
| nextRecommendedWorkflows | array | yes | – |
| reportKind | string | yes | – |
| requestedWorkspaceId | string|null | yes | – |
| status | string | yes | – |
| workspace | object|null | yes | – |
No examples provided.
workspace_reload ~127
Workspace-scoped calls auto-reload stale state by default. Use this for an explicit reload; autoRestore=true runs dotnet restore and reloads once when restoreRequired=true.
| Name | Type | Req | Description |
|---|---|---|---|
| autoRestore | boolean | – | When true and the reloaded status reports restoreRequired=true, run `dotnet restore` on the loaded target and reload once before returning. |
| verbose | boolean | – | When true (default), preserve the full per-project response. Pass false for readiness, version, and aggregate counts without the project tree. |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
No output schema declared.
No examples provided.
workspace_status ~98
Cheap health check after workspace_load - call this first before compile_check or heavy tools. Default (verbose=false) returns summary JSON: isReady, isStale, workspaceErrorCount, restoreHint, solutionFileName, counts.
| Name | Type | Req | Description |
|---|---|---|---|
| verbose | boolean | – | When true, return the full per-project tree and workspace diagnostics. Default false returns only counts and load state. |
| workspaceId | string | yes | The workspace session identifier returned by workspace_load |
Structured output declared, but exposes no named fields.
No examples provided.
workspace_support_bundle ~152
Incident-diagnosis bundle for an existing workspace session, distinct from the first-run workspace_readiness_report. Composes readiness, drift status, a capped change ledger, versions, diagnostics totals, and next-action hints.
| Name | Type | Req | Description |
|---|---|---|---|
| maxChangeEntries | integer | – | Maximum number of recent change-ledger entries to include. Clamped to 0..50. Default 20. |
| maxDriftedFiles | integer | – | Maximum number of drifted file paths to include. Clamped to 0..100. Default 25. |
| workspaceId | string|null | – | Optional workspace session identifier returned by workspace_load. Omit only when zero or one workspace is loaded; pass explicitly when multiple workspaces are active. |
| Name | Type | Req | Description |
|---|---|---|---|
| bundleKind | string | yes | – |
| changeLedger | object | yes | – |
| diagnosticsTotals | object|null | yes | – |
| generatedAtUtc | string | yes | – |
| limits | object | yes | – |
| loadedWorkspaces | array | yes | – |
| nextActions | array | yes | – |
| requestedWorkspaceId | string|null | yes | – |
| status | string | yes | – |
| workspace | object|null | yes | – |
No examples provided.
workspace_warm ~121
Prewarm Roslyn compilations and first semantic models for all or selected projects. Use before the first read-side call; workspace_load may prewarm large solutions automatically.
| Name | Type | Req | Description |
|---|---|---|---|
| projects | array|null | – | Optional: project names to warm. Pass as a native JSON array, not a JSON-encoded string. Example: ["MyProject.Core", "MyProject.Tests"]. Case-insensitive; unknown names are silently skipped. Omit or… |
| workspaceId | string | yes | Workspace session id from workspace_load. |
No output schema declared.
No examples provided.
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 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 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 174 tools: add_central_package_version_preview, add_package_reference_preview, add_pragma_suppression, add_project_reference_preview, add_target_framework_preview, and 169 more. Their descriptions and schemas cost roughly 24,032 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 20 September 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.