返回市场
dnSpy扩展.MCP

dnSpy扩展.MCP

作者:KernelErr10 星标更新:2025-10-24

项目介绍

dnSpy MCP 扩展

构建 发布

这是一个针对 dnSpyEx模型上下文协议 (MCP) 扩展,它向像 Claude 这样的AI助手暴露了 .NET 组件分析工具。

功能

MCP 工具 (共10个)

该扩展提供了10个强大的工具用于分析 .NET 组件:

  1. list_assemblies - 列出所有已加载组件及其元数据
  2. get_assembly_info - 获取特定组件的详细信息
  3. list_types - 列出组件中的所有类型,并提供过滤选项
  4. get_type_info - 获取全面的类型信息(字段、属性、方法、事件)
  5. get_type_fields - 按通配符模式筛选字段(例如:*Bonus*
  6. get_type_property - 获取详细的属性信息,包括 getter 和 setter
  7. find_path_to_type - 查找连接两个类型的属性/字段链(使用广度优先搜索算法)
  8. get_method_signature - 获取详细的方法签名信息
  9. decompile_method - 将方法反编译为 C# 源代码
  10. search_types - 根据名称模式在所有组件中搜索类型

MCP 资源 (共6个)

全面嵌入的 BepInEx 插件开发文档:

  1. plugin-structure - 基本插件设置和元数据
  2. harmony-patching - HarmonyX 补丁指南(前缀/后缀/转换器)
  3. configuration - 配置系统用法
  4. common-scenarios - 8种常见的插件开发模式
  5. il2cpp-guide - 完整的 IL2CPP 开发指南
  6. mono-vs-il2cpp - 并排比较和迁移指南

所有文档都内置于扩展 DLL 中 - 不需要互联网连接。

安装

从发布版安装(推荐)

  1. 发布页面 下载最新版本
  2. 选择适合您 dnSpy 版本的 DLL 文件:
    • dnSpy.Extension.MCP-net48.dll - 适用于 dnSpy .NET Framework 4.8
    • dnSpy.Extension.MCP-net8.0.dll - 适用于 dnSpy .NET 8.0
  3. 将文件重命名为 dnSpy.Extension.MCP.x.dll
  4. 复制到 <dnSpy-安装路径>\bin\Extensions\dnSpy.Extension.MCP\
  5. 重启 dnSpy

从源码安装

# 克隆 dnSpyEx 仓库
git clone https://github.com/dnSpyEx/dnSpy.git
cd dnSpy

# 将此扩展克隆到 Extensions 文件夹
cd Extensions
git clone https://github.com/KernelErr/dnSpy.Extension.MCP.git

# 构建扩展
cd dnSpy.Extension.MCP
dotnet build -c Release

# 复制到 dnSpy 安装目录
copy bin\Release\net48\dnSpy.Extension.MCP.x.dll <dnSpy-安装路径>\bin\Extensions\dnSpy.Extension.M

配置

在 dnSpy 中访问设置:编辑 → 设置 → MCP 服务器

可用设置:

  • 启用服务器 - 启动/停止 MCP 服务器
  • 端口 - HTTP 服务器端口(默认:3000)
  • 主机 - 绑定地址(默认:本地主机,对于 .NET Framework)

使用

与 Claude Desktop 结合使用

添加到您的 Claude Desktop 配置 (claude_desktop_config.json):

{
  "mcpServers": {
    "dnspy": {
      "command": "http",
      "args": ["http://localhost:3000"]
    }
  }
}

测试服务器

检查服务器状态:

curl http://localhost:3000/health

预期响应:

{"status":"ok","service":"dnSpy MCP Server"}

开发

构建

# 为 .NET Framework 4.8 构建
dotnet build -c Release -f net48

# 为 .NET 8.0 构建
dotnet build -c Release -f net8.0-windows

项目结构

dnSpy.Extension.MCP/
├── .github/workflows/      # GitHub Actions (构建、发布)
├── McpServer.cs           # HTTP 服务器 (Kestrel/.NET, HttpListener/.NET Framework)
├── McpProtocol.cs         # JSON-RPC 2.0 协议模型
├── McpTools.cs            # 10 个 MCP 工具实现
├── McpSettings.cs         # 设置界面和持久化
├── BepInExResources.cs    # 嵌入式文档 (6 个资源)
└── dnSpy.Extension.MCP.csproj

架构

  • 多框架支持:同时支持 net48net8.0-windows
  • 服务器实现
    • .NET 8.0:ASP.NET Core Kestrel(高性能)
    • .NET Framework:HttpListener(兼容性)
  • MEF 集成:使用 dnSpy 的托管可扩展性框架
  • 协议:HTTP 上的 JSON-RPC 2.0
  • CORS 启用:允许跨域请求

协议

该扩展实现了 模型上下文协议 (MCP) 规范版本 2.024-11-05

支持的方法:

  • initialize - 服务器初始化
  • ping - 心跳
  • tools/list - 列出可用工具
  • tools/call - 执行一个工具
  • resources/list - 列出文档资源
  • resources/read - 读取文档内容
  • notifications/* - 处理客户端通知

CI/CD

GitHub Actions 工作流

  1. 构建工作流 (.github/workflows/build.yml)

    • 触发条件:推送到主分支或合并请求
    • 构建 net48 和 net8.0-windows
    • 在 Debug 和 Release 配置下运行
    • 上传 Release 构建的工件
  2. 发布工作流 (.github/workflows/release.yml)

    • 触发条件:推送标签 (v*.*.*) 或手动调度
    • 构建发布 DLL
    • 创建带有资产的 GitHub 发布
    • 自动生成发布说明

创建发布

# 标记发布
git tag v1.0.0
git push origin v1.0.0

# GitHub Actions 将自动:
# 1. 构建 net48 和 net8.0 DLL
# 2. 创建 GitHub 发布
# 3. 上传 DLL 和 README 作为资产

贡献

欢迎贡献!请:

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m '添加精彩功能')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开拉取请求

GitHub Actions 将自动构建和测试您的 PR。

技术细节

依赖项

  • dnSpy.Contracts.DnSpy - dnSpy API 合约
  • dnSpy.Contracts.Logic - 核心逻辑合约
  • dnlib - .NET 元数据库
  • System.Text.Json - JSON 序列化
  • ASP.NET Core (仅限 net8.0) - Kestrel HTTP 服务器

广度优先搜索路径查找

find_path_to_type 工具使用广度优先搜索来查找类型之间的导航路径:

// 示例:从 PlayerController 到 HealthBonus 的路径查找
// 结果:PlayerController -> PlayerState -> Bonuses -> HealthBonus

反编译

使用 dnSpy 内置的反编译器,具有可配置选项:

  • 语言:C#
  • 缩进:Tab
  • 注释冗长度:可配置

许可证

此扩展遵循与 dnSpyEx 相同的许可证。请参阅 dnSpyEx 仓库 获取许可信息。

致谢

故障排除

扩展未加载

  • 检查 dnSpy 控制台中的错误消息
  • 验证 DLL 是否位于正确位置
  • 确保文件名为 dnSpy.Extension.MCP.x.dll

服务器未启动

  • 检查端口是否已被占用
  • 查看 dnSpy 控制台日志
  • 尝试更改设置中的端口

构建错误

  • 确保 dnSpy 仓库克隆在父目录中
  • 在 dnSpy 根目录运行 dotnet restore
  • 检查 .NET SDK 版本(需要 .NET 8.0 SDK)

支持

对于问题、疑问或功能请求,请在 GitHub 仓库 中打开一个 Issue。