内容
# dotnet-context-mcp
[](https://github.com/sayinbrahim/dotnet-context-mcp/actions)
[](https://opensource.org/licenses/MIT)
[](https://dotnet.microsoft.com/download/dotnet/8.0)
[](https://nodejs.org)
[](https://www.npmjs.com/package/dotnet-context-mcp)
[](https://www.npmjs.com/package/dotnet-context-mcp)
为 Claude Code 提供深入的 .NET 解决方案上下文,借助 Roslyn 强大的 MCP 工具。
> **状态**:v0.1.0 已发布到 npm。4 个工具端到端工作。正在寻找早期采用者和反馈。欢迎 PR。
## 功能介绍
当 Claude Code 处理 .NET 项目时,它一次读取一个文件并推断结构。对于较大的解决方案,这速度慢且有损耗。
这个 MCP 服务器为 Claude 提供 **结构化、Roslyn 支持的访问** 以获取解决方案级信息。诸如“有哪些 DbContexts”、“显示 OrderContext 中的实体”或“列出 ApplicationDbContext 的迁移”之类的问题,通过单个工具调用即可完成,而不是多文件搜索。
## 架构
两层桥接 MCP 设计:
- **TypeScript MCP 层**(约 300 行):处理 MCP 协议,生成子进程,返回结构化响应
- **.NET CLI 层**(约 600 行 C#):使用 Roslyn 工作区 API 加载解决方案并象征性地分析代码
```
Claude Code (MCP 客户端)
│ 标准输入/输出
▼
TypeScript MCP 服务器 ← src/index.ts (Node.js + @modelcontextprotocol/sdk)
│ 子进程生成 + JSON 输出
▼
.NET CLI 桥接 ← cli/DotnetContextMcp.Cli/ (Roslyn 工作区)
```
## 可用工具
### `echo`
测试工具,用于验证 MCP 连接。回显输入返回给调用者。
### `list_dbcontexts`
列出解决方案中的所有 EF Core DbContext 类。
- **输入**:`solutionPath`(绝对 .sln 路径)
- **输出**:DbContext 名称、命名空间、项目、文件路径
- 自动过滤掉抽象 DbContexts
- 跳过没有 EF Core 引用的项目
### `list_entities`
列出跨所有 DbContexts 的 EF Core 实体(`DbSet<T>` 属性)。
- **输入**:`solutionPath`,可选 `dbContextName` 过滤器
- **输出**:实体名称、命名空间、文件路径、所属 DbSet 属性名称
### `list_migrations`
列出按 DbContext 组织的 EF Core 迁移。
- **输入**:`solutionPath`,可选 `dbContextName` 过滤器
- **输出**:迁移 ID、名称、ISO 8601 时间戳、文件路径
- 迁移按时间戳升序排序
- 支持多 DbContext 子文件夹布局(例如,`Migrations/SecondDb/`)
- 统计信息:最早/最新迁移日期、总计数
## 平台支持
| 平台 | RID | 状态 |
|---|---|---|
| Windows x64 | `win-x64` | 已测试 |
| Linux x64 | `linux-x64` | 已编译,未在生产环境中测试 |
| macOS x64 (Intel) | `osx-x64` | 已编译,未在生产环境中测试 |
| macOS ARM64 (Apple Silicon) | `osx-arm64` | 已编译,未在生产环境中测试 |
**当前限制:** `Microsoft.Build.Locator` 需要在目标机器上安装 .NET 8 SDK 以定位 MSBuild。完全独立的运行(无需 SDK)将在未来某个阶段实现。
## 安装
### 快速安装(推荐)
```bash
claude mcp add dotnet-context-mcp -s user -- npx -y dotnet-context-mcp@latest
```
`-s user` 标志使此 MCP 服务器在所有项目中全局可用。对于特定于项目的安装,请省略此标志。
重启 Claude Code(`/exit`,然后 `claude`)以加载新的 MCP 服务器。
验证服务器是否已连接:
```bash
claude mcp list
# 应该显示:dotnet-context-mcp ✔ 已连接
```
第一次工具调用可能需要 5-15 秒(npm 获取包并下载特定于平台的二进制文件)。后续调用时间为 3-4 秒。
### 平台支持
为以下平台自动下载预编译二进制文件:
- Windows x64
- Linux x64
- macOS Intel(x64)
- macOS Apple Silicon(arm64)
### 要求
- Node.js 18+
- Claude Code 2.x
- .NET 8 SDK 安装在您的机器上(Roslyn 的 MSBuildLocator 需要)
- `tar` 命令(在 macOS/Linux 上内置;可在 Windows 10+ 上使用)
### 从源代码(开发人员)
```bash
git clone https://github.com/sayinbrahim/dotnet-context-mcp.git
cd dotnet-context-mcp
npm install
npm run build:all # TypeScript + Windows 二进制文件
claude mcp add dotnet-context-mcp -- node /absolute/path/to/build/index.js
```
有关开发设置详细信息的,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 使用示例
### 发现 DbContexts
> **您**:在 C:\src\MyApp\MyApp.sln 我的解决方案中有哪些 DbContexts?
>
> **Claude**:[调用 list_dbcontexts] 找到 2 个 DbContexts:ApplicationDbContext(MyApp.Data,3 个实体)和 AuditDbContext(MyApp.Audit,1 个实体)。
### 探索实体
> **您**:显示 ApplicationDbContext 中的实体。
>
> **Claude**:[调用 list_entities 并过滤] ApplicationDbContext 管理 3 个实体:User、Order、Product。均在 MyApp.Data.Entities 命名空间中。
### 审查迁移
> **您**:ApplicationDbContext 的迁移历史是什么?
>
> **Claude**:[调用 list_migrations] 5 次迁移:
> 1. 20240115_InitialCreate(2024-01-15)
> 2. 20240201_AddOrderTotal(2024-02-01)
> 3. ...
## 已知限制
- **冷启动**:第一次调用需要 3–4 秒(自包含二进制文件预热)。以前使用 `dotnet run` 需要 15–20 秒。
- **需要 .NET SDK**:`MSBuildLocator` 必须在目标机器上找到 .NET 8 SDK。独立运行是未来的一个阶段。
- **.NET 10 .slnx 格式**:MSBuildWorkspace 需要经典 `.sln`。.slnx(.NET 10 XML 格式)尚不支持。
- **非 ASCII 路径**:具有非 ASCII 字符的解决方案路径可能会失败。目前请使用仅 ASCII 路径。
## 路线图
### 已完成
- [x] 第一阶段至第五阶段:MCP 脚手架、Roslyn 集成、list_dbcontexts
- [x] 第 6 阶段:list_entities,带有可选过滤
- [x] 第 7 阶段:list_migrations,带有元数据提取
- [x] 第 12.1-12.3 阶段:自包含二进制文件发布(冷启动性能提高 5-6 倍,支持 4 个平台)
- [x] 第 13 阶段:作为 npm 包发布(`npx dotnet-context-mcp`)— v0.1.0 在 npm 上上线
### 下一步
- [ ] 第 8 阶段:analyze_migration(单个迁移详细信息和操作)
- [ ] 第 9 阶段:find_relationships(实体导航属性)
- [ ] 第 10 阶段:find_dbcontext_dependencies(DI 图)
- [ ] 第 11 阶段:analyze_solution_health(整体报告)
- [ ] 第 12.4 阶段:独立二进制文件(目标机器上无需 .NET SDK)
- [ ] 第 14 阶段:文档网站
- [ ] 第 15 阶段:VS Code 扩展安装程序
## 贡献
有关开发设置、测试和 PR 指南,请参见 [CONTRIBUTING.md](CONTRIBUTING.md)。
## 支持
- [GitHub 问题](https://github.com/sayinbrahim/dotnet-context-mcp/issues) 用于报告错误
- [讨论](https://github.com/sayinbrahim/dotnet-context-mcp/discussions) 用于提问
## 许可证
MIT — 请参阅 [LICENSE](LICENSE) 了解详细信息。
## 作者
由 [Halil İbrahim Sayın](https://github.com/sayinbrahim) 构建 — Enerjisa 高级 .NET 开发人员,安卡拉。
联系方式:[LinkedIn](https://www.linkedin.com/in/halil-ibrahim-say%C4%B1n-0a8760115/)