← 返回目录
R

Roslyn CodeLens MCP Server

社区
基于 Roslyn 的 .NET/C# 语义智能 MCP 服务器
分类
开发工具 第 20 / 438
Stars
★ 65 热门
传输方式
stdio(本地进程)
运行环境
.NET 10+ · Node.js · Docker
凭据
无需凭据
许可证
MIT
最近提交
工具数
67
68FMRS · C

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

最强项 · 文档质量 18/20 最弱项 · 可靠性 9/20

可靠性
9/20
安全与权限
14/20
维护活跃度
14/20
文档质量
18/20
安装易用性
13/20
查看各项评分依据
可靠性 9/20
README 详细描述了统一响应信封、结构化错误码(SymbolNotFound、SolutionNotTrusted 等)以及 67 个工具的功能,暗示了完善的错误处理设计;也提到了 CI 徽章和 `dotnet test` 命令。但本次审查为纯静态审查,未获得实际的 CI 工作流文件或测试用例内容以验证这些声明,也无法验证工具描述与真实行为是否一致。根据静态校准规则,缺乏可验证的执行证据(真实 CI 配置+覆盖关键路径的测试)时可靠性不得超过 12 分,鉴于证据仅停留在 README 文字层面,给予中低分。
安全与权限 14/20
该服务器实现了类 VS/Rider 的信任模型:仅限用户显式 `trust_solution` 或启动时传入的方案自动信任分析器执行,分析器 DLL 仅限从 NuGet 全局包目录、SDK 安装目录或方案自身 bin/obj 加载,且提供 `list_trusted_paths`/`revoke_trust` 管理。写入类操作(`apply_code_action`、`rename_symbol`、`change_signature`)均提供预览/diff 模式,体现了对危险操作的确认机制。但分析器仍在进程内执行,缺乏沙箱隔离,且无网络出站行为的进一步说明;未达到红线级风险,但也未做到完全的最小权限与显式确认覆盖所有场景。
维护活跃度 14/20
仓库未被归档,MIT 许可证,42 星,仅 1 个未解决 issue,版本号已达 2.18.0,说明有较多次迭代发布;README 中包含构建状态徽章、独立文档站点、Sponsors 链接,显示一定的项目治理与所有权意识。但审查材料中没有具体的提交历史、发布日期或问题响应时间等可验证信息,无法确认维护节奏和依赖更新频率,故不能给满分。
文档质量 18/20
README 内容非常全面:列出全部工具及一句话说明、统一响应信封格式、结构化错误码列表、外部程序集三层能力说明、运行时配置项、安全信任模型(并链接 SECURITY.md)、多种客户端的快速开始配置(npx/dnx/Docker/dotnet tool/Claude Code 插件)、性能基准表、热重载行为、项目兼容性边界(legacy 项目如何被跳过)等。分层清晰、示例充分、限制说明明确。轻微扣分因为 67 个工具仅有一句话描述,未提供逐工具的参数级 JSON Schema 文档。
安装易用性 13/20
提供四种以上安装/接入方式(npx、dnx、`dotnet tool install`、Docker、Claude Code 插件),并给出各客户端的具体配置 JSON 示例,文档层面非常清晰。但根据静态校准规则,在没有可验证执行证据时安装易用性不得超过 15 分;且实际安装依赖 .NET 10 SDK 在 PATH 中可用、npm 包仅是安装.NET 全局工具的启动器,`dnx` 机制相对新且可能不稳定,属于步骤清晰但仍偏手动/脆弱的安装路径。

静态评测 · 未实际运行收录于 2026-09-07

查看 FMRS 评分方法 →

选型与风险

能访问什么读取本地文件写入 / 删除本地文件执行命令或代码

适合谁

  • 使用 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 包,否则引用解析可能失败

安装接入

准备工作

运行环境:.NET 10+ · Node.js · Docker

其他可选配置项(1 个)
ROSLYN_CODELENS_OPEN_PROJECT_TIMEOUT_SECONDS 可选 单个项目 MSBuild 加载超时秒数(默认 300),用于防止畸形项目卡住解决方案加载;在启动服务器前设置。

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 包)。

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

以 Claude Code 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

.vscode/mcp.json
{
  "servers": {
    "roslyn-codelens": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "roslyn-codelens-mcp"
      ]
    }
  }
}

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

Terminal
claude mcp add roslyn-codelens -- npx -y roslyn-codelens-mcp

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

在客户端中连接后检查工具列表是否出现 67 个工具(如 go_to_definition、get_diagnostics、trust_solution);然后加载一个 .sln 并运行 list_solutions,若能看到已加载的解决方案即证明连接成功。

常见排障

  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 助手这样说:

  • 找出 IFoo 接口的所有实现类,并列出每个实现所在的文件。
  • 分析 OrderService.Submit 方法的异常流:哪些异常会从这个方法逃逸出去?
  • 把这个方法重命名为 CalculateTotal,先给我看预览 diff,不要直接写入。
  • 我的解决方案里有哪些 public 方法没有任何测试覆盖?按圈复杂度排序给我前几个。

工具能力 67

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 只读
遍历基类、接口和派生类型
展开其余 59 个工具
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 只读
复合工具:文件中定义的类型 + 文件级诊断一次输出

使用场景

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

支持客户端

Claude Code
VS Code
Visual Studio

依据项目文档列出,未经本站实测。

详细介绍

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

同类可选方案

Context7 80 · B

Upstash 官方维护,为 AI 编码助手提供实时更新的第三方库文档

★ 63.3k · 工具数 2 与当前对比 →

源版本 45f6b21fdd17 数据同步于 2026-10-19 查看 FMRS 评分方法