使用说明
Delphi LSP MCP服务器
一种模型上下文协议(MCP)服务器,向AI助手和其他MCP客户端公开语言服务器协议(LSP)功能。
同时支持:
- 德尔福Embarcadero(
DelphiLSP.exe) - 免费Pascal(
pasls.exe)
目标规格
- MCP规范: 2025-11-25
- LSP规范: 3.17
特性
- 主控程序↔ 使用JSON-RPC 2.0的LSP网桥
- 基于stdio的传输
- 动态工作空间发现
- 人工智能代理的语义代码智能
- Delphi和免费Pascal支持
- 调试器同步支持(
--wait) - 自动项目发现(
.dpr/.lpr) - LSP重试逻辑和自动打开文档
- 兼容:
- 克劳德桌面版
- Gemini CLI
- 反重力
- 其他MCP兼容客户端
支持的操作
- 转到定义
- 查找引用
- 悬停信息
- 代码补全
- 工作空间符号搜索
项目信息
| 项目 | 详细信息 |
|---|---|
| 作者 | Skybuck飞行 |
| 联系人 | skybuck2000@hotmail.com |
| 版本 | 0.08 |
| 存储库 | https://github.com/SkybuckFlying/Delphi-LSP-MCP-Server |
规格
-
MCP规范(2025-11-25)
https://modelcontextprotocol.io/specification/2025-11-25 -
语言服务器协议规范3.17
https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/
需求
- Windows操作系统
- Delphi 13(RAD Studio 13.0+)或免费Pascal
DelphiLSP.exe或pasls.exe
建筑
Delphi集成开发环境
- 打开
DelphiLSPMCPServer.dpr - 选择 项目→ Build
命令行
dcc64 DelphiLSPMCPServer.dpr
用法
命令行选项
DelphiLSPMCPServer [options]
Options:
--lsp-path <path> Path to LSP executable
--workspace <path> Workspace root or file:// URI
--log-level <level> debug, info, warning, error
--debug Enable verbose diagnostics
--wait Wait for debugger before startup
--help Show help
动态工作区发现
从v0.05开始,服务器可以自动确定活动工作区。
检测策略
-
主控程序
initialize请求- 读取
rootUri或rootPath
- 读取
-
当前工作目录回退
-
自动
.dpr/.lpr项目检测
这允许AI代理动态切换项目,而无需重新启动服务器配置。
AI优化
存储库包括:
DelphiLSP.md
此文件指示AI代理优先考虑语义工具,例如:
hovergoto_definition
而不是依赖于基于文本的搜索。
GEMINI.md推荐设置
# Project Context
Refer to DelphiLSP.md for semantic code analysis instructions.
Use LSP semantic tools instead of grep/text searching whenever possible.
配置示例
Gemini CLI/反重力
{
"mcpServers": {
"delphi-lsp": {
"command": "C:\\Tools\\DelphiLSPMCPServer.exe",
"args": [
"--log-level",
"info",
"--lsp-path",
"G:\\Tools\\PascalLanguageServer\\pasls.exe"
]
}
}
}
克劳德桌面版
{
"mcpServers": {
"delphi-lsp": {
"command": "C:\\Tools\\DelphiLSPMCPServer.exe",
"args": [
"--workspace",
"C:\\MyProject",
"--log-level",
"info"
]
}
}
}
可用工具
delphi_goto_definition
在特定位置找到符号的定义。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
uri |
string | 文件URI |
line |
integer | 从零开始的行号 |
character |
integer | 从零开始的字符偏移量 |
示例URI:
file:///C:/Projects/MyProject/MainUnit.pas
delphi_find_references
查找对符号的所有引用。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
uri |
string | 文件URI |
line |
integer | 从零开始的行号 |
character |
integer | 从零开始的字符偏移量 |
includeDeclaration |
boolean | 在结果中包含声明 |
delphi_hover
检索悬停信息,例如:
- 类型信息
- 符号文件
- 申报明细
参数
| 参数 | 类型 |
|---|---|
uri |
字符串 |
line |
整数 |
character |
整数 |
delphi_completion
检索代码完成建议。
参数
| 参数 | 类型 |
|---|---|
uri |
字符串 |
line |
整数 |
character |
整数 |
delphi_workspace_symbols
在整个工作空间中搜索符号。
参数
| 参数 | 类型 | 说明 |
|---|---|---|
query |
string | 符号搜索查询 |
调试支持
版本0.08引入了调试器同步支持。
特性
--wait启动模式- 使用Windows事件进行跨进程同步
- 自动调试器附加工作流
- 无阻塞
ReadLn - 等待状态下的心跳记录
- 一线调试支持
典型工作流程
- 使用以下命令启动测试运行器
--wait - 将调试器附加到服务器进程
- 设置断点
- 继续执行
- 测试自动开始
建筑
┌─────────────────────┐
│ MCP Client │
│ (AI Assistant) │
└──────────┬──────────┘
│ JSON-RPC over stdio
▼
┌─────────────────────┐
│ Delphi LSP MCP │
│ Server │
│ │
│ ┌───────────────┐ │
│ │ MCP Server │ │
│ └───────┬───────┘ │
│ │ │
│ ┌───────▼───────┐ │
│ │ LSP Client │ │
│ └───────┬───────┘ │
└──────────┼──────────┘
│ LSP JSON-RPC
▼
┌─────────────────────┐
│ DelphiLSP / pasls │
└─────────────────────┘
核心单元
| 单位 | 职责 |
|---|---|
Common.JsonRpc |
JSON-RPC解析和消息类型 |
Common.Logging |
线程安全单例记录器 |
Common.Utils |
URI/路径转换实用程序 |
MCP.Protocol.Types |
MCP协议类型定义 |
MCP.Server |
MCP路由和工作空间发现 |
MCP.Tools.LSP |
MCP→ LSP网桥实现 |
MCP.Transport.Stdio |
MCP标准传输 |
LSP.Client |
LSP请求处理和文档同步 |
LSP.Protocol.Types |
LSP协议定义 |
LSP.Transport.Process |
LSP子进程管理 |
测试
存储库包括:
TestAllTools.dpr
保险范围包括:
- MCP初始化
- 工具发现
- 悬停请求
- 定义查找
- 参考文献查询
- 完成
- 工作区符号搜索
- 错误处理
- 停机处理
运行测试
TestAllTools.exe
TestAllTools.exe --wait
TestAllTools.exe --help
已知问题
pasls限制
- 初始索引可能需要延迟
didOpen - 在非常大的项目上,悬停请求可能会超时
- 必须正确配置FPC安装路径
- 服务器/LSP位应匹配(建议,而非要求)
建议
- 匹配服务器和LSP位
- 在之后添加延迟
didOpen - 验证RTL/FPC配置
- 对瞬态故障使用重试逻辑
版本历史记录
版本历史记录
v0.08——调试同步
日期:2026年5月27日(Git提交与此工作匹配)
- 添加了命名的Windows事件同步
- 添加了调试器等待支持(
--wait) - 增加了一线调试工作流程
- 在等待期间添加心跳状态记录
- 移除封锁
ReadLn - 修复了双自由碰撞
HandleToolsList - 全部20项自动化测试通过
v0.07——调试基础设施准备
日期:2026年5月27日(文件系统)
- 添加了初步调试器等待脚手架
- 添加了早期心跳记录
- 添加了初始命名事件常量
- 改进了LSP启动竞争条件处理
- 改进了丢失LSP可执行文件的错误消息
- 为pasls悬停/定义失败添加了重试逻辑
v0.06--LSP稳定性和pasls兼容性
日期:2026年5月27日(文件系统)
- 改进了同步和排队LSP请求处理
- 添加了pasls特定的索引延迟处理
- 提高了工作空间嗅探的可靠性
- 添加了丢失或格式错误的回退
rootUri - 改进的
.dpr/.lpr检测启发式 - 修复了DelphiLSP的环境变量继承问题
- 添加了内部LSP健康检查ping
- 扩展的语义测试套件(泛型、接口、继承)
v0.05--动态工作空间和稳定性
日期:2026年4月27日(Git)
- 从MCP初始化请求中动态发现工作区
- 集中URI/路径处理
Common.Utils - 自动
.dpr/.lpr项目发现 - 被迫
-MdelphiFree Pascal的解析模式 - 添加
DelphiLSP.mdAI 指导 - 扩展语义分析测试覆盖范围
v0.04--体系结构改进
日期:2026年4月27日(Git)
- 主要架构重构
- 添加了LSP重试逻辑
- 添加了自动文档打开功能
- 改进了单元分离
- 添加了对DelphiLSP和pasls的支持
v0.03--测试更多功能
日期:2026年4月27日(文件系统)
(此版本不存在Git提交)
- 实验版
- 用于测试附加功能
- 这个版本不好,被跳过了。
v0.02——协议合规性
日期:2026年2月2日(Git)
- 改进了PasLS集成
- 修复了编码问题
- 改进了JSON-RPC合规性
- 稳定LSP功能(定义、悬停)
v0.01--初始版本
日期:2026年1月26日(Git)
- 初始MCP↔ LSP网桥实施
- 初始Delphi语义工具支持
路线图
短期
- LSP健康检查
- 更好的超时恢复
- 增强的诊断
- 自动LSP重启支持
中期
- 增量文档同步
- 项目配置支持
- 编译器/搜索路径配置
长期
- 异步操作
- 响应缓存
- 连接池
- 附加LSP功能:
- 重命名
- 代码操作
- 格式化
文档
附加文件:
DelphiLSP.md/docs/architecture.md/docs/testing.md/docs/debugging.md/docs/version-history.md
许可证
这是一个示范项目。
使用风险自负。