OmniSharp MCP服务器
一个模型上下文协议(MCP)服务器,通过封装OmniSharp语言服务器为Claude Code CLI提供C#语言智能。
它的作用
此MCP服务器为Claude Code提供了完整的C#IDE功能:
- 查找符号 -按名称搜索类、方法、属性
- 转到定义 -跳转到定义符号的位置
- 查找引用 -查找代码库中符号的所有用法
- 查找实现 -查找实现接口的类
- 获取类型信息 -获取类型信息和文档
- 获取诊断 -获取编译器错误和警告
- 代码补全 -获取自动完成建议
- 签名帮助 -获取方法参数提示
- 重命名预览 -预览重命名会改变什么
- 已分解的源代码 -视图已反编译。NET框架代码
先决条件
- .NET SDK 9.0+ 安装
- Claude 代码命令行工具 安装
- C#解决方案文件(
.sln)
安装
1.克隆和构建
git clone https://github.com/your-repo/omnisharp-mcp.git
cd omnisharp-mcp
dotnet publish src/OmniSharpMCP/OmniSharpMCP.csproj -c Release -o publish2.配置克劳德代码
创建MCP服务器并将其添加到您的Claude Code配置中。
每个项目需要什么
A.创建 .mcp.json 在项目根目录中:
{
"mcpServers": {
"csharp": {
"type": "stdio",
"command": "dotnet",
"args": ["/path/to/omnisharp-mcp/publish/OmniSharpMCP.dll"],
"env": {
"OMNISHARP_SOLUTION": "/path/to/your/project.sln"
}
}
}
}B.编辑.claude/mcp.json文件的args和env值。
我项目中编辑的mcp.json文件示例:
{
"mcpServers": {
"csharp": {
"type": "stdio",
"command": "dotnet",
"args": ["/Users/omersomekhbeachbum/dev/omnisharp-mcp/publish/OmniSharpMCP.dll"],
"env": {
"OMNISHARP_SOLUTION": "/Users/omersomekhbeachbum/dev/rummystars-client/rummystars-client.sln"
}
}
}
}3.启用MCP服务器
创建(如果尚未创建)和编辑 ~/.claude/settings.local.json:
{
"enabledMcpjsonServers": ["csharp"],
"enableAllProjectMcpServers": true
}4.重新启动克劳德代码
只要所有claude实例都关闭,mcp就可以启动。
再次启动claude:
claude验证服务器是否已连接:
/mcp你应该看看 csharp 在已连接的服务器列表中。
允许claude使用omnisharp mcp工具
这是开箱即用的!这里不需要额外的配置。 每当claude实例运行时,他都有所有的工具,你不需要为他指定要使用的工具。根据提示,claude实例将决定哪些工具最适合他,以获得想要的结果。
首次运行
首次运行时,MCP服务器将:
- 立即启动(以便Claude Code可以连接)
- 下载OmniSharp HTTP服务器(约50MB)至
~/.omnisharp-mcp/omnisharp/ - 启动OmniSharp并在后台加载您的解决方案
注: OmniSharp加载您的解决方案时,第一次启动需要2-3分钟。在此期间,工具将返回错误。如果OmniSharp已经在运行,后续的初创公司会更快。
预热OmniSharp(可选)
为了避免等待OmniSharp加载,您可以预先启动它:
./warmup-omnisharp.sh此脚本:
- 启动OmniSharp(如果尚未运行)
- 等待满载
- 使其保持运行,以实现即时工具可用性
macOS登录时自动启动
创建 ~/Library/LaunchAgents/com.omnisharp.mcp.plist:
Label
com.omnisharp.mcp
ProgramArguments
/usr/local/share/dotnet/dotnet
/Users/YOUR_USERNAME/.omnisharp-mcp/omnisharp/OmniSharp.dll
-s
/path/to/your/project.sln
-p
2050
EnvironmentVariables
DOTNET_ROLL_FORWARD
LatestMajor
RunAtLoad
KeepAlive
StandardOutPath
/tmp/omnisharp.log
StandardErrorPath
/tmp/omnisharp.log
加载它:
launchctl load ~/Library/LaunchAgents/com.omnisharp.mcp.plist可用工具
连接后,Claude Code可以访问这些工具:
| 工具 | 说明 |
|---|---|
find_symbols | 按名称模式搜索符号 |
go_to_definition | 导航到符号定义 |
find_references | 查找对某个符号的所有引用 |
find_implementations | 查找接口实现 |
get_type_info | 获取类型和文档信息 |
get_diagnostics | 获取文件的编译器错误/警告 |
get_completions | 获取代码完成建议 |
get_signature_help | 获取方法签名帮助 |
get_file_members | 获取文件的大纲 |
get_workspace_info | 获取解决方案/项目信息 |
preview_rename | 预览重命名更改 |
get_decompiled_source | 获取反编译的元数据源 |
建筑
Claude Code CLI
|
| (stdio - JSON-RPC)
v
OmniSharp MCP Server (this project)
|
| (HTTP - REST API)
v
OmniSharp HTTP Server (port 2050)
|
| (Roslyn)
v
Your C# SolutionMCP服务器充当网桥:
- 通过stdio接收Claude Code的工具调用
- 将它们转换为对OmniSharp的HTTP请求
- 将格式化的响应返回给Claude
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OMNISHARP_SOLUTION | 通往您的道路 .sln 文件 | 必填 |
OMNISHARP_PORT | OmniSharp HTTP端口 | 2050 |
OMNISHARP_PATH | 自定义OmniSharp DLL路径 | 自动下载 |
命令行参数
dotnet OmniSharpMCP.dll --solution /path/to/solution.sln --port 2050故障排除
MCP服务器连接失败
- 检查
/mcp在Claude Code中查看服务器状态 - 验证中的路径
mcp.json是正确的 - 确保
settings.local.json有"csharp"在enabledMcpjsonServers
工具返回错误
OmniSharp可能仍在加载。检查状态:
curl -X POST http://localhost:2050/checkreadystatus -d '{}'如果它回来了 {"Ready":false},等待OmniSharp完成加载。
OmniSharp无法启动
检查日志:
tail -f /tmp/omnisharp.log常见问题:
- 未找到解决方案文件
- 未安装.NET SDK
- 2050港已在使用中
符号搜索返回空
OmniSharp需要时间进行索引。大型解决方案(如Unity项目)可能需要2-3分钟。
重置OmniSharp
# Kill existing processes
pkill -f "omnisharp/OmniSharp.dll"
# Delete downloaded OmniSharp (will re-download on next start)
rm -rf ~/.omnisharp-mcp/omnisharp发展
从源头构建
cd omnisharp-mcp
dotnet build src/OmniSharpMCP/OmniSharpMCP.csproj本地运行
OMNISHARP_SOLUTION="/path/to/solution.sln" dotnet run --project src/OmniSharpMCP/OmniSharpMCP.csproj直接测试OmniSharp
# Find symbols
curl -X POST http://localhost:2050/findsymbols \
-H "Content-Type: application/json" \
-d '{"Filter": "MyClass"}'
# Check ready status
curl -X POST http://localhost:2050/checkreadystatus -d '{}'许可证
麻省理工学院
