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:3001HTTP主机
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服务器人机工程学特别有用。
