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, 云安全监控, 代码复杂度, 代码导航, 代码搜索, 代码智能, 代码补全, 依赖注入, 反射检测, 命名规范, 多人体追踪, 威胁情报, 开发者工具, 循环依赖, 死代码检测, 类型层级, 编译器平台, 诊断工具, 调用图, 静态分析