← 返回目录
R

Roslyn CodeLens MCP Server

社区
基于 Roslyn 的 .NET/C# 语义智能 MCP 服务器
GitHub 源仓库 ↗
★ 42 Stars 分类 · 开发工具 热门
68FMRS · C

一个功能非常全面的 Roslyn 语义分析 MCP 服务器,67 个工具覆盖导航、重构、测试智能、质量审计和 IL 检查,性能经过基准测试,配有 VS 风格的分析器信任模型。仅适用于 SDK 风格的 .NET 项目,且依赖 .NET 10 SDK。代码来自个人开发者,非 .NET/Roslyn 官方产品。

可靠性
9/20
安全与权限
14/20
维护活跃度
14/20
文档质量
18/20
安装易用性
13/20
查看 FMRS 评分方法 →

Roslyn CodeLens 是一个基于 Roslyn 的 MCP 服务器,通过 stdio 传输为 AI 代理提供对 .NET/C# 代码库的深层语义理解。它提供 67 个工具,涵盖代码导航、调用图、诊断与代码修复、安全重构、代码质量审计、测试智能、依赖注入图以及 IL/外部程序集检查。可通过 npm(npx 启动器)、NuGet(.NET 全局工具)、Claude Code 插件或 Docker 安装,要求 .NET 10 SDK。

工具能力

find_implementations
查找实现某接口或继承某类的所有类/结构体
find_callers
查找方法、属性或构造函数的所有调用位置
find_event_subscribers
查找事件符号的所有 += / -= 订阅位置,含解析后的处理器
find_tests_for_symbol
列出 exercising 某生产符号的 xUnit/NUnit/MSTest 测试方法,可选传递遍历
get_test_summary
按项目汇总测试方法清单,含框架、属性类型、数据行数与位置
find_uncovered_symbols
找出无测试可达的公共方法和属性,按圈复杂度排序
generate_test_skeleton
为方法或类型生成可编译的测试类骨架文本,自动检测测试框架
get_type_hierarchy
遍历基类、接口和派生类型
get_di_registrations
扫描依赖注入服务注册(泛型、typeof 对、工厂 lambda 等形式)
get_instantiation_options
一次性给出类型的构造方式:构造函数、静态工厂、DI 注册和 required 成员
get_project_dependencies
获取项目引用图
get_symbol_context
为任意类型一次性输出上下文信息
get_public_api_surface
枚举生产项目中的所有公共/受保护类型和成员
find_breaking_changes
将当前 API 与基线 JSON 或 DLL 比对,报告破坏性变更
find_reflection_usage
检测动态/基于反射的用法
get_exception_flow
分析方法可能抛出的异常及其传播路径
find_throw_sites
查找某异常类型的所有抛出位置
find_catch_blocks
查找某异常类型的所有 catch 块,标记吞异常的处理器
find_references
查找符号的所有引用,并按读取/写入/调用等类型标记
go_to_definition
查找符号定义所在的源文件和行号
get_method_source
按名称批量获取成员的完整声明源码
resolve_stack_trace
将 .NET 堆栈跟踪映射回文件/行/符号,还原编译器改写后的名称
get_diagnostics
列出编译器错误、警告和 Roslyn 分析器诊断
get_code_fixes
为任意诊断获取可用的代码修复及结构化文本编辑
search_symbols
按名称模糊搜索工作区符号
get_nuget_dependencies
列出各项目的 NuGet 包引用
find_attribute_usages
查找使用某特性装饰的类型和成员
find_obsolete_usage
按弃用消息分组列出所有 [Obsolete] 调用位置
find_circular_dependencies
检测项目或命名空间依赖图中的循环
check_architecture
基于真实语义类型图强制执行分层规则
get_complexity_metrics
报告圈复杂度、认知复杂度和最大嵌套深度
find_naming_violations
检查 .NET 命名约定合规性
find_async_violations
检测同步阻塞异步、async void 误用、缺失 await 等问题
find_disposable_misuse
检测未用 using 包裹的 IDisposable/IAsyncDisposable 实例
find_large_classes
按成员或行数查找过大的类型
find_god_objects
查找兼具高体量和高跨命名空间耦合的上帝对象
find_unused_symbols
通过引用分析进行死代码检测,自动过滤测试与生成代码
get_project_health
聚合 7 个质量维度的项目综合健康审计
get_source_generators
列出各项目的源生成器及其输出
get_generated_code
检查源生成器生成的代码
inspect_external_assembly
浏览闭源 NuGet 包和引用程序集的类型、成员与 XML 文档
peek_il
将方法反编译为 ilasm 风格的 IL 字节码
get_code_actions
发现任意位置的可用重构和修复操作
apply_code_action
按标题执行任意 Roslyn 重构,支持预览模式
rename_symbol
基于 Roslyn Renamer 的解决方案级安全重命名,支持预览
change_signature
增删和重排方法参数并重写所有调用位置
list_solutions
列出所有已加载的解决方案及当前活动项
set_active_solution
按部分名称切换活动解决方案
load_solution
运行时加载额外的 .sln/.slnx 并设为活动解决方案
unload_solution
卸载已加载的解决方案以释放内存
rebuild_solution
强制完整重新加载已分析的解决方案
start_background_task
将长时间运行的工具排队到后台执行
get_task_status
按 taskId 获取后台任务的当前状态、结果或错误
list_running_tasks
列出正在运行或最近 5 分钟内完成的后台任务
trust_solution
授权解决方案运行 Roslyn 分析器
list_trusted_paths
检查持久信任存储和会话信任的解决方案
revoke_trust
撤销此前授予的解决方案信任
analyze_data_flow
分析语句范围内的变量读/写/捕获情况
analyze_control_flow
分析语句范围内的分支/循环可达性
analyze_change_impact
显示修改某符号影响的所有文件、项目和调用位置
get_type_overview
复合工具:类型上下文 + 层次结构 + 文件诊断一次输出
analyze_method
复合工具:方法签名 + 调用者 + 外向调用一次输出
get_overloads
一次性列出方法/构造函数的所有重载(含元数据)
get_extension_methods
列出适用于某类型的所有扩展成员,含 C# 14 extension 块
get_operators
列出类型上所有用户定义运算符和转换运算符
get_call_graph
方法的传递调用者/被调用者图,深度受限并检测循环
get_file_overview
复合工具:文件中定义的类型 + 文件级诊断一次输出

安装接入

npm 方式:在 MCP 客户端配置中添加 "mcpServers": {"roslyn-codelens": {"type": "stdio", "command": "npx", "args": ["-y", "roslyn-codelens-mcp"]}},需要 .NET 10 SDK 在 PATH 中。NuGet 方式:运行 dotnet tool install -g RoslynCodeLens.Mcp 后配置 command 为 roslyn-codelens-mcp;或使用 dnx RoslynCodeLens.Mcp --yes。Claude Code:claude install gh:MarcelRoozekrans/roslyn-codelens-mcp。也可通过 Docker 运行,将解决方案挂载到 /workspace(需已还原 NuGet 包)。

claude_desktop_config.json
{"mcpServers":{"roslyn-codelens":{"type":"stdio","command":"npx","args":["-y","roslyn-codelens-mcp"]}}}

选型与风险

适合谁

  • 使用 Claude Code、VS Code 等 MCP 客户端的 .NET/C# 开发者
  • 需要深度静态分析和安全重构的 AI 辅助开发工作流
  • 维护大型 SDK 风格 .NET 解决方案的团队

不适合谁

  • 非 .NET/C# 代码库
  • 使用旧版非 SDK 风格 csproj 的遗留项目(会被跳过并警告)
  • 无法安装 .NET 10 SDK 的环境(Docker 除外)

所需权限

  • 读取并分析磁盘上的 .NET 解决方案和源文件
  • apply_code_action 等工具可直接写入/修改源文件(支持预览模式)
  • 运行 Roslyn 分析器 DLL 需先通过 trust_solution 显式信任(受信任模型限制)

风险与副作用

  • 分析器 DLL 在进程内执行,虽有信任模型限制(仅允许 NuGet 全局包、dotnet SDK 目录或解决方案 bin/obj 中的 DLL),仍需谨慎授权
  • apply_code_action、rename_symbol、change_signature 会直接修改源文件,建议先用预览模式
  • 共享的 stdio 服务器拥有对挂载/加载代码库的读写能力
  • 解决方案加载需先还原 NuGet 包,否则引用解析可能失败

常见排障

  1. 确认 .NET 10 SDK 已安装并在 PATH 中(npx 启动器需要)
  2. 解决方案必须可编译且为 SDK 风格项目;遗留项目会被跳过并记录在 SkippedProjects 中
  3. 诊断带分析器报 SolutionNotTrusted 错误时,先用 trust_solution 授权
  4. 项目加载超时(默认 300 秒)会被记为 SkippedProjects,可调 ROSLYN_CODELENS_OPEN_PROJECT_TIMEOUT_SECONDS
  5. Docker 运行时输出为容器路径,且解决方案需先还原依赖
  6. 符号未找到时检查解决方案是否已加载且为活动解决方案(用 list_solutions 确认)

使用场景

为 AI 代理提供 .NET 代码库的语义导航和调用图分析
安全地进行解决方案级重命名和签名变更等重构
审计代码质量:复杂度、命名、异步误用、死代码等
通过测试智能找出未覆盖的公共符号并生成测试骨架
检查闭源 NuGet 依赖的类型结构和 IL 代码

支持客户端

Claude Code完整支持
VS Code完整支持
Visual Studio完整支持