一个正在开发中的用于在 Delphi 中构建 MCP(模型上下文协议)服务器的框架
✅ 版本 3.3.0 - 增强模态支持 现在支持通过空格键自动化模态窗口,并增强了焦点检测。详情见 CHANGELOG.md。
DelphiMCP 是一个正在开发中的通用 VCL 自动化框架,旨在通过模型上下文协议(MCP)实现基于 AI 的自动化。
这是什么:
当前状态:
此仓库包含三个主要组件:
AutomationTools(主产品)
Source/AutomationTools/MCPBridge
Source/MCPbridge/示例应用程序
Examples/SimpleVCLApp/RegisterCoreAutomationTools; StartAutomationServer;视觉检查(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.
必需的:
/mnt/w/Delphi-MCP-Server/无其他依赖项:
只需几步即可让 DelphiMCP 与 Claude Code 运行起来:
git clone https://github.com/JavierusTk/DelphiMCP.git
cd DelphiMCP
Packages/DelphiMCP.dpk 中的路径(参见 Packages/CONFIGURATION.md)# 在 Delphi IDE 中打开
Source/MCPserver/DelphiMCPserver.dproj
# 或从命令行编译
cd Source/MCPserver
dcc32 DelphiMCPserver.dpr
cd Binaries
./DelphiMCPserver.exe
从命令行添加 MCP 服务器:
# 将 DelphiMCP 服务器添加到 Claude Code 配置
claude mcp add delphi-mcp http://localhost:3001/mcp -t http
测试它:询问 Claude Code:“列出 delphi-mcp 的可用工具”
| 组件 | 版本 | 状态 | 备注 |
|---|---|---|---|
| Delphi | 12 (29.0) | ✅ 测试过 | RAD Studio 12 Athens |
| Delphi | 11 | ⚠️ 未测试 | 应该工作,但未验证 |
| Delphi | 10.4+ | ⚠️ 未测试 | 可能需要调整才能工作 |
| Windows | 10 (1809+) | ✅ 支持 | 需要 Windows 10 或更高版本 |
| Windows | 11 | ✅ 支持 | 完全测试过 |
| Windows Server | 2019+ | ✅ 支持 | 支持命名管道 |
| Indy | 10.6+ | ✅ 必需 | 随 Delphi 提供 |
| MCP 协议 | 2024-11-05 | ✅ 支持 | 最新规范 |
启动你的目标应用程序(启用 MCP 服务器)
运行桥接服务器:
cd Binaries
./DelphiMCPserver.exe
配置 Claude Code:
claude mcp add delphi-mcp http://localhost:3001/mcp -t http
测试连接:
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 服务器(嵌入目标应用)
依赖结构:
详见 Documentation/ARCHITECTURE.md 以了解详细架构。
在 Delphi IDE 中安装 DelphiMCP 包:
1. 在 Delphi 中打开 Packages/DelphiMCP.dpk
2. 构建包
3. 添加到项目所需包中
详见 Packages/README.md 以了解详细安装说明。
将 MCPautomationBridge 包添加到项目中:
项目 → 选项 → 包 → 运行时包
添加:MCPautomationBridge
或者将源目录添加到搜索路径:
$(DelphiMCP)\Source\MCPbridge\Core;$(DelphiMCP)\Source\MCPbridge\Tools
连接 Delphi 应用程序到 MCP 服务器的自动化桥接库。
核心组件(Source/MCPbridge/Core/):
内置工具(Source/MCPbridge/Tools/):
框架包括一个强大的调试输出捕获系统:
// 开始捕获所有进程的调试输出
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 以了解完整文档。
在 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.
在 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
完整的 MCP 桥接示例,适用于 Delphi 应用程序。
特性:
位置:Examples/DelphiMCPserver/
注意:示例使用 \\.\pipe\YourApp_MCP_Request 作为默认管道名称。根据你的应用程序修改此名称。