Delphi LSP MCP服务器
一种模型上下文协议(MCP)服务器,向AI助手和其他MCP客户端公开语言服务器协议(LSP)功能。支持Delphi的DelphiLSP和Free Pascal的Pascal。
项目信息
作者 Skybuck飞行\ 联系人: skybuck2000@hotmail.com\ 版本: 0.05
存储库: https://github.com/SkybuckFlying/Delphi-LSP-MCP-Server
规格:
- MCP规范(2025-11-25):https://modelcontextprotocol.io/specification/2025-11-25
- LSP规范3.17:https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/
概述
此服务器充当以下之间的桥梁:
- MCP客户端 (如Claude Desktop、Antigravity、Gemini CLI)-通过stdio通过JSON-RPC 2.0进行通信
- LSP服务器 (DelphiLSP.exe或pasls.exe)-Embarcadero或免费Pascal语言服务器
它允许AI助手对Delphi/Pascal源代码执行代码智能操作,包括:
- 转到定义
- 查找引用
- 悬停信息
- 代码补全
- 工作空间符号搜索
AI优化(新)
为了最大限度地提高此服务器与AI代理(如Gemini CLI或Claude Engineer)的效率,可以使用标准化的指导文件:
DelphiLSP.md
该文档为AI代理提供了特定的指令,以优先考虑语义工具(例如。, hover 和 goto_definition)超过标准的基于文本的搜索。
推荐设置: 将以下代码段添加到 GEMINI.md Delphi项目根目录中的文件,以确保LSP的最佳使用:
# Project Context
Refer to [DelphiLSP.md](./DelphiLSP.md) for instructions on using semantic tools for code analysis. This is essential for accurate type checking and navigation.需求
- Delphi 13(RAD Studio 13.0或更高版本)
- DelphiLSP.exe(RAD Studio附带)或pasls.exe(免费Pascal语言服务器)
- Windows操作系统
建筑
- 打开
DelphiLSPMCPServer.dpr在Delphi IDE中 - 构建项目(project→ 构建)
- 可执行文件将在项目目录中创建
或者使用命令行:
dcc64 DelphiLSPMCPServer.dpr用法
命令行选项
DelphiLSPMCPServer [options]
Options:
--lsp-path
Path to LSP server executable
(default: G:\Tools\PascalLanguageServer\git version 26 january 2026\pasls.exe)
--workspace
Static workspace root directory or file:// URI (Optional)
--log-level Log level: debug, info, warning, error (default: info)
--help Show help message动态工作空间配置(v0.05+)
从版本0.05开始,服务器是 环境感知它可以通过两种方式动态确定工作空间:
- 初始化嗅探:服务器拦截MCP
initialize请求并寻找rootUri或rootPath。它将自动定位AI客户端提供的文件夹。 - CWD默认值:如果没有通过命令行或协议提供工作区,则默认为其自己的当前工作目录。
这使得它非常适合与在不同项目之间切换的AI代理一起使用。
配置示例
反重力/Gemini CLI/代理设置
要将服务器与动态代理一起使用,可以省略 --workspace 参数,以便代理可以提供它:
{
"mcpServers": {
"delphi-lsp": {
"command": "C:\\Tools\\DelphiLSPMCPServer.exe",
"args": [
"--log-level", "info",
"--lsp-path", "G:\\Tools\\PascalLanguageServer\\git version 26 january 2026\\pasls.exe"
]
}
}
}克劳德桌面
添加到您的Claude Desktop MCP配置(claude_desktop_config.json):
{
"mcpServers": {
"delphi-lsp": {
"command": "C:\\Tools\\DelphiLSPMCPServer.exe",
"args": [
"--workspace", "C:\\MyDelphiProject",
"--log-level", "info"
]
}
}
}可用工具
delphi_goto_definition
在特定位置找到符号的定义。
参数:
uri(string):文件URI(例如。,file:///C:/path/to/file.pas)line(整数):从零开始的行号character(整数):从零开始的字符偏移
delphi_find_references
查找对符号的所有引用。
参数:
uri(string):文件URIline(整数):从零开始的行号character(整数):从零开始的字符偏移includeDeclaration(boolean,可选):在结果中包含声明(默认值:true)
德尔菲河
获取符号的悬停信息(文档、类型信息)。
delphi_完成
在特定位置获取代码完成建议。
delphi_工作空间_符号
在整个工作空间中搜索符号。
参数:
query(string):搜索查询字符串
建筑
┌─────────────────────┐
│ MCP Client │
│ (AI Assistant) │
└──────────┬──────────┘
│ JSON-RPC over stdio
▼
┌─────────────────────┐
│ Delphi LSP MCP │
│ Server (v0.05) │
│ ┌───────────────┐ │
│ │ MCP Server │ │
│ │ Component │ │
│ └───────┬───────┘ │
│ │ │
│ ┌───────▼───────┐ │
│ │ LSP Client │ │
│ │ Component │ │
│ └───────┬───────┘ │
└──────────┼──────────┘
│ LSP JSON-RPC over stdio
▼
┌─────────────────────┐
│ DelphiLSP.exe / │
│ pasls.exe │
│ (Language Server) │
└─────────────────────┘单元结构
| 单位 | 职责 |
|---|---|
Common.JsonRpc | JSON-RPC 2.0消息类型和解析 |
Common.Logging | 线程安全单例记录器 |
Common.Utils | (0.05新增) 集中式路径/URI转换工具 |
MCP.Protocol.Types | MCP协议类型定义 |
MCP.Server | MCP服务器核心:动态工作空间发现、工具路由 |
MCP.Tools.LSP | 将MCP桥接到LSP的工具实现 |
MCP.Transport.Stdio | 带Content-Length标头的MCP stdio传输 |
LSP.Client | LSP客户端:同步请求、文档同步 |
LSP.Protocol.Types | LSP协议类型定义 |
LSP.Transport.Process | LSP进程传输:子进程管理 |
版本历史记录
- 0.01 (2026年1月26日)-首次发布
- 0.02 (2026年2月2日)-协议合规性改进
- 0.04 (2026年4月27日)-改进了单元分离和架构
- 添加了LSP重试逻辑和自动打开文档 - 同时支持DelphiLSP和pasls
- 0.05 (2026年4月27日)——动态工作空间和稳定性
- 动态工作区发现:自动嗅探 rootUri 从初始化请求 - 环境稳定:修复了FPC环境变量继承问题 - 重构实用程序:集中URI/路径处理 Common.Utils - 自动项目搜索:自动查找 .dpr 或 .lpr 在工作区根目录中 - Delphi模式:部队 -Mdelphi 在Free Pascal中实现更好的语法解析 - AI指导:已添加 DelphiLSP.md 用于标准化的AI代理指令 - 扩展测试套件:已更新 SourceForAnalysis.dpr 具有接口、泛型和继承测试
许可证
这是一个示范项目。使用风险自负。
- 崩溃时自动重新启动LSP服务器
- 改进了超时处理
- 瞬态故障的重试逻辑
添加配置选项
- 项目文件支持
- 搜索路径配置
- 编译器设置
性能优化
- 连接池
- 响应缓存
- 异步操作
用于测试
单元测试
- JSON‑RPC解析
- 协议类型序列化
- 消息传输
集成测试
- 真实的Delphi项目
- 各种文件类型
- 边缘案例
