MarcelRoozekrans/roslyn-codelens-mcp

GitHub: MarcelRoozekrans/roslyn-codelens-mcp

基于Roslyn的MCP服务器,为Claude Code提供.NET代码库的22种语义分析工具,支持类型层次、调用追踪、依赖分析和代码质量检测。

Stars: 0 | Forks: 0

# Roslyn CodeLens MCP 服务器 一个基于 Roslyn 的 MCP 服务器,为 .NET 代码库提供 22 种语义代码智能工具。专为配合 Claude Code 理解类型层次结构、调用站点、DI 注册和反射用法而设计。 ## 功能特性 - **find_implementations** — 查找实现某个接口或继承某个类的所有类/结构体 - **find_callers** — 查找方法、属性或构造函数的每一个调用站点 - **get_type_hierarchy** — 遍历基类、接口和派生类型 - **get_di_registrations** — 扫描 DI 服务注册 - **get_project_dependencies** — 获取项目引用图 - **get_symbol_context** — 针对任意类型的一次性上下文转储 - **find_reflection_usage** — 检测动态/基于反射的用法 - **find_references** — 查找对任意符号(类型、方法、属性、字段、事件)的所有引用 - **go_to_definition** — 查找定义符号的源文件和行号 - **get_diagnostics** — 列出编译器错误、警告和 Roslyn 分析器诊断信息 - **get_code_fixes** — 获取针对任意诊断的可用代码修复及结构化文本编辑 - **search_symbols** — 按名称进行模糊工作区符号搜索 - **get_nuget_dependencies** — 列出每个项目的 NuGet 包引用 - **find_attribute_usages** — 查找用特定特性装饰的类型和成员 - **find_circular_dependencies** — 检测项目或命名空间依赖图中的循环 - **get_complexity_metrics** — 每个方法的圈复杂度分析 - **find_naming_violations** — 检查 .NET 命名规范合规性 - **find_large_classes** — 按成员数或行数查找过大的类型 - **find_unused_symbols** — 通过引用分析进行死代码检测 - **get_source_generators** — 列出每个项目的源生成器及其输出 - **get_generated_code** — 检查由源生成器生成的源代码 - **rebuild_solution** — 强制完整重新加载被分析解决方案 ## 安装 ### 作为 Claude Code 插件 ``` claude install gh:MarcelRoozekrans/roslyn-codelens-mcp ``` ### 作为 .NET Global Tool ``` dotnet tool install -g RoslynCodeLens.Mcp ``` ### 手动 MCP 配置 添加到您的 Claude Code MCP 设置中: ``` { "mcpServers": { "roslyn-codelens": { "command": "roslyn-codelens-mcp", "args": [], "transport": "stdio" } } } ``` ## 使用方法 该服务器通过从当前目录向上遍历来自动发现 `.sln` 文件。您也可以直接传递解决方案路径: ``` roslyn-codelens-mcp /path/to/MySolution.sln ``` ## 性能 所有类型查找均使用预构建的反向继承映射、成员索引和属性索引,以实现 O(1) 访问。在配备 .NET 10.0.3 的 i9-12900HK 上进行的基准测试: | Tool | Latency | Memory | |------|--------:|-------:| | `find_circular_dependencies` | 288 ns | 1.3 KB | | `get_project_dependencies` | 299 ns | 1.2 KB | | `go_to_definition` | 442 ns | 568 B | | `get_type_hierarchy` | 720 ns | 856 B | | `find_implementations` | 804 ns | 704 B | | `get_symbol_context` | 1.1 µs | 1.0 KB | | `get_source_generators` | 2.6 µs | 8.3 KB | | `find_attribute_usages` | 6.8 µs | 312 B | | `get_generated_code` | 13 µs | 9.8 KB | | `get_diagnostics` | 27 µs | 23 KB | | `get_complexity_metrics` | 50 µs | 5.8 KB | | `find_large_classes` | 60 µs | 1.2 KB | | `get_di_registrations` | 60 µs | 13 KB | | `get_nuget_dependencies` | 62 µs | 16 KB | | `find_reflection_usage` | 82 µs | 15 KB | | `find_callers` | 182 µs | 38 KB | | `search_symbols` | 517 µs | 2.4 KB | | `find_references` | 927 µs | 208 KB | | `find_unused_symbols` | 1.1 ms | 212 KB | | `find_naming_violations` | 5.0 ms | 670 KB | | Solution loading (one-time) | ~928 ms | 8 MB | ## 热重载 该服务器监视 `.cs`、`.csproj`、`.props` 和 `.targets` 文件的更改。当检测到更改时,受影响的项目会在下一次工具查询时延迟重新编译——仅重新编译过期的项目及其下游依赖项,而非整个解决方案。 返回位置的工具包含一个 `IsGenerated` 标志,用于区分源生成器输出与手写代码。 ## 环境要求 - .NET 10 SDK - 一个包含可编译项目的 .NET 解决方案 ## 开发 ``` dotnet build dotnet test dotnet run --project benchmarks/RoslynCodeLens.Benchmarks -c Release ``` ## 许可证 MIT
标签:AI编程助手, Claude Code, IDE, LLM辅助编程, MCP Server, NuGet, Roslyn, Source Generators, 云安全监控, 代码复杂度, 代码导航, 代码搜索, 代码智能, 代码补全, 依赖注入, 反射检测, 命名规范, 多人体追踪, 威胁情报, 开发者工具, 循环依赖, 死代码检测, 类型层级, 编译器平台, 诊断工具, 调用图, 静态分析