Roslyn代码分析服务

一个基于Microsoft Roslyn SDK的模型上下文协议(MCP)stdio服务器,为AI编码助手提供语义代码分析、导航、重构和诊断功能,适用于.NET/C#代码库。

  • by brendankowitz
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 brendankowitz/dotnet-roslyn-mcp

使用说明

Roslyn MCP服务器

一个模型上下文协议(MCP)stdio服务器,将Microsoft Roslyn SDK功能暴露给Claude Code等AI编码助手。为提供语义代码分析、导航、重构和诊断。NET/C#代码库。

18+强大的工具 包括影响分析、安全重构、死代码检测、自动代码修复、批处理操作和依赖关系可视化!

特性

  • 语义分析:100%编译器准确的代码理解
  • 跨解决方案导航:查找引用、实现、调用者和类型层次结构
  • 影响分析:在重构之前,查看哪些代码调用了您的方法
  • 安全重构:在预览模式下跨解决方案重命名符号
  • 死码检测:查找未使用的类型、方法和字段
  • 实时诊断:获取编译错误和警告
  • 符号搜索:在整个解决方案中搜索类型、方法、属性
  • 界面提取:从类生成DI/可测试性接口
  • 依赖关系可视化:绘制项目依赖关系图并检测周期
  • 代码组织:组织使用、获取方法重载等

安装

先决条件

  • .NET 8.0 SDK或运行时

构建和安装

# Build the project
dotnet build -c Release

# Pack as global tool
dotnet pack -c Release

# Install globally
dotnet tool install --global --add-source ./src/bin/Release dotnet-roslyn-mcp

# Verify installation
dotnet-roslyn-mcp --version

配置

使用Claude Code命令行界面(推荐)

安装全局工具后,使用CLI将其添加到Claude Code中:

claude mcp add --transport stdio roslyn \
  --env DOTNET_SOLUTION_PATH="/path/to/your/solution.sln" \
  -- dotnet-roslyn-mcp

或者使用其他环境变量:

claude mcp add --transport stdio roslyn \
  --env DOTNET_SOLUTION_PATH="/path/to/your/solution.sln" \
  --env ROSLYN_LOG_LEVEL="Information" \
  --env ROSLYN_MAX_DIAGNOSTICS="100" \
  -- dotnet-roslyn-mcp

窗户:

claude mcp add --transport stdio roslyn ^
  --env DOTNET_SOLUTION_PATH="C:\path\to\your\solution.sln" ^
  --env ROSLYN_LOG_LEVEL="Information" ^
  --env ROSLYN_MAX_DIAGNOSTICS="100" ^
  -- dotnet-roslyn-mcp

源代码运行(开发)

如果您想直接从源代码运行MCP服务器,而无需全局安装:

Linux/macOS:

claude mcp add --transport stdio roslyn \
  --env DOTNET_SOLUTION_PATH="/path/to/your/solution.sln" \
  -- dotnet run --project /path/to/vs-ide-mcp/src/RoslynMcp.csproj

窗户:

claude mcp add --transport stdio roslyn ^
  --env DOTNET_SOLUTION_PATH="C:\path\to\your\solution.sln" ^
  -- cmd /c dotnet run --project C:\path\to\vs-ide-mcp\src\RoslynMcp.csproj

手动配置

或者,创建一个 .claude/mcp-spec.json 解决方案根目录中的文件:

{
  "mcpServers": {
    "roslyn": {
      "command": "dotnet-roslyn-mcp",
      "env": {
        "DOTNET_SOLUTION_PATH": "${workspaceFolder}/YourSolution.sln"
      }
    }
  }
}

环境变量

变量 默认值 描述
DOTNET_SOLUTION_PATH (必需) .sln文件或包含它的目录的路径
ROSLYN_LOG_LEVEL 信息 日志记录级别(调试、信息、警告、错误)
ROSLYN_ENABLE_SEMANTIC_CACHE true 启用文档缓存
ROSLYN_MAX_DIAGNOSTICS 100 返回的最大诊断数
ROSLYN_INCLUDE_HIDDEN_DIAGNOSTICS false 包括隐藏的严重性诊断
ROSLYN_PARALLEL_ANALYSIS true 启用并行项目分析
ROSLYN_TIMEOUT_SECONDS 30 操作超时(大型解决方案增加)

可用工具(共18个)

核心与健康

  1. 罗斯林:健康检查 -检查服务器运行状况和工作区状态
  2. roslyn:加载解决方案 -加载a。NET分析解决方案
  3. 罗斯林:获取符号信息 -获取符号的详细语义信息

导航

  1. 罗斯林:查找引用 -查找对某个符号的所有引用
  2. 罗斯林:查找实现 -查找接口/抽象类的所有实现
  3. *罗斯林:寻找来电者 -查找调用特定方法的所有方法(影响分析)

分析与发现

  1. roslyn:类型层次结构 -获取类型的继承层次结构
  2. 罗斯林:搜索_符号 -在解决方案中按名称搜索符号
  3. 罗斯林:不可知论 -获取编译器错误和警告
  4. 罗斯林:查找未使用代码 -查找死代码(未使用的类型、方法、字段)
  5. 罗斯林:依赖图 -可视化项目依赖关系并检测周期

重构

  1. 罗斯林:重命名符号 -通过预览跨解决方案安全重命名符号
  2. 罗斯林:提取接口 -从类生成DI/可测试性接口
  3. 罗斯林:组织起来 -使用指令对未使用的内容进行排序和删除

代码修复和结构

  1. 罗斯林:get_code_fixes -获取可用的诊断代码修复
  2. 罗斯林:工程结构 -获取解决方案/项目结构
  3. roslyn:获取方法过载 -获取方法的所有重载
  4. 罗斯林:娱乐会员 -获取包含方法/属性/类信息

示例提示

以下是配置MCP服务器后,您可以使用Claude Code的一些示例提示:

影响分析:

"Find all callers of the ProcessPayment method"
"What code will break if I change this method signature?"
"Who uses the CustomerRepository?"

安全重构:

"Preview renaming ICustomerRepository to IUserRepository"
"Safely rename ProcessPayment to HandlePayment across the solution"

死码检测:

"Find all unused code in the Application project"
"What private methods are never called?"
"Show me unused classes in the Domain layer"

界面提取:

"Extract an interface from PaymentService class"
"Generate IPaymentService interface with ProcessPayment and RefundPayment methods"

依赖关系可视化:

"Show me the project dependency graph"
"Are there any circular dependencies?"
"Generate a Mermaid diagram of project dependencies"

查找参考文献:

"Find all references to the ProcessPayment method"
"Where is CustomerService being used?"

探索类型层次结构:

"What classes implement ICustomerRepository?"
"Show me the type hierarchy for CustomerService"
"What interfaces does PaymentProcessor implement?"

代码导航:

"Show me all the overloads of ProcessOrder"
"What's the containing class for this method?"
"Search for all methods containing 'Customer'"

诊断:

"Get all compilation errors in the solution"
"Show me warnings in CustomerService.cs"
"What errors are in the Payment project?"

建筑

┌─────────────────────────────────────┐
│     Claude Code (MCP Client)        │
└───────────────┬─────────────────────┘
                │ stdin/stdout (JSON-RPC 2.0)
┌───────────────▼─────────────────────┐
│          McpServer.cs                │
│  - Protocol handling                 │
│  - Tool registration                 │
│  - Request routing                   │
└───────────────┬─────────────────────┘
                │
┌───────────────▼─────────────────────┐
│       RoslynService.cs               │
│  - Solution management               │
│  - Semantic analysis                 │
│  - Symbol resolution                 │
└───────────────┬─────────────────────┘
                │
┌───────────────▼─────────────────────┐
│  Microsoft.CodeAnalysis (Roslyn)    │
│  - MSBuildWorkspace                  │
│  - SemanticModel                     │
│  - SymbolFinder                      │
└─────────────────────────────────────┘

许可证

麻省理工学院许可证-版权所有(c)2025 Brendan Kowitz

看 许可证 文件以获取详细信息。