使用说明
roslyn mcp服务器
Roslyn支持的MCP服务器,供AI代理使用。NET解决方案。
该项目提供了一个同步感知语义层 MSBuildWorkspace,因此MCP客户端可以:
- 显式加载解决方案
- 检查项目和源文件
- 导航符号和参考
- 查询诊断和语义关系
- 使工作区状态与外部文件编辑保持一致
服务器目标。NET 9,同时支持两者 stdio 以及HTTP传输。
它做什么
当前的实现侧重于代理工作流的只读Roslyn工具。
工作区和服务器工具
server_info返回基本服务器和运行时信息。workspace_context从显式解析工作区上下文solutionPath.diagnose检查环境就绪性、MSBuild可用性和解决方案加载运行状况。load_solution加载a.sln,.slnx,或.csproj进入Roslyn的实时工作空间。get_workspace_state返回当前加载的工作区状态和缓存的解决方案摘要。get_project_structure返回已加载解决方案的项目和源文档(可选)。
导航工具
get_document_outline返回C#源文件的结构大纲。get_file_overview返回源文件的简明概述,包括其主要声明。get_type_overview返回已解析类型的简洁概述。get_type_members返回在解析类型上声明的成员。search_symbols在加载的解决方案中搜索源声明。get_symbol_info解析文件位置的语义符号信息。get_symbol_attributes返回应用于已解析符号的属性。go_to_definition返回已解析符号的源定义位置。get_method_signature返回文件位置处可调用成员的签名。get_method_source返回文件位置处可调用成员的源正文。find_references查找已解析符号的源引用。
分析工具
get_diagnostics返回解决方案或特定文件的编译器诊断。validate_code返回基于编译器诊断的轻量级有效性摘要。find_implementations查找接口、抽象类型和虚拟成员的实现。get_type_hierarchy返回已解析类型的基类型、派生类型和接口。find_callers查找可调用符号的调用者位置。get_outgoing_calls返回可调用成员的传出调用边。analyze_method返回方法级数据流、控制流、签名和传出调用信息。analyze_change_impact返回符号的尽力影响摘要,包括引用和实现。check_type_compatibility检查两个解析的类型是否兼容。
工作空间同步
该服务器设计用于长时间运行的代理会话,其中文件可能在Roslyn API之外更改。
它维护一个实时工作区同步管道,该管道:
- 监视工作区文件的外部更改
- 尽可能增量更新Roslyn文档
- 当项目结构更改需要时重新加载工作区
- 确保语义查询使用当前
Workspace.CurrentSolution
在实践中,这意味着以下工具 find_references, analyze_method,以及 get_diagnostics 可以反映所做的编辑:
- 由IDE中的用户执行
- 由代理通过直接文件编辑
- 通过其他工具更改磁盘上的文件
运行服务器
构建解决方案:
dotnet build .\roslyn-mcp-server.sln -v minimal
跑吧 stdio 主机:
dotnet run --project .\src\RoslynMcpServer.Host.Stdio\RoslynMcpServer.Host.Stdio.csproj
运行HTTP主机:
dotnet run --project .\src\RoslynMcpServer.Host.Http\RoslynMcpServer.Host.Http.csproj -- --urls http://localhost:3001
HTTP主机
HTTP主机公开:
GET /health- MCP端点位于
/mcp
写入HTTP请求和服务器日志:
- 到控制台
- 在以下位置滚动日志文件
src/RoslynMcpServer.Host.Http/logs
与MCP检查器一起使用
当HTTP主机在上运行时 http://localhost:3001,将检查器连接到:
http://localhost:3001/mcp
典型手动流程:
- 呼叫
server_info - 呼叫
workspace_context - 呼叫
diagnose - 呼叫
load_solution - 呼叫
get_workspace_state - 呼叫
get_project_structure - 使用导航或分析工具
示例 load_solution 请求:
{
"solutionPath": "D:\\Projects\\opensource\\roslyn-mcp-server\\roslyn-mcp-server.sln",
"forceReload": false
}
当前范围
当前服务器有意设置为只读。
在查询和同步层完全稳定后,计划重构、代码生成、预览/应用工作流和其他变异工具。
致谢
该项目借鉴了以下方面的想法和实施模式:
这些参考文献对工具库存计划、Roslyn第一工作流和MCP服务器人机工程学特别有用。