使用说明
MCPsharp
用于智能C#项目分析和语义代码编辑的模型上下文协议(MCP)服务器。为Claude Code提供对C#项目的深入理解,包括跨文件依赖关系、项目结构和基于Roslyn的语义操作。
特性
- MCP协议服务器 --基于stdio的JSON-RPC 2.0用于克劳德代码集成
- 文件操作 --打开项目,列出带有glob模式的文件,读/写/编辑文件
- 罗斯林集成 --直接使用Roslyn API进行C#语义分析(无子进程开销)
- 语义编辑 --查找类,添加具有适当缩进的属性/方法
- AI驱动的工具 --使用本地Ollama或云AI的自然语言代码库查询(实现 AI驱动的MCP模式)
- 跨平台 --macOS、Linux和Windows支持
建筑
Claude Code
↓ MCP (stdio, JSON-RPC)
┌─────────────────────────────────┐
│ MCPsharp Server │
├─────────────────────────────────┤
│ • MCP Protocol Handler │
│ • Project Context Manager │
│ • File Operations Service │
│ • Roslyn Workspace (Phase 1) │
└─────────────────────────────────┘
↓ (in-process)
Roslyn APIs
看 docs/CONCEPT.md 完整的设计和 docs/ARCHITECTURE-DECISION.md 建筑选择。
构建
先决条件
- .NET 9.0 SDK或更高版本
- Git
构建命令
# Restore dependencies
dotnet restore
# Build
dotnet build
# Build in Release mode
dotnet build --configuration Release
# Run tests
dotnet test
# Run tests with coverage
dotnet test --collect:"XPlat Code Coverage"
发布独立二进制文件
# Linux x64
dotnet publish src/MCPsharp/MCPsharp.csproj -c Release -r linux-x64 --self-contained -o publish/linux-x64
# macOS arm64 (Apple Silicon)
dotnet publish src/MCPsharp/MCPsharp.csproj -c Release -r osx-arm64 --self-contained -o publish/osx-arm64
# macOS x64 (Intel)
dotnet publish src/MCPsharp/MCPsharp.csproj -c Release -r osx-x64 --self-contained -o publish/osx-x64
# Windows x64
dotnet publish src/MCPsharp/MCPsharp.csproj -c Release -r win-x64 --self-contained -o publish/win-x64
安装
Claude代码配置
添加到您的克劳德代码 claude_desktop_config.json:
{
"mcpServers": {
"csharp": {
"command": "/path/to/mcpsharp",
"args": ["/path/to/your/csharp/project"]
}
}
}
或者使用.NET run进行开发:
{
"mcpServers": {
"csharp": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/MCPsharp/src/MCPsharp/MCPsharp.csproj", "/path/to/your/csharp/project"]
}
}
}
AI驱动工具设置
MCPsharp包括人工智能驱动的工具,这些工具使用本地或云人工智能来回答有关代码库的自然语言问题。这实现了 AI驱动的MCP模式 --人工智能在内部处理冗长的数据并返回简洁的答案,防止上下文污染。
支持的AI提供商
MCPsharp按以下顺序自动检测可用的AI提供商:
- 奥拉玛 (本地,免费,推荐)
- OpenRouter (基于云,需要API密钥)
- 无(AI工具已禁用)
选项1:Ollama(推荐)
在本地安装并运行Olama:
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Start Ollama service
ollama serve
# Pull a code-specialized model
ollama pull qwen2.5-coder:3b
MCPsharp将在以下时间自动检测Ollama http://localhost:11434 和使用 qwen2.5-coder:3b 默认情况下。
环境变量:
OLLAMA_URL--ollama服务器URL(默认值:http://localhost:11434)OLLAMA_MODEL--要使用的模型(默认值:qwen2.5-coder:3b)
选项2:OpenRouter
配置OpenRouter API密钥:
export OPENROUTER_API_KEY="your-api-key"
或者添加到您的配置文件中。MCPsharp将使用 anthropic/claude-3.5-sonnet 默认情况下。
选项3:禁用AI工具
集 AIProvider:Type 到 none 在配置中禁用AI驱动的工具。
使用AI工具
配置后,使用 ask_codebase 问自然语言问题的工具:
{
"name": "ask_codebase",
"arguments": {
"question": "How does authentication work in this project?",
"focus_path": "src/Auth"
}
}
这 focus_path 参数是可选的。AI在内部分析你的代码库结构、代码和配置,并返回一个简洁的答案,其中包含file:line引用。
AI代码转换工具
除了只读查询外,MCPsharp还提供AI驱动的代码修改工具,这些工具使用 Roslyn AST转换 为保证正确性:
{
"name": "ai_suggest_fix",
"arguments": {
"file_path": "src/MyService.cs",
"description": "Fix the null reference exception in ProcessData",
"line_number": 42,
"apply_changes": false
}
}
这 apply_changes 参数默认为 false 在应用更改之前预览更改。
为什么选择Roslyn AST而不是文本操作?
传统工具使用sed脚本、正则表达式或Python文本操作,可以:
- 生成语法无效的代码
- 中断编译
- 损坏的代码结构
- 引入细微的错误
MCPsharp的AI转换工具使用Roslyn的抽象语法树(AST)来:
- ✅ 保证C#代码语法有效
- ✅ 保持编译完整性
- ✅ 维护代码结构和格式
- ✅ 在返回更改之前验证更改
- ✅ 使用语义感知进行重构
可用的转换工具:
ai_suggest_fix-使用Roslyn验证修复错误ai_refactor-语义感知重构(保留行为)ai_implement_feature-基于AST的代码生成
所有工具返回a 默认预览.Set apply_changes: true 直接修改文件。
用法
运行服务器
# Run on current directory (auto-loads .sln/.csproj if found)
dotnet run --project src/MCPsharp/MCPsharp.csproj
# Run on specific project
dotnet run --project src/MCPsharp/MCPsharp.csproj /path/to/project
# Or use published binary
./mcpsharp /path/to/project
自动加载:如果MCPsharp在包含以下内容的目录中启动 .sln 或 .csproj 文件,它将在启动时自动加载项目。解决方案文件(.sln)当两者都存在时,首选项目文件。
测试服务器
# Test initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | dotnet run --project src/MCPsharp/MCPsharp.csproj
# Test tools/list
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | dotnet run --project src/MCPsharp/MCPsharp.csproj
# Run manual test script
./tests/manual-test.sh
可用工具
服务器提供40个MCP工具:
文件操作:
project_open-打开项目目录project_info-获取当前项目信息file_list-列出具有可选glob模式的文件file_read-读取文件内容file_write-写入文件file_edit-将文本编辑应用于文件
Roslyn/语义分析:
find_symbol-按名称查找符号get_symbol_info-获取详细的符号信息get_class_structure-获得完整的类结构add_class_property-向类添加属性add_class_method-向类添加方法find_references-查找所有符号引用find_implementations-查找接口实现parse_project-解析.csproj文件
工作流程和配置:
get_workflows-获取GitHub操作工作流parse_workflow-解析工作流YAMLvalidate_workflow_consistency-验证工作流与项目get_config_schema-获取配置文件架构merge_configs-合并配置文件
高级分析(第2阶段):
analyze_impact-分析代码更改的影响trace_feature-跨文件跟踪功能rename_symbol-在整个代码库中重命名符号find_callers-查找方法的所有调用者find_call_chains-分析方法调用链find_type_usages-查找某一类型的所有用法analyze_call_patterns-分析方法调用模式analyze_inheritance-分析类型继承find_circular_dependencies-查找循环依赖关系find_unused_methods-查找未使用的方法analyze_call_graph-分析调用图find_recursive_calls-查找递归调用链analyze_type_dependencies-分析类型依赖关系
代码质量:
code_quality_analyze-分析代码质量问题code_quality_fix-应用自动修复code_quality_profiles-列出可用的修复配置文件extract_method-将代码提取到新方法
AI驱动工具(只读):
ask_codebase-使用人工智能询问有关代码库的自然语言问题(返回简洁的答案,而不是冗长的数据)
人工智能驱动的代码转换(基于Roslyn AST):
ai_suggest_fix-AI建议使用Roslyn转换修复错误(保证C#语法有效)ai_refactor-具有语义感知的AI引导重构(保留程序行为)ai_implement_feature-AI使用基于AST的代码生成实现功能(无字符串模板)
重要: AI转换工具使用Roslyn AST而不是文本操作(sed/regex/Python)来确保所有代码更改在语法上有效并保持编译完整性。总是更喜欢这些工具来修改C#代码。
发展
项目结构
MCPsharp/
├── src/
│ └── MCPsharp/ # Main MCP server
├── tests/
│ └── MCPsharp.Tests/ # xUnit tests
├── docs/ # Documentation
│ ├── CONCEPT.md # Design document
│ ├── MVP-PLAN.md # Implementation plan
│ └── ARCHITECTURE-DECISION.md
├── .github/
│ └── workflows/
│ └── build.yml # CI/CD workflow
└── MCPsharp.sln # Solution file
运行测试
# Run all tests
dotnet test
# Run tests with detailed output
dotnet test --verbosity detailed
# Run specific test project
dotnet test tests/MCPsharp.Tests/MCPsharp.Tests.csproj
# Watch mode (re-run on file changes)
dotnet watch test
调试
# Run with debug output
dotnet run --project src/MCPsharp/MCPsharp.csproj --configuration Debug
# Attach debugger in VS Code or Rider
MCP工具(计划中)
阶段0:基本文件操作
project_open--打开C#项目目录project_info--获取项目元数据file_list--列出带有glob模式的文件file_read--读取文件内容file_write--写入文件内容file_edit--应用文本编辑
第一阶段:语义C#操作
language_server_start--初始化Roslyn工作区find_symbol--按名称查找类、方法、属性get_symbol_info--获取详细的符号信息get_class_structure--获取类成员和结构add_class_property--使用正确的缩进将属性添加到类中add_class_method--向类添加方法find_references--查找对某个符号的所有引用
看 docs/MVP-PLAN.md 了解详细的工具规格。
依赖项
运行时依赖关系
- 微软。代码分析。CSharp (4.11.0)--Roslyn C#编译器API
- 微软。代码分析。CSharp。工作区 (4.11.0)--Roslyn工作区API
- 微软。扩展。文件系统全局化 (9.0.0)——球形图案匹配
- 微软。扩展。日志记录 (9.0.0)--测井基础设施
测试依赖
- x单位 (2.9.2)——测试框架
- 流畅的演讲 (6.12.1)——流畅断言库
- 最小订货量 (4.20.72)——模拟框架
- 盖子.收集器 (6.0.2)——代码覆盖率
CI/CD
GitHub Actions工作流在每次推送和PR上运行:
- 基于Linux、macOS和Windows构建
- 运行所有具有代码覆盖率的测试
- 在主分支上发布自包含的二进制文件
- 将覆盖范围上传到Codecov
路线图
- ✅ 阶段0 (当前):具有文件操作的基本MCP服务器
- 🚧 第一阶段 (下一篇):语义C#操作的Roslyn集成
- 📋 第2阶段 (未来):项目/解决方案解析,多项目支持
- 📋 第三期 (未来):配置分析、工作流验证
- 📋 阶段4 (未来):数据库迁移、重构工具
贡献
这是@jas88的个人项目。欢迎投稿!
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
许可证
[待定]
文档
- 概念.md --完整的设计规范
- MVP-PLAN.md --实施计划和时间表
- 建筑决策.md --为什么直接Roslyn vs子流程
- CLAUDE.md --Claude代码实例说明
支持
- 问题:https://github.com/jas88/MCPsharp/issues
- 讨论:https://github.com/jas88/MCPsharp/discussions
