掌上电脑mcp
PDAL MCP是一个开源服务器,它公开了常见的 掌上电脑 命令行实用程序通过 模型上下文协议(MCP).PDAL是一个C++库,用于读取和处理激光雷达等点云数据,类似于光栅和矢量数据的GDAL【213350811818443†L146-L162】。MCP规范了AI代理如何通过JSON-RPC调用外部工具,强调安全、可发现和上下文保持操作【922541277255947†L51-L66】【922541277 255947?L132-L152】。该项目将PDAL的CLI命令打包为MCP工具,以便AI助手可以在受控环境中检查、翻译和处理点云数据。
特性
- 为关键的PDAL命令提供MCP工具定义:
info,translate,pipeline,merge,split,tile和tindex. - 通过JSON模式验证输入,并防止在配置的工作目录之外进行访问。
- 生成结构化输出(JSON或文件资源),便于AI代理使用。
- 可通过JSON文件和环境变量进行配置。
- 设计为开源和可扩展的——贡献者可以添加更多的PDAL工具。
有关每个工具的架构细节和JSON模式,请参阅 pdal_mcpdesign.md.
安装
先决条件
- Python 3.9+.
- 掌上电脑 安装在主机系统上(确保
pdalCLI可在您的PATH).您可以通过conda安装PDAL:
conda install -c conda-forge pdal- 克隆此存储库:
git clone https://github.com/JordanGunn/pdal-mcp.git
cd pdal-mcp安装依赖项
- 推荐:使用
uv管理本地Python环境并安装MCP Python SDK和PDAL绑定:
uv init # initialise a uv project (skip if already in a uv-managed directory)
uv add "mcp[cli]" pdal- 或者,通过pip安装:
python3 -m pip install "mcp[cli]" pdal运行服务器
本项目使用MCP Python SDK FastMCP 服务器。创建配置文件(见下文)后,您可以使用以下命令运行服务器 uv:
# Copy the example config and edit as needed
cp config.example.json config.json
# Point the environment variable to your config
export PDAL_MCP_CONFIG=$(pwd)/config.json
# Start the MCP server in development mode with hot‑reloading
uv run mcp dev src/server.py
# Start the MCP server via stdio (useful for production)
uv run mcp src/server.py stdio注: 一些MCP服务器通过Node分布(npx)或生锈(uvx),但该项目使用官方Python SDK和uv用于依赖性管理和执行。
配置
服务器从JSON文件读取配置。在中设置文件的路径 PDAL_MCP_CONFIG 启动服务器之前的环境变量。典型的配置如下:
{
"workdir": "/srv/pdal_mcp/workdir",
"allowedCommands": ["info","translate","pipeline","merge","split","tile","tindex"],
"maxTimeout": 60000,
"port": 3001
}- 工作目录 –存储输入和输出文件的目录。服务器拒绝此文件夹之外的路径。
- 允许的命令 –服务器上启用的PDAL命令列表。
- 最大超时 –任何命令的最大运行时间(ms)。
- 端口 –通过uv启动服务器时要绑定的端口。
MCP工具
| 工具名称 | 描述 |
|---|---|
| pdal_info | 包装材料 pdal info 显示数据集信息,如范围、点数、坐标系、统计数据和元数据【872216820604572†L304-L341】。 |
| pdal翻译 | 包装材料 pdal translate 转换点云文件或运行简单的过滤管道;支持JSON管道文件或 --filter 论据【962225138174121†L308-L356】。 |
| pdal管道 | 使用JSON执行完整的PDAL管道 pdal pipeline,具有流媒体和元数据输出选项【556921230097715†L305-L327】【556922130097715?L330-L390】。 |
| pdal_merge | 将多个输入文件合并为一个,无需过滤或重新投影【301070071328877†L307-L314】。 |
| pdal分割 | 根据图块大小或点容量将点云文件拆分为多个输出;输出使用模板【697690024905749†L305-L331】【697690029905749?L339-L341】命名。 |
| pdal瓷砖 | 在处理可选缓冲区和输出空间引用的同时,从输入文件生成方形图块;输出文件名必须包含 # 占位符【64426824861177†L304-L345】【644268424861177 \\8224》L346-L350】。 |
| pdal-tindex | 为PDAL可读点云文件创建或合并GDAL样式的图块索引【79559144191429†L308-L354】【79559154191429„L375-L378】。 |
有关每个工具的输入和输出JSON模式,请参阅设计文档。
示例用法
在端口上启动服务器后 3001,您可以通过JSON-RPC调用MCP方法:
列出可用工具:
curl -X POST http://localhost:3001/mcp/tools/list \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'呼叫 pdal_info 在工作目录中的文件上:
curl -X POST http://localhost:3001/mcp/calls \
-H "Content-Type: application/json" \
-d @- <<'EOF'
{
"jsonrpc": "2.0",
"method": "pdal_info",
"params": {
"inputFile": "data.las",
"all": true
},
"id": 1
}
EOF贡献
C欢迎投稿!请看 贡献.md 有关如何报告问题的指导方针,请向此项目提出新功能并添加新的PDAL工具。
行为准则
该项目遵循 行为准则。通过参与,您将遵守此准则。
许可证
该项目根据 MIT许可证.
