Daofy — Multi-Language MCP Server for Delphi & Lazarus/FPC
一个为 AI 助手提供 Delphi 和 Lazarus/Free Pascal 工程编译能力和知识库查询功能的 MCP Server。如果您觉得有用,请不要吝啬您的 Star! ⭐
Daofy(道飞)——为创意插上翅膀。
项目简介
Daofy 是一个基于 Model Context Protocol (MCP) 的 MCP Server,它允许 AI 助手直接编译 Delphi 和 Lazarus/Free Pascal 项目并查询知识库。
通过这个工具,您可以在与 AI 助手的对话中直接编译工程、查询 API 文档、搜索代码示例,无需手动切换到 IDE 或命令行。
主要优势:
- 多语言支持: 同时支持 Embarcadero Delphi 和 Lazarus/Free Pascal 工具链
- 插件架构: 语言插件动态注册,仅安装对应开发工具后自动启用
- Delphi 自动化测试: 内置 GUI/Console 自动化测试框架,AI 驱动脚本操控 Delphi 程序
- 无缝集成到 AI 助手工作流中
- 自动检测和配置编译器
- 内置源码知识库,支持语义搜索
- 项目级知识库,自动追踪三方库和项目源码
- 通用文档知识库支持 Delphi CHM 和 FPC 文档全文搜索
- 支持所有主流 AI 助手平台
- 完整的编译事件支持
- 详细的错误诊断和日志
功能特性
编译功能
- 工程整体编译: 支持编译完整的 Delphi 工程(.dproj/.dpr),生成可执行文件或动态链接库
- MSBuild 编译: 优先使用 MSBuild 编译,自动处理依赖关系和编译事件
- 单文件编译: 支持编译单个 Delphi 单元文件(.pas),进行语法检查
- 自动检测编译器: 自动从注册表检测已安装的 Delphi 编译器,无需手动配置
- 智能库路径解析: 自动分析项目依赖,智能选择需要的第三方库路径,避免命令行过长
- 编译事件支持: 支持 PreBuildEvent、PostBuildEvent、PreLinkEvent,包含完整的参数替换
- 命令行参数生成: 支持生成 Delphi 编译器命令行参数,便于调试和预览
- 编译器配置管理: 支持配置和管理多个 Delphi 编译器版本
- 环境检查: 提供编译器环境状态检查功能
- 丰富的编译选项: 支持条件编译符号、搜索路径、优化选项、调试信息、警告控制等
知识库功能
- Delphi 源码知识库: 内置 Delphi 官方源码知识库,支持类、函数搜索和语义搜索
- 项目知识库: 为每个项目构建独立知识库,自动追踪三方库和项目源码
- 三方库知识库: 从 .dproj 文件自动提取三方库路径并构建知识库
- 增量更新: 自动检测源码变动,增量更新项目知识库
- 示例知识库: 自动发现 Delphi 官方 Demo/Samples 和三方库 Demos/Tests,全文搜索示例代码
- 通用文档知识库: 支持 txt/md/html/docx/doc/pdf/epub/hlp/chm 和网页文档的扫描与搜索(基于 ZVec 向量存储 + FTS 全文索引)
- 必需依赖:
html2text,requests(已在 requirements.txt) - 可选依赖:
python-docx(Word .docx 支持),antiword/catdoc(旧版 Word .doc 支持),PyMuPDF(PDF 支持,推荐) 或pdfplumber(PDF 支持,备选),beautifulsoup4(EPUB 支持)
- 必需依赖:
- 智能去重: 基于完整路径去重,正确处理同名不同目录的文件
构建 Delphi 帮助文档知识库
用户首次使用或需要重建 Delphi API 文档时,调用 delphi_kb 工具构建文档知识库:
delphi_kb(
action="build",
kb_type="document",
async_mode=true
)
说明:
- 不传 directory 时自动检测最新安装的 Delphi 帮助目录(通过注册表或默认路径)
- 也可手动指定:
directory="C:\Program Files (x86)\Embarcadero\Studio\<版本>\Help\Doc"- 版本对照:37.0=Delphi 13, 23.0=Delphi 12, 22.0=Delphi 11, 21.0=Delphi 10.4, 20.0=Delphi 10.3
extensions=[".chm"]:只扫描 CHM 文件,工具会自动解压并导入 HTML 文档async_mode=true:异步执行(耗时数分钟),提交后返回 task_id,通过async_task(action=status, task_id=...)轮询进度- 需要系统安装 7-Zip(可放在
tools/7z/目录下免安装)
构建示例知识库
构建 Delphi 官方 Demos/Samples + 三方库 Demos/Tests 的全文搜索知识库:
delphi_kb(
action="build",
kb_type="example"
)
搜索示例代码:
delphi_kb(
query="TThread.Queue",
kb_type="example"
)
示例知识库仅全文搜索,不解析结构化符号(类/函数),适合快速查找示例用法。
使用 kb_type="all" 时默认不搜索示例知识库,需显式指定 kb_type="example"。
编码规范功能
- 编码规则查询: 获取 Delphi 源码编码规则,供 AI 助手用于代码审核和生成
- 默认规则支持: 内置默认编码规则文件,包含命名规则、格式化规则、修改规则和审核规则
- 自定义规则支持: 支持项目级别的自定义编码规则,优先于默认规则
- 规则优先级: 项目自定义规则 > 默认规则
自动化测试功能
Daofy 内置 Delphi GUI/Console 自动化测试框架,支持 AI 驱动的 UI 交互测试:
- 命名管道 GUI 自动化: 在 Delphi 程序中接入
DaofyAutomation单元,AI 通过automate_delphi工具发送脚本命令操控界面(点击/输入/截图/断言) - 控制台交互测试: 无需改造 Delphi 程序,通过 stdin/stdout 交互测试控制台应用
- 脚本驱动: JSON 格式测试脚本,支持条件等待(
waitfor)、RTTI 属性读写(rget/rset)、截图比对 - 进程复用:
keep_alive模式下进程常驻,避免重复启动开销 - 报告与修复闭环: 失败自动定位到失败步骤,生成修复建议
📖 启用指南: 如何在自己的 Delphi 项目中接入自动化测试,见
docs/automate_test_guide.md的「启用指南」章节。
MCP 工具列表
| 工具名称 | 功能描述 |
|---|---|
| Delphi 工具 | |
delphi_project |
Delphi 项目全生命周期管理:编译(compile)/配置(info/set/create)/审计(audit/ast/runtime) |
delphi_kb |
搜索代码/类/函数/文档/示例代码,查看统计或构建知识库 |
delphi_file |
Delphi 文件专用操作:读/写(edits批量修改)/格式化/备份管理(编码检测+自动备份+DFM转换) |
manage_component |
DFM 组件增/删/改/生成 + PAS 自动同步 |
check_environment |
诊断编译环境、检测编译器、安装 pasfmt |
package |
组件包管理:安装(action=install) / 列出已安装(action=list) |
get_coding_rules |
获取编码规范,支持按语言(Delphi/Lazarus)和章节分段获取 |
automate_delphi |
Delphi GUI/Console 自动化测试 — 脚本驱动(click/type/waitfor/rget/capture),支持 GUI 命名管道和控制台两种模式,keep_alive 进程复用 |
delphi_rtti |
Delphi RTTI 桥接 — 通过 RTTI 发现和调用 Delphi 应用的运行时能力(三步法:discover/call/guide) |
| Lazarus/Free Pascal 工具 | |
lazarus_compile |
Lazarus/FPC 项目编译 (lazbuild),支持 .lpi/.lpr 项目文件 |
lazarus_project |
Lazarus 项目信息查询 — 解析 .lpi 文件,获取项目名称/源文件/编译器选项 |
lazarus_kb |
Lazarus/FPC 源码知识库 — 索引和搜索 LCL/FPC RTL 源码(独立 KB) |
lazarus_file |
Lazarus/FPC 文件读写 — read/write(edits批量修改,自动备份)/backup |
| 通用工具 | |
code_hosting |
统一操作 Gitea/GitHub/GitLab/Gitee/GitCode 平台 + Git 本地操作 |
async_task |
管理后台任务(构建知识库等) |
daofy_update |
检查 Daofy 版本更新、执行 git pull 更新(check/update/version),后台异步执行 |
tool_help |
获取任意工具的完整帮助文档(按需,含参数说明/示例/触发词) |
generate_copyright |
软著文档生成:源代码/说明书/摘要自动生成(PDF 浏览器渲染+自动校验) |
experience |
经验记忆管理:保存/搜索/更新/合并/删除 AI 成功解决问题的做法;定期清理低价值条目(prune);模型加载后重建缺失向量(rebuild_embedding) |
ocr |
图像分析:文字识别(recognize)/文本框(detect)/截图比对(diff)/颜色分析(color)/图标匹配(match) |
系统要求
- Python 3.10-3.14
- Delphi: Delphi 编译器(dcc32.exe 或 dcc64.exe) — 编译 Delphi 项目
- Lazarus/FPC: Lazarus IDE (lazbuild.exe) — 编译 Lazarus 项目(可选)
- Windows 操作系统
- Git
- 7-Zip (用于解压 CHM 帮助文件,可选)
编译器自动检测(PATH / 注册表 / 常见安装目录),无需手动配置。仅安装对应开发工具后,相关插件自动启用。
知识库存储位置
所有知识库数据存储在项目根目录的 data/ 文件夹下:
| 知识库类型 | 存储路径 | 说明 |
|---|---|---|
| Delphi 源码知识库 | data/delphi-knowledge-base/ |
Delphi 官方源码 (RTL/VCL/FMX 等) |
| Lazarus/FPC 源码知识库 | data/lazarus-knowledge-base/ |
Lazarus LCL / FPC RTL 源码(独立索引) |
| 第三方库知识库 | data/thirdparty-knowledge-base/ |
第三方组件库源码 |
| 通用文档知识库 | data/document-knowledge-base/ |
Delphi CHM 帮助文档 + 通用文档 |
| 项目知识库 | <项目目录>/.delphi-kb/ |
项目级知识库,存放在项目目录下 |
| 示例知识库 | data/example-knowledge-base/ |
Delphi 官方 Demos + 三方库 Demos/Tests,全文搜索 |
| 经验知识库 | data/experience-knowledge-base/ |
AI 经验记忆(experiences.sqlite) |
每个知识库目录包含:
*.zvec/- ZVec 向量数据库目录(文档/示例/项目/三方库知识库)experiences.sqlite- 经验记忆数据库(仅经验知识库保留 SQLite)config.json- 知识库配置文件
说明:除经验知识库外,所有知识库已从 SQLite 迁移到 ZVec 向量引擎。文档知识库不再使用 SQLite FTS5,改用 ZVec 全文索引。
知识库配置说明
每个知识库通过 config.json 文件进行配置,支持自定义数据库、源码路径、构建参数等。
| 知识库类型 | 配置位置 |
|---|---|
| Delphi 源码 | data/delphi-knowledge-base/config.json |
| 第三方库 | data/thirdparty-knowledge-base/config.json |
| 通用文档 | data/document-knowledge-base/config.json |
| 项目级 | <项目目录>/.delphi-kb/config.json |
| 示例库 | data/example-knowledge-base/(纯 SQLite,无 config.json) |
| 经验库 | data/experience-knowledge-base/(纯 SQLite,无 config.json) |
配置文件在首次构建时自动生成,通常无需手动修改。
安装
方式一:pip 安装(推荐)
pip install daofy-for-delphi
安装完成后直接进入 → 配置 AI 助手 步骤即可。
国内用户可使用镜像源加速:
pip install daofy-for-delphi -i https://pypi.tuna.tsinghua.edu.cn/simple
方式二:源码安装
AI 助手自动安装提示词
请按以下步骤安装 Daofy:
[] 检查并安装 Git/Python 3.10-3.14/7-Zip
[] 安装 https://github.com/chinawsb/daofy.git(国内用户可用镜像: https://gitee.com/zuoyouruanjian/daofy.git)
[] 安装完成后验证结果并帮我配置当前客户端
手动安装步骤
1. 克隆或下载项目
git clone https://github.com/chinawsb/daofy.git
# 国内用户可用 Gitee 镜像加速:
# git clone https://gitee.com/zuoyouruanjian/daofy.git
cd daofy
2. 创建虚拟环境
python -m venv venv
3. 激活虚拟环境
Windows:
venv\Scripts\activate
Linux/macOS:
source venv/bin/activate
4. 安装依赖 (使用国内镜像源加速)
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
可选国内镜像源:
- 清华大学: https://pypi.tuna.tsinghua.edu.cn/simple
- 阿里云: https://mirrors.aliyun.com/pypi/simple/
- 中科大: https://pypi.mirrors.ustc.edu.cn/simple/
配置 AI 助手
自动检测 Delphi 编译器
首次使用时,MCP Server 会自动从 Windows 注册表检测已安装的 Delphi 编译器,无需手动配置。
自动检测支持的 Delphi 版本:
- Delphi 13 Florence (37.0)
- Delphi 12 Athens (23.0)
- Delphi 11 Alexandria (22.0)
- Delphi 10.4 Sydney (21.0)
- Delphi 10.3 Rio (20.0)
- Delphi 10.2 Tokyo (19.0)
- Delphi 10.1 Berlin (18.0)
- Delphi 10 Seattle (17.0)
- Delphi XE8 (16.0)
- Delphi XE7 (15.0)
- Delphi XE6 (14.0)
- Delphi XE5 (12.0)
- Delphi XE4 (11.0)
- Delphi XE3 (10.0)
- Delphi XE2 (9.0)
- Delphi XE (8.0)
- Delphi 2010 (7.0)
- Delphi 2009 (6.0)
- Delphi 2007 (5.0)
- Delphi 2006 (4.0)
- Delphi 2005 (3.0)
手动配置编译器 (可选)
如果需要手动配置或添加自定义编译器,可以直接编辑 config/compilers.json 文件,或使用 check_environment 工具的 detect action 重新检测。
通用配置(pip 安装)
如果通过 pip install daofy-for-delphi 安装,配置最简:
{
"mcpServers": {
"daofy": {
"command": "daofy",
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONIOENCODING": "utf-8",
"PYTHONUTF8": "1"
}
}
}
}
源码安装配置
以下配置适用于通过 git clone 源码安装的用户,请将路径替换为实际安装路径。
Claude Desktop
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"daofy": {
"command": "python",
"args": ["C:\\path\\to\\daofy\\src\\server.py"],
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONIOENCODING": "utf-8",
"PYTHONUTF8": "1"
}
}
}
}
Trae
Windows: C:\Users\<用户名>\.trae-cn\mcp_config.json
{
"mcpServers": {
"daofy": {
"command": "F:\\ProPlus\\DelphiPlus\\Experts\\DelphiMCPServer\\delphi-complier-mcp-server\\venv\\Scripts\\python.exe",
"args": [
"F:\\ProPlus\\DelphiPlus\\Experts\\DelphiMCPServer\\delphi-complier-mcp-server\\src\\server.py"
],
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONIOENCODING": "utf-8",
"PYTHONUTF8": "1"
}
}
}
}
注意: 请将路径修改为您的实际安装路径。
CodeArts Agent
Windows: ~/.codeartsdoer/mcp/mcp_settings.json
{
"mcpServers": {
"daofy": {
"command": "python",
"args": ["src\\server.py"],
"cwd": "C:\\path\\to\\daofy",
"env": {
"PYTHONUNBUFFERED": "1",
"PYTHONIOENCODING": "utf-8",
"PYTHONUTF8": "1"
}
}
}
}
使用方法
知识库统计
| 知识库 | 文件数 | 类数量 | 数据库大小 |
|---|---|---|---|
| Delphi 源码 | 2,798 | 163,737 | 260 MB |
| 三方库 | 1,800 | 5,724 | 27 MB |
| 通用文档 | 160,328 | - | 1,306 MB |
故障排除
1. 编译器未找到
解决方案:
- 检查
config/compilers.json文件中的编译器路径是否正确 - 使用
check_environment工具action=detect重新检测编译器
2. MCP Server 无法启动
解决方案:
- 检查 Python 环境是否正确配置
- 检查依赖是否已安装:
pip install -r requirements.txt - 检查 MCP 库版本:
pip show mcp
3. 知识库搜索无结果
解决方案:
- 确保已构建知识库: 使用
delphi_kb工具的 action=build 构建 - 检查知识库目录是否存在
许可证
MIT License
Copyright (c) 2026 吉林省左右软件开发有限公司 Copyright (c) 2026 Equilibrium Software Development Co., Ltd, Jilin
详见 LICENSE 文件。
版本历史
v2026.07.18 (最新)
- 版本发布: 全量同步 Lazarus 插件支持、多语言编码规则、插件可用性检测
v2026.07.17
- Lazarus/Free Pascal 插件支持: 新增 4 个 Lazarus 专用工具 —
lazarus_compile(lazbuild编译)、lazarus_project(项目信息查询)、lazarus_kb(FPC/LCL 源码知识库)、lazarus_file(文件读写与备份) - 多语言编码规则:
coding-rules/拆分为delphi/、lazarus/、shared/三层;get_coding_rules新增language参数(支持"delphi"和"lazarus") - 插件可用性检测: 插件启动时检查开发工具是否安装,不安装则不注册对应工具,避免暴露不可用的 MCP 工具
- FPC 错误解析:
OutputParser新增 FPC 格式支持(File(13,3) Fatal: (2003) message) - uses 排序修复: 改为按 namespace group 插入,不重排已有单元,避免
Winapi.Windows与Vcl.Graphics相对顺序改变导致类型解析错误
v2026.07.05
- 文档全量同步: 全部 docs 与实现对齐——
project()→delphi_project()、ZVec 存储结构、kb_type 补全、section 索引扩展、tutorial 同步修复 - CHANGELOG 补全: v2026.06.22 遗漏的 Added/Fixed/Removed 条目已补录
v2026.06.22
- 工具名重命名:
project→delphi_project,防止非 Delphi 用户误触 delphi_rtti工具: Delphi RTTI 桥接 — 通过 Enhanced RTTI 发现和调用 Delphi 应用的 published 方法(三步法:guide/discover/call)generate_copyright工具: 软著文档自动生成(源代码/说明书/摘要,PDF 浏览器渲染+自动校验)daofy_update工具: Daofy 自身版本检查和更新管理(check/update/version)- 存储引擎迁移: 文档/示例/项目/三方库知识库从 SQLite FTS5 迁移至 ZVec 全文索引
- HTML 解析优化: 移除 BeautifulSoup 依赖,改用 html2text 内置过滤;构建时间 -41%
- 扫描引擎重构:
scan_directory改为生产者-消费者模式,内存峰值从天降至 KB 级 DaofyAutomation.RttiDiscovery.pas: 新增 RTTI 能力发现单元,TRttiDiscoverer类将 Delphi 类型映射为 JSON SchemaDaofyAutomation.Base.pas/Vcl.DaofyAutomation.pas: 新增rtti_discover命令路由和 VCL 端GetRttiClasses重写src/services/rtti_bridge.py: 新增 RTTI 桥接服务(连接管理/5分钟缓存/discover/call)src/tools/delphi_rtti.py: 新增 MCP 工具 handler(action=guide/discover/call).opencode/skills/delphi-rtti-bridge/SKILL.md: 新增 AI Agent 技能文件(含 YAML frontmatter + 渐进式 L3 文档)scripts/build-skills.py: 技能多平台分发脚本(自动分发到 .claude/ .cursor/ .windsurfrules)tests/test_rtti_bridge.py/tests/test_delphi_rtti.py: 38 个测试用例覆盖桥接服务 + 工具 handler- DaofyAutomation 三层架构拆分: tools/auto/ 拆分为 Base/VCL/FMX 三层,Overlapped I/O 管道,扩展命令集(move/drag/key/waitfor/rcall 等)
automate_delphi新增 Console 模式: 支持 subprocess stdin/stdout 交互,自动 PE 头检测 GUI vs Consolefile_tool路径白名单校验 + 脏标记系统:_validate_path()安全校验,写后标记脏防止行号错位CODING_RULES.mdc规则重构: 全面重写 delphi_file 写入规则、紧凑输出格式、脏标记保护- 编译验证: DCC 0 错误通过,Python import 无报错
v2026.06.08.1
delphi_file全操作 RWLock 防并发文件损坏:read/write/format/backup/uses 全部引入多读单写锁,并发写入返回明确错误,引导合并到一次 write(edits=[...])tools/7z/补齐 7z.dll,release 包开箱可用tool_docs.py约束强化:统一写入参数为 edits,并新增并行写入禁令(后续版本推荐replace/insert/delete结构化入口).gitignore排除 dot-prefixed 目录,清理 AI 工作目录追踪
v2026.06.03
delphi_file写入统一为write(edits=[...]):一次传入多个 edit,内部按start_line升序排列,内存中累积偏移量后一次性写出compilers.json路径自愈:检测到不在src/config/时自动回退到项目根config/,避免 MCP 启动时因路径差异直接报错- 18 处
except Exception: pass添加logger.debug异常日志,便于调试时定位失败原因 search_knowledge重构:597→37 行,拆 16 个模块级子函数,行为完全等价- 全量测试 727 passed
v2026.06.01
delphi_file部分写入行号修正:0-indexed 文档纠偏,写入后返回偏移量+后续行号调整公式delphi_file(action="uses")同步返回偏移量信息AGENTS.md当时新增部分写入规则章节;后续版本已统一为 1-indexed inclusive 行号- 全量测试 684 passed, 6 skipped
v2026.05.14
- 新增
manage_component工具:DFM 组件增/删/改/生成 + PAS 自动同步(替代原generate_component_dfm) delphi_file重命名+增强:DFM 二进制自动转换、备份管理、搜索定位(原名file_tool,旧名仍兼容)get_coding_rules增强:支持按章节分段获取,节省 token- 新增
code_hosting工具:统一 Gitea/GitHub/GitLab 操作 - 工作流从 6 步扩展为 7 步(①环境检查→②查KB→③写代码→④格式化→⑤编译→⑥审计→⑦清理)
完整版本历史详见 CHANGELOG.md
贡献
欢迎提交 Issue 和 Pull Request!
赞助
如果您觉得 Daofy for Delphi 对您有帮助,欢迎通过以下方式赞助支持我们。 您的支持让项目走得更远!❤️
支付宝
账号: [email protected](姓名:管耸寰,请标明QQ号)
微信
账号: wangshengbo(发送红包或转账)
直接群支付,或给群主发红包
QQ官方群: 250530692
银行卡
| 银行 | 户名 | 账号 | 开户行 |
|---|---|---|---|
| 光大银行 | 王胜波 | 6226 6208 0391 5552 | 光大银行长春人民大街支行 |
| 建设银行 | 管耸寰 | 4367 4209 4324 0179 731 | 建设银行长春团风储蓄所 |
联系方式
如有问题或建议,请提交 Issue。
No comments yet
Be the first to share your take.