RoslynMcp

  • 项目简介
    RoslynMcp 是一个面向 MCP 的服务端框架,整合 Roslyn 代码分析能力,提供工具(如加载解决方案、理解代码库、列出类型/成员、符号解析、代码关系推断等)以及导航、依赖、变更等能力,旨在为 LLM 客户端提供标准化的代码上下文与可调用功能。

  • 主要功能点

    • 资源与工具管理:托管并管理与代码分析相关的资源与工具,注册并执行工具、返回结构化结果。
    • 指令与导航能力:实现对代码符号、类型层级、依赖关系、调用图、Usages、References、实现和导出等的查询与导航能力。
    • 代码理解与分析:提供 UnderstandCodebase、ListTypes、ListMembers、GetTypeHierarchy、FindImplementations、FormatDocument 等实用工具,用以分析和理解代码库。
    • 诊断与指标:在分析阶段收集诊断信息与度量指标,为代码质量与可维护性提供数据支持。
    • 会话与工作区管理:支持解决方案在工作区中的加载、切换、重新加载等会话管理,确保上下文一致性。
    • MCP 兼容:设计接口以便作为 MCP 服务端,与客户端通过 JSON-RPC 进行请求与响应,支持扩展传输通道(如 StdIn、Server-Sent Events、WebSocket 等)。
  • 安装步骤

    1. 安装本地开发工具(如 .NET SDK 已安装)。
    2. 全局安装 MCP 服务端工具(示例工具名与包名在仓库的 README 中有说明):
      • dotnet tool install -g RoslynMcp
    3. 更新工具(如已有安装时):
      • 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 一致,以便成功建立连接并访问服务能力。

服务器信息