返回市场
德尔菲MCP

德尔菲MCP

作者:JavierusTk6 星标更新:2025-10-26

项目介绍

DelphiMCP - Delphi 模型上下文协议框架

许可证:MPL 2.0 Delphi 版本 平台 GitHub Issues 欢迎提交 PR 状态

一个正在开发中的用于在 Delphi 中构建 MCP(模型上下文协议)服务器的框架

版本 3.3.0 - 增强模态支持 现在支持通过空格键自动化模态窗口,并增强了焦点检测。详情见 CHANGELOG.md。

概述

DelphiMCP 是一个正在开发中的通用 VCL 自动化框架,旨在通过模型上下文协议(MCP)实现基于 AI 的自动化。

这是什么:

  • 自动化框架:30 个专业工具用于 VCL 自动化(视觉检查、控件交互、键盘/鼠标、同步)
  • MCP 桥接器:通过 HTTP/SSE 和命名管道连接框架到 Claude Code
  • 在开发中:与 CyberMAX ERP 系统一起开发
  • 自包含:除了 Delphi RTL/VCL 外没有外部依赖

当前状态:

  • 模态窗口支持 - 非 VCL 对话框(MessageDlg, TOpenDialog)现在支持空格键
  • 增强焦点检测 - ui_focus_get 现在显示按钮标题和控件类型
  • 三级焦点管理 - 在 Windows 11 上可靠地激活窗口
  • ⚠️ 正在进行中 - 一些边缘情况可能需要手动干预

架构组件

此仓库包含三个主要组件:

  1. AutomationTools(主产品)

    • 位置:Source/AutomationTools/
    • 两层架构
      • AutomationBridge(13 个基础设施单元):配置、日志记录、注册表、服务器、实用工具
      • AutomationTools(30 个自动化工具):视觉检查、控件交互、键盘/鼠标、同步
    • 命名管道服务器,使用 JSON-RPC
    • 自包含的 VCL 自动化(约 6,000 行)
    • 线程安全的 VCL 交互
    • 适用于任何 Delphi VCL 应用程序
  2. MCPBridge

    • 位置:Source/MCPbridge/
    • HTTP/SSE 服务器(连接到 Claude Code)
    • 动态工具代理(通过命名管道转发调用)
    • 9 个额外的实用工具(调试捕获等)
    • 基于 Delphi-MCP-Server 框架
  3. 示例应用程序

    • 位置:Examples/SimpleVCLApp/
    • 展示框架集成
    • 展示典型使用模式
    • 准备运行和测试

关键特性

  • 30 个自动化工具 - 视觉检查、控件交互、键盘/鼠标、同步
  • 模态窗口支持 - 非 VCL 对话框(MessageDlg, TOpenDialog)完全支持
  • 增强焦点检测 - ui_focus_get 显示按钮标题和控件类型(v3.3.0)
  • 空格键支持 - 正确激活 Windows 对话框中的按钮(v3.3.0)
  • 自包含 - 除了 Delphi RTL/VCL 外没有外部依赖
  • 易于集成 - 两行设置:RegisterCoreAutomationTools; StartAutomationServer;
  • 线程安全 - 所有 VCL 访问通过 TThread.Synchronize
  • 可扩展性 - 容易添加自定义工具
  • HTTP/MCP 桥接器 - 无缝连接到 Claude Code

工具类别

视觉检查(9 个工具):截图、获取窗体信息、列出打开的窗体、列出控件、查找控件、获取控件、ui_get_tree_diff、ui_focus_get、ui_value_get

控件交互(7 个工具):设置控件值、ui_set_text_verified、点击按钮、选择组合框项、选择标签、关闭窗体、设置焦点

键盘/鼠标(5 个工具):ui_send_keys、ui_mouse_move、ui_mouse_click、ui_mouse_dblclick、ui_mouse_wheel

同步(4 个工具):等待空闲、等待焦点、等待文本、等待条件

开发(2 个工具):分析窗体标签顺序、列出可聚焦窗体

实用工具(2 个工具):echo、列出工具

桥接工具(9 个工具):调试捕获工具、连接性测试

快速集成

最小集成(2 行):

uses AutomationServer, AutomationCoreTools;
begin
  Application.Initialize;
  Application.CreateForm(TfmMain, fmMain);

  RegisterCoreAutomationTools;  // 注册 30 个工具
  StartAutomationServer;        // 启动服务器

  Application.Run;
end.

依赖项

必需的:

  • Delphi 12(RAD Studio 12 Athens)或更高版本
  • Delphi-MCP-Server 框架(用于桥接组件)

无其他依赖项:

  • AutomationFramework 是自包含的(仅需 RTL/VCL)
  • 不需要外部库或组件

五分钟快速入门

只需几步即可让 DelphiMCP 与 Claude Code 运行起来:

第一步:克隆仓库

git clone https://github.com/JavierusTk/DelphiMCP.git
cd DelphiMCP

第二步:配置依赖项

  1. 安装 Delphi-MCP-Server 框架
  2. 更新 Packages/DelphiMCP.dpk 中的路径(参见 Packages/CONFIGURATION.md

第三步:构建桥接服务器

# 在 Delphi IDE 中打开
Source/MCPserver/DelphiMCPserver.dproj

# 或从命令行编译
cd Source/MCPserver
dcc32 DelphiMCPserver.dpr

第四步:运行服务器

cd Binaries
./DelphiMCPserver.exe

第五步:连接 Claude Code

从命令行添加 MCP 服务器:

# 将 DelphiMCP 服务器添加到 Claude Code 配置
claude mcp add delphi-mcp http://localhost:3001/mcp -t http

测试它:询问 Claude Code:“列出 delphi-mcp 的可用工具


兼容性

组件版本状态备注
Delphi12 (29.0)✅ 测试过RAD Studio 12 Athens
Delphi11⚠️ 未测试应该工作,但未验证
Delphi10.4+⚠️ 未测试可能需要调整才能工作
Windows10 (1809+)✅ 支持需要 Windows 10 或更高版本
Windows11✅ 支持完全测试过
Windows Server2019+✅ 支持支持命名管道
Indy10.6+✅ 必需随 Delphi 提供
MCP 协议2024-11-05✅ 支持最新规范

平台说明

  • 命名管道是 Windows 特有的 - 该框架需要 Windows
  • Indy 随 Delphi 提供 - 不需要单独安装
  • 支持 64 位编译(Win64 平台)

详细设置

先决条件

  • Delphi 12(RAD Studio 12)或更高版本
  • Windows(命名管道是 Windows 特有的)
  • Delphi-MCP-Server 框架
  • 目标应用程序,带有 MCP 服务器实现(你的 Delphi 应用程序)

运行 DelphiMCPserver

  1. 启动你的目标应用程序(启用 MCP 服务器)

  2. 运行桥接服务器

    cd Binaries
    ./DelphiMCPserver.exe
    
  3. 配置 Claude Code

    claude mcp add delphi-mcp http://localhost:3001/mcp -t http
    
  4. 测试连接

    Claude,你能列出可用的工具吗?
    

架构

Claude Code (AI 助手)
       ↓ MCP 协议 (HTTP/SSE)
┌─────────────────────────────────────────┐
│ DelphiMCPserver.exe                     │
│                                         │
│  ┌────────────────────────────────────┐ │
│  │ Delphi-MCP-Server (HTTP/协议)      │ │
│  │  - HTTP/SSE 服务器 (Indy)          │ │
│  │  - MCP JSON-RPC 2.0 处理           │ │
│  │  - 工具/资源管理                   │ │
│  └────────────────────────────────────┘ │
│               ↓                         │
│  ┌────────────────────────────────────┐ │
│  │ DelphiMCP (工具及代理)            │ │
│  │  - 动态代理逻辑                   │ │
│  │  - 命名管道客户端                 │ │
│  │  - 调试捕获引擎                   │ │
│  │  - 9 个内置工具                   │ │
│  └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
       ↓ 命名管道 (\\.\pipe\YourApp_MCP_Request)
目标应用程序(你的 Delphi 应用程序)
       ↓ JSON-RPC 2.0
内部 MCP 服务器(嵌入目标应用)

依赖结构:

  • DelphiMCPserver.exe = Delphi-MCP-Server(HTTP 层)+ DelphiMCP(工具/代理层)
  • Indy HTTP 服务器(随 Delphi 提供)提供 HTTP/SSE 传输
  • 命名管道提供与目标 Delphi 应用程序的进程间通信

详见 Documentation/ARCHITECTURE.md 以了解详细架构。

安装

选项 1:作为包使用

在 Delphi IDE 中安装 DelphiMCP 包:

1. 在 Delphi 中打开 Packages/DelphiMCP.dpk
2. 构建包
3. 添加到项目所需包中

详见 Packages/README.md 以了解详细安装说明。

选项 2:直接使用源码(推荐)

将 MCPautomationBridge 包添加到项目中:

项目 → 选项 → 包 → 运行时包
添加:MCPautomationBridge

或者将源目录添加到搜索路径:
$(DelphiMCP)\Source\MCPbridge\Core;$(DelphiMCP)\Source\MCPbridge\Tools

核心组件

MCPautomationBridge 包(Source/MCPbridge/)

连接 Delphi 应用程序到 MCP 服务器的自动化桥接库。

核心组件Source/MCPbridge/Core/):

  • MCPServer.Application.DynamicProxy.pas - 工具发现的动态代理
  • MCPServer.Application.PipeClient.pas - 目标应用程序的命名管道客户端
  • MCPServer.DebugCapture.Core.pas - OutputDebugString 捕获引擎
  • MCPServer.DebugCapture.Types.pas - 调试捕获类型和结构

内置工具Source/MCPbridge/Tools/):

  1. mcp_hello - 测试连接
  2. mcp_echo - 回显消息(可选大写)
  3. mcp_time - 获取系统时间并格式化
  4. start_debug_capture - 开始捕获调试输出
  5. get_debug_messages - 检索捕获的消息(可过滤)
  6. stop_debug_capture - 结束捕获会话
  7. get_capture_status - 获取捕获会话统计信息
  8. pause_resume_capture - 暂停/恢复捕获
  9. get_process_summary - 进程统计信息

调试捕获功能

框架包括一个强大的调试输出捕获系统:

// 开始捕获所有进程的调试输出
start_debug_capture

// 按进程名称过滤
get_debug_messages(processname="YourApp.exe")

// 按消息内容过滤
get_debug_messages(messagecontains="[ERROR]")

// 按正则表达式模式过滤
get_debug_messages(messageregex="\\[MCP\\].*")

// 获取统计信息
get_process_summary

详见 Documentation/DEBUG-CAPTURE.md 以了解完整文档。

扩展框架

添加自定义工具

  1. Source/Tools/ 中创建一个新的单元:

    unit MCPServer.Tool.MyCustomTool;
    
    interface
    
    uses MCPServer.Types;
    
    procedure RegisterMyCustomTool(Server: TMCPServer);
    
    implementation
    
    procedure RegisterMyCustomTool(Server: TMCPServer);
    begin
      Server.RegisterTool('my-custom-tool',
        procedure(Params: TJSONObject; out Result: TJSONObject)
        begin
          // 你的工具实现
        end,
        '我的自定义工具的描述'
      );
    end;
    
    end.
    
  2. DelphiMCPserver.dpr 中注册:

    MCPServer.Tool.MyCustomTool.RegisterMyCustomTool(Server);
    

连接到不同的应用程序

修改 MCPServer.Application.PipeClient.pas 中的管道名称:

const
  PIPE_NAME = '\\.\pipe\MyApp_MCP_Request';

配置

编辑 Examples/DelphiMCPserver/settings.ini

[Server]
Port=3001
Host=localhost
Name=delphi-auto
Version=2.1.0
Endpoint=/mcp

[CORS]
Enabled=1
AllowedOrigins=http://localhost,http://127.0.0.1,https://localhost,https://127.0.0.1

示例

DelphiMCPserver

完整的 MCP 桥接示例,适用于 Delphi 应用程序。

特性

  • 在端口 3001 上的 HTTP 服务器
  • 命名管道通信(可配置)
  • 注册了所有 9 个内置工具
  • 启用了调试捕获

位置Examples/DelphiMCPserver/

注意:示例使用 \\.\pipe\YourApp_MCP_Request 作为默认管道名称。根据你的应用程序修改此名称。

文档

核心文档

研究文档