RoslynMcp
-
项目简介
RoslynMcp 是一个面向 MCP 的服务端框架,整合 Roslyn 代码分析能力,提供工具(如加载解决方案、理解代码库、列出类型/成员、符号解析、代码关系推断等)以及导航、依赖、变更等能力,旨在为 LLM 客户端提供标准化的代码上下文与可调用功能。 -
主要功能点
- 资源与工具管理:托管并管理与代码分析相关的资源与工具,注册并执行工具、返回结构化结果。
- 指令与导航能力:实现对代码符号、类型层级、依赖关系、调用图、Usages、References、实现和导出等的查询与导航能力。
- 代码理解与分析:提供 UnderstandCodebase、ListTypes、ListMembers、GetTypeHierarchy、FindImplementations、FormatDocument 等实用工具,用以分析和理解代码库。
- 诊断与指标:在分析阶段收集诊断信息与度量指标,为代码质量与可维护性提供数据支持。
- 会话与工作区管理:支持解决方案在工作区中的加载、切换、重新加载等会话管理,确保上下文一致性。
- MCP 兼容:设计接口以便作为 MCP 服务端,与客户端通过 JSON-RPC 进行请求与响应,支持扩展传输通道(如 StdIn、Server-Sent Events、WebSocket 等)。
-
安装步骤
- 安装本地开发工具(如 .NET SDK 已安装)。
- 全局安装 MCP 服务端工具(示例工具名与包名在仓库的 README 中有说明):
- dotnet tool install -g RoslynMcp
- 更新工具(如已有安装时):
- dotnet tool update -g RoslynMcp
-
服务器配置(面向使用方的配置描述,具体实现以实际部署为准)
MCP 服务器客户端连接配置需要通过 JSON 指定服务器信息(如名称、启动命令及参数等),用于 MCP 客户端在本地或远程启动与连接服务。以下为示例字段描述,请据实际环境填写:- serverName: RoslynMcpCodeInspector
- command: ["roslynmcp"]
- args: ["--transport","stdio"](也可配置为 ["--transport","sse"]、["--transport","ws"] 等,具体按实现支持的传输协议设定)
- description: MCP 服务端名称及用途说明
- resourcesDirectory: 指向代码分析所需的资源目录(若有)
- promptsTemplate: 提示模板或路径(若 MCP 服务器支持动态提示模板渲染)
说明:以上字段用于 MCP 客户端在启动阶段与服务端建立连接、协商能力、传输方式等。实际部署时,请参照仓库实现中的服务入口、命令行参数及配置项进行配置。
-
基本使用方法
- 启动与连接:按照配置在服务器端启动 RoslynMcp 服务端程序,MCP 客户端通过配置中的命令和传输设置,与服务端建立连接并发送 JSON-RPC 请求。
- 会话初始化:通过 load_solution、discover/load/锁定工作区等工具,初始化工作区与解决方案的上下文。
- 资源与工具调用:在会话中使用工具(如 load_solution、list_types、resolve_symbol、trace_flow 等)获取结构化的数据与分析结果,得出的符号、类型、调用关系等可直接传递给 LLM 进行决策与生成。
- 安全与扩展:服务器提供会话管理、能力声明和错误处理,支持多种传输协议,便于横向扩展与安全控制。
- 调试与诊断:若遇到问题,可查看诊断信息、日志和诊断结果,必要时对工作区与生成的中间文件进行验证与修复。
- 进一步集成:可将该 MCP 服务端接入到更大规模的工作流中,将 RoslynMcp 的分析能力嵌入到 AI 助手的上下文提供链中,提升代码理解与生成质量。
-
运行示例要点
- 运行前请确保已按照仓库的要求安装并配置好 RoslynMcp 服务端以及相关依赖。
- 根据实际使用场景选择传输方式(标准输入/输出、SSE、WebSocket),并在客户端配置中对应设置。
- 使用 MCP 客户端对接服务端时,确保 serverName、command、args 一致,以便成功建立连接并访问服务能力。