RoslynMcp.Core 0.4.0

dotnet add package RoslynMcp.Core --version 0.4.0
                    
NuGet\Install-Package RoslynMcp.Core -Version 0.4.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="RoslynMcp.Core" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RoslynMcp.Core" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="RoslynMcp.Core" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add RoslynMcp.Core --version 0.4.0
                    
#r "nuget: RoslynMcp.Core, 0.4.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package RoslynMcp.Core@0.4.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=RoslynMcp.Core&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=RoslynMcp.Core&version=0.4.0
                    
Install as a Cake Tool

Roslyn MCP Server

Build and Test Code Quality NuGet NuGet Downloads License: MIT

Let AI assistants like Claude safely refactor your C# codebase using the same Roslyn compiler platform that powers Visual Studio.

Roslyn MCP Server is a Model Context Protocol (MCP) server that exposes 41 Roslyn-powered tools to AI assistants and other MCP clients. It combines 19 refactoring operations, 5 code navigation tools, 6 analysis and metrics tools, 4 code generation tools, and 7 code conversion tools -- giving your AI deep code intelligence, comprehensive refactoring, and modern C# syntax transformations with full solution-wide reference tracking and preview support.


Table of Contents


Why RoslynMcpServer?

  • 41 tools -- refactoring, navigation, analysis, generation, and conversion tools, the most comprehensive Roslyn MCP server available
  • Preview mode on every operation -- see exactly what will change before applying
  • Atomic file writes with rollback -- if any file write fails, all changes are reverted
  • Solution-wide reference updates -- renames and moves propagate across your entire solution
  • Single command install -- dotnet tool install -g RoslynMcp.Server, no repo cloning needed
  • Cross-platform -- works on Windows, Linux, and macOS

Prerequisites

Before installing, make sure you have:

  1. .NET 9.0 SDK or later -- Download here
  2. A C# solution (.sln or .slnx) or project (.csproj) to work with

Verify your .NET SDK version:

dotnet --version

The output should be 9.0.x or higher.


Quick Start

1. Install

dotnet tool install -g RoslynMcp.Server

2. Configure

Create a .mcp.json file in your project root (for Claude Code):

{
  "mcpServers": {
    "roslyn-refactor": {
      "type": "stdio",
      "command": "roslyn-mcp",
      "args": []
    }
  }
}

Then restart Claude Code or run /mcp to connect.

3. Verify

Ask Claude:

"Run the roslyn diagnose tool for my solution at C:/path/to/MySolution.sln"

You should see a health report with Roslyn version, MSBuild status, and workspace details.

4. Try It

Ask Claude:

"Rename the class UserService to AccountService in C:/path/to/MySolution.sln"

Claude will use the rename_symbol tool to rename the class and update every reference across your entire solution.


Standalone CLI

All 41 tools are also available as a standalone CLI for use in scripts, CI/CD pipelines, and terminals without an AI assistant.

Install

dotnet tool install -g RoslynMcp.Cli

Usage

roslyn-cli <solution-path> <tool-name> [--option value ...]
roslyn-cli <tool-name> --help
roslyn-cli --help

Examples

# Check environment health
roslyn-cli C:/path/to/MySolution.sln diagnose --format text

# Rename a symbol across the entire solution
roslyn-cli C:/path/to/MySolution.sln rename-symbol --source-file C:/path/to/Foo.cs --symbol-name Bar --new-name Baz

# Get compiler diagnostics (errors only), pipe to jq
roslyn-cli C:/path/to/MySolution.sln get-diagnostics --severity-filter Error | jq '.data'

# Preview a refactoring without applying
roslyn-cli C:/path/to/MySolution.sln extract-method --source-file Foo.cs --start-line 10 --end-line 20 --method-name DoWork --preview

Output is JSON by default (pipeable to jq). Use --format text for human-readable output. Exit codes: 0=success, 1=tool error, 2=CLI error, 3=environment error.


Configuration

Claude Code

Create .mcp.json in your project root:

{
  "mcpServers": {
    "roslyn-refactor": {
      "type": "stdio",
      "command": "roslyn-mcp",
      "args": []
    }
  }
}

Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "roslyn-refactor": {
      "command": "roslyn-mcp",
      "args": []
    }
  }
}

Config file locations:

OS Path
Windows %APPDATA%\Claude\claude_desktop_config.json
macOS ~/Library/Application Support/Claude/claude_desktop_config.json

Available Tools

All tools accept a solutionPath parameter (absolute path to a .sln, .slnx, or .csproj file). Refactoring tools also accept a preview parameter (set to true to see changes without applying them).

Move and Rename

Tool Description Key Parameters
move_type_to_file Move a C# type declaration to a different file. Updates all references automatically. sourceFile, symbolName, targetFile, createTargetFile
move_type_to_namespace Change the namespace of a C# type. Updates all using directives and qualified references. sourceFile, symbolName, targetNamespace, updateFileLocation
rename_symbol Rename any C# symbol (type, method, property, field, variable, etc.) with automatic reference updates across the solution. sourceFile, symbolName, newName, line, column, renameOverloads, renameFile

Extract

Tool Description Key Parameters
extract_method Extract selected code into a new method. Automatically detects parameters and return values. sourceFile, startLine, startColumn, endLine, endColumn, methodName, visibility
extract_variable Extract an expression to a local variable. sourceFile, startLine, startColumn, endLine, endColumn, variableName, useVar
extract_constant Extract a literal value to a named constant. sourceFile, startLine, startColumn, endLine, endColumn, constantName, visibility, replaceAll
extract_interface Extract an interface from a class's public members. sourceFile, typeName, interfaceName, members, targetFile
extract_base_class Extract members to a new base class. sourceFile, typeName, baseClassName, members, targetFile, makeAbstract

Inline

Tool Description Key Parameters
inline_variable Inline a local variable by replacing all usages with its initializer value. sourceFile, variableName, line

Signature and Encapsulation

Tool Description Key Parameters
change_signature Add, remove, or reorder method parameters and update all call sites. sourceFile, methodName, parameters (array of changes), line
encapsulate_field Convert a field to a property with backing field. sourceFile, fieldName, propertyName, readOnly

Generate

Tool Description Key Parameters
generate_constructor Generate a constructor that initializes fields and/or properties of a type. sourceFile, typeName, members, addNullChecks
generate_overrides Generate override methods for base class virtual/abstract members. sourceFile, typeName, members, callBase
implement_interface Generate interface member implementations for a type. sourceFile, typeName, interfaceName, explicitImplementation, members

Convert

Tool Description Key Parameters
convert_to_async Convert a synchronous method to async/await pattern. sourceFile, methodName, line, renameToAsync
convert_expression_body Toggle between expression body (=> expr;) and block body ({ return expr; }). sourceFile, direction, memberName, line
convert_property Convert between auto-property and full property with backing field. sourceFile, direction, propertyName, line
convert_foreach_linq Convert foreach loops with Add patterns to LINQ Select/Where expressions. sourceFile, line
convert_to_pattern_matching Convert if/is chains and switch statements to switch expressions. sourceFile, line
convert_to_interpolated_string Convert string.Format() calls and concatenation to interpolated strings. sourceFile, line
introduce_parameter Promote a local variable to a method parameter, updating all call sites. sourceFile, variableName, line

Using Directives

Tool Description Key Parameters
add_missing_usings Add missing using directives required to resolve unbound type references. Process a single file or all files in the solution. sourceFile, allFiles
remove_unused_usings Remove unused using directives. Process a single file or all files in the solution. sourceFile, allFiles
sort_usings Sort using directives alphabetically in a C# file. sourceFile

Diagnostics

Tool Description Key Parameters
diagnose Check the health of the Roslyn MCP server environment and workspace status. solutionPath (optional), verbose

Code Navigation

These read-only tools let you explore and understand your codebase without making changes. Use them to discover symbols, trace references, and inspect type information before refactoring.

Tool Description Key Parameters
find_references Find all references to a symbol across the entire solution. Returns file locations, context snippets, and write/definition indicators. sourceFile, symbolName, line, column, maxResults
go_to_definition Navigate to the source definition of a symbol. Supports partial classes with multiple definition locations. sourceFile, symbolName, line, column
get_symbol_info Get detailed metadata for any symbol: kind, accessibility, modifiers, base types, interfaces, members, parameters, return type, and XML documentation. sourceFile, symbolName, line, column
find_implementations Find all implementations of an interface or overrides of an abstract/virtual member. sourceFile, symbolName, line, column, maxResults
search_symbols Search for symbols by name pattern across the entire workspace. Filter by kind (class, method, property, etc.). query, kindFilter, maxResults

Analysis & Metrics

These tools analyze your code without making changes. Use them to understand code quality, data flow, and control flow.

Tool Description Key Parameters
get_diagnostics Retrieve compiler diagnostics (errors, warnings, info) filtered by severity and optionally by file. sourceFile, severityFilter
get_code_metrics Calculate code metrics: cyclomatic complexity, lines of code, maintainability index, class coupling, depth of inheritance. sourceFile, symbolName, line
analyze_control_flow Analyze control flow for a code region: start/end point reachability, return statements, and exit points. sourceFile, startLine, endLine
analyze_data_flow Analyze data flow for a code region: variables read/written inside, data flowing in/out, captured variables. sourceFile, startLine, endLine
find_callers Find all callers of a symbol across the entire solution. sourceFile, symbolName, line, column, maxResults
get_type_hierarchy Retrieve the type hierarchy (base types and/or derived types) for a given type. sourceFile, symbolName, line, column, direction
get_document_outline Get a hierarchical outline of all symbols in a file (namespaces, types, members). sourceFile

Code Generation

These tools generate new code members for existing types.

Tool Description Key Parameters
generate_equals_hashcode Generate Equals() and GetHashCode() overrides for a type based on its fields/properties. sourceFile, typeName, fields
generate_tostring Generate a ToString() override for a type. sourceFile, typeName, fields, format
format_document Format a C# file using Roslyn's built-in formatter. sourceFile
add_null_checks Add null-check statements (ArgumentNullException.ThrowIfNull or guard clauses) for method parameters. sourceFile, methodName, line, style

Preview Mode

Every refactoring tool supports a preview parameter. When set to true, the tool computes and returns the changes that would be made without writing anything to disk. This lets you review diffs before committing to a refactoring.

Example (as a natural language prompt to Claude):

"Preview what would happen if I renamed OrderProcessor to OrderHandler in C:/path/to/MySolution.sln"

Claude will call rename_symbol with preview: true and show you the affected files and diffs.


Troubleshooting

.NET 9 SDK not found

If you see errors about the SDK not being found:

  1. Verify the SDK is installed: dotnet --list-sdks
  2. Make sure .NET 9.0 or later appears in the list
  3. If not, install it from https://dotnet.microsoft.com/download/dotnet/9.0

MSBuild or solution loading issues

If MSBuild cannot be located or your solution fails to load:

  1. Make sure you can build the solution from the command line first: dotnet build /path/to/MySolution.sln
  2. On Windows, ensure Visual Studio Build Tools or a Visual Studio installation is available
  3. Check that solutionPath is an absolute path to a valid .sln, .slnx, or .csproj file

Using the diagnose tool

The diagnose tool is the first thing to try when something is not working. It reports:

  • Whether Roslyn is loaded and its version
  • Whether MSBuild was found and its version
  • Whether the .NET SDK is available and its version
  • Whether a given solution can be loaded, including project and document counts

Run it through Claude:

"Run the roslyn diagnose tool with verbose output for C:/path/to/MySolution.sln"

Or without a solution path to check just the environment:

"Run the roslyn diagnose tool"


NuGet Libraries

In addition to the global tool, the project publishes libraries for building custom integrations:

# Core library -- refactoring operations and workspace management
dotnet add package RoslynMcp.Core

# Contracts library -- shared models and interfaces
dotnet add package RoslynMcp.Contracts

Contributing

Contributions are welcome. See CONTRIBUTING.md for guidelines.

Build from Source

git clone https://github.com/JoshuaRamirez/RoslynMcpServer.git
cd RoslynMcpServer
dotnet build -c Release

Run Tests

# All tests
dotnet test

# Specific test projects
dotnet test tests/RoslynMcp.Core.Tests
dotnet test tests/RoslynMcp.Server.Tests
dotnet test tests/RoslynMcp.Cli.Tests

License

This project is licensed under the MIT License. See the LICENSE file for details.


Acknowledgments

Support

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.0 122 2/24/2026
0.3.1 110 2/9/2026
0.3.0 111 2/6/2026
0.2.1 112 2/6/2026
0.2.0 113 2/6/2026
0.1.0 115 1/30/2026