CSharperMcp
一个MCP(模型上下文协议)服务器,为C#代码提供类似LLMs IDE的语义理解。停止grepping文件和幻觉代码结构——使用Roslyn和ILSpy提供真正的编译器诊断、符号导航、查找引用、反编译DLL和代码操作。
为什么存在
目前的AI编码工具(Claude Code、Cursor)缺乏C#语言服务器集成。没有它,LLMs就会恢复文件和暴力反向工程代码结构。这很慢,缺少语义上下文,对于DLL中的代码来说完全失败。此服务器通过包装Roslyn API和ICSharpCode来修复这个问题。分解器。
特性
- 工作空间管理:加载和分析C#解决方案和项目
- 诊断:获取编译器错误、警告和分析器消息
- 符号智能:导航定义、查找引用、检查类型
- DLL反思:解压缩并探索第三方程序集和NuGet包
- 代码操作:应用重构和快速修复
______________________________________________________________________
安装
服务器以分布式方式分发。NET全局工具。使用 dnx 无需显式安装即可运行它:
# Run directly via dnx (no installation needed)
dnx CSharperMcp
# Or install globally
dotnet tool install --global CSharperMcp
# Run after installing
csharper-mcp需求
- .NET 10.0 SDK或更高版本
- MSBuild (通过Microsoft.Build.Locator自动定位)
______________________________________________________________________
配置
使用Claude代码
添加到您的项目 .mcp.json 或您的全局MCP配置:
{
"mcpServers": {
"csharp-er-mcp": {
"type": "stdio",
"command": "dnx",
"args": ["--yes", "CSharperMcp", "--workspace-from-cwd"]
}
}
}推荐: 使用 --workspace-from-cwd 它自动使用当前工作目录。这允许该工具全局安装,并在所有C#项目中工作,而无需对每个项目进行配置。
备选方案: 如果需要指定显式的工作区路径,请使用 --workspace /some/folder:
{
"mcpServers": {
"csharp-er-mcp": {
"type": "stdio",
"command": "dnx",
"args": ["--yes", "CSharperMcp", "--workspace", "/path/to/your/csharp/project"]
}
}
}注: 可变膨胀,如 "${workspaceFolder}" 与Claude Code的全局工具安装不可靠,这就是为什么 --workspace-from-cwd 是推荐的。
与光标一起使用
推荐: 使用 --workspace-from-cwd 适用于所有项目的全局安装:
{
"mcpServers": {
"csharp-er-mcp": {
"command": "dnx",
"args": ["--yes", "CSharperMcp", "--workspace-from-cwd"]
}
}
}备选方案: 如果需要指定显式的工作区路径,可以使用 ${workspaceFolder} 变量扩展(这在Cursor中工作):
{
"mcpServers": {
"csharp-er-mcp": {
"command": "dnx",
"args": ["--yes", "CSharperMcp", "--workspace", "${workspaceFolder}"]
}
}
}其他MCP客户端
dnx --yes CSharperMcp --workspace /path/to/your/project工作区自动初始化
服务器支持两种在启动时自动初始化工作区的方法:
--workspace -指定要初始化的显式路径:
dnx --yes CSharperMcp --workspace /path/to/your/project--workspace-from-cwd -使用当前工作目录:
dnx --yes CSharperMcp --workspace-from-cwd这两个选项都将:
- 寻找
.sln文件(首选一个匹配的目录名,否则为最大) - 退回到
.csproj如果找不到解决方案,则返回文件 - 加载工作区并立即提供工具
- 禁用
initialize_workspace工具(重新启动服务器以更改工作区)
没有任何参数:你必须打电话给 initialize_workspace 连接后手动工具。
使用YAML进行高级配置
您可以使用YAML配置文件自定义服务器行为和工具描述。服务器支持分层配置合并:
配置文件位置 (后面的文件会覆盖前面的文件):
~/.config/csharp-er-mcp.yml-用户全局首选项(可选)/.config/csharp-er-mcp.yml-项目特定配置(可选)
配置示例:
# Server configuration (optional - has defaults)
mcp:
serverInstructions: "Custom instructions for the MCP server..."
# Tool descriptions (optional)
tools:
initialize_workspace:
description: "Custom description here..."
get_diagnostics:
some_tool_to_hide:
isEnabled: false # Tool will be filtered out from MCP client特征:
- 覆盖发送给MCP客户端的服务器指令
- 自定义单个工具描述
- 通过以下方式禁用特定工具
isEnabled: false - 配置合并:用户配置→ 项目配置→ 命令行覆盖
______________________________________________________________________
可用的MCP工具
基础工具
initialize_workspace
从路径加载C#解决方案或项目。
输入:
{
"path": "/absolute/path/to/solution/or/project/or/directory"
}退货: 项目计数、解决方案路径、任何加载错误。
注: 禁用时 --workspace 或 --workspace-from-cwd 提供。
______________________________________________________________________
get_diagnostics
获取编译器错误、警告和分析器消息。
输入:
{
"file": "/path/to/file.cs", // Optional: filter by file
"startLine": 10, // Optional: filter by line range
"endLine": 50, // Optional: filter by line range
"severity": "Error" // Optional: Error|Warning|Info|Hidden
}退货: 诊断阵列,包括:
- 诊断ID(例如。,
CS0103) - 严重性(错误、警告、信息、隐藏)
- 消息
- 文件路径、行、列、结束行、结束列
hasFixboolean(代码操作是否可以修复此问题)
没有争论:返回整个工作区的诊断结果。
______________________________________________________________________
符号智能工具(即将推出)
get_symbol_info
在某个位置或通过完全限定名获取类型信息。
find_symbol_usages
在工作空间中查找对符号的所有引用。
get_definition_location
导航到符号的定义(在工作区或DLL元数据中)。
get_type_members
获取所有成员的完整类型定义(针对DLL类型进行反编译)。
______________________________________________________________________
代码操作工具(即将推出)
get_code_actions
在某个位置获取可用的重构和快速修复。
apply_code_action
执行代码操作(应用前可选择预览)。
______________________________________________________________________
搜索和导航工具(即将推出)
search_symbols
按名称模式查找符号(支持camelCase匹配)。
get_document_symbols
获取文件符号的层次轮廓。
______________________________________________________________________
扩展方法(特别功能,即将推出)
get_extension_methods
查找给定类型的所有可用扩展方法(扫描所有引用的程序集)。
______________________________________________________________________
使用示例
看 CLAUDE.md 有关如何执行以下操作的综合示例:
- 初始化工作区并修复编译器错误
- 浏览符号并查找用法
- 内省NuGet包代码(反编译的DLL)
- 使用预览应用重构
- 发现扩展方法
______________________________________________________________________
发展
先决条件
- .NET 10.0 SDK
- MSBuild(自动定位)
构建命令
# Restore dependencies
dotnet restore
# Build everything
dotnet build
# Run the server locally
dotnet run --project src/CSharperMcp.Server
# Run all tests
dotnet test
# Run only unit tests (fast)
dotnet test tests/CSharperMcp.Server.UnitTests
# Run only integration tests (slower, multi-process)
dotnet test tests/CSharperMcp.Server.IntegrationTests构建NuGet包
# Build the package
dotnet pack src/CSharperMcp.Server/CSharperMcp.Server.csproj -c Release -o ./artifacts
# Test locally before publishing
dotnet tool install --global --add-source ./artifacts CSharperMcp看 NUGET-PUBLISH.md 用于发布说明。
______________________________________________________________________
项目结构
csharp-er-mcp/
├── Directory.Build.props # Shared build configuration
├── Directory.Packages.props # Central package version management
├── CSharperMcp.sln # Solution file
├── src/
│ └── CSharperMcp.Server/ # Main MCP server console app
│ ├── Program.cs # Entry point (MSBuildLocator.RegisterDefaults())
│ ├── Server/Tools/ # MCP tool implementations
│ ├── Workspace/ # Solution/project loading & management
│ ├── Services/ # Roslyn & Decompiler service wrappers
│ └── Models/ # DTOs for tool responses
└── tests/
├── CSharperMcp.Server.UnitTests/ # Fast unit tests
└── CSharperMcp.Server.IntegrationTests/ # Slower integration tests______________________________________________________________________
技术栈
- .NET 10 -C#语言的最新特性
- 模型上下文协议0.6.0 -MCP C#官方SDK
- 微软。代码分析。工作区。MSBuild 5.0.0 -Roslyn API
- 微软。建造。定位器1.11.2 -动态查找MSBuild
- ICSharpCode。反编译器9.1.0 -用于DLL自检的ILSpy引擎
- NUnit 4 -测试框架
- 最小起订量 -模拟框架
- 流畅的演讲 -流畅的断言库
______________________________________________________________________
开发指南
看 CLAUDE.md 获取全面的开发说明,包括:
- 代码样式和访问修饰符(默认为
internal) - 中央包管理要求
- 测试原理(单元与集成)
- 架构模式
- MCP工具实施细节
______________________________________________________________________
支持
- 问题:
- NuGet包: NuGet.org上的CSharperMcp
______________________________________________________________________
许可证
看 许可证 文件以获取详细信息。
