地理数据处理 MCP Server
项目简介
地理数据处理 MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,提供了一系列地理数据处理工具的接口。该服务器允许大型语言模型(如 Claude)通过标准化的接口访问和调用各种地理数据处理功能,包括 WhiteBox 和 SAGA GIS 提供的地理数据处理服务。
通过这个 MCP Server,用户可以:
- 查询可用的地理数据处理工具
- 获取工具的详细信息和参数要求
- 上传地理数据文件
- 调用地理数据处理工具进行数据分析和处理
安装和配置
前提条件
- Python 3.8 或更高版本
- 安装了 MCP SDK (
mcp-server) - 网络连接(用于访问地理数据处理服务 API)
安装步骤
-
克隆本仓库:
git clone https://github.com/your-username/geo-data-processor-mcp.git cd geo-data-processor-mcp -
安装依赖:
pip install -r requirements.txt -
配置环境变量(可选):
export GEO_API_TOKEN="your_api_token" # 如果不设置,将使用默认令牌
启动服务器
python server/geoDataProcessor.py
服务器将通过标准输入/输出(stdio)与 MCP 客户端通信。
配置 Claude for Desktop
要在 Claude for Desktop 中使用此 MCP Server,请按照以下步骤操作:
-
打开 Claude for Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%AppData%\\Claude\\claude_desktop_config.json
- macOS:
-
添加服务器配置:
{ "mcpServers": { "geoDataProcessor": { "command": "python", "args": [ "/absolute/path/to/server/geoDataProcessor.py" ] } } } -
重启 Claude for Desktop
可用工具
1. list_all_tools
查询工具库中所有工具的缩略信息,一次性返回所有工具。
参数:无
返回:包含工具 ID、名称和描述的 JSON 字符串
示例:
result = await list_all_tools()
2. search_tools_by_keyword
根据关键词获取工具,一次性返回所有符合条件的工具。
参数:
keyword:搜索关键词(字符串)
返回:包含工具详细信息的 JSON 字符串
示例:
result = await search_tools_by_keyword("vector")
3. get_tool_details
查询某个方法名称的详细信息。
参数:
name:方法名称(字符串)
返回:包含工具详细信息的 JSON 字符串
示例:
result = await get_tool_details("MergeVectors")
4. invoke_tool
调用地理数据处理方法。
参数:
tool_id:工具 ID(整数)params:工具参数(字典),格式为{"val0": value0, "val1": value1, ...}
返回:调用结果的 JSON 字符串
示例:
params = {
"val0": ["c55f39c3-23e4-4a80-aeee-f9fa2695f7a5", "c0ecc572-28f0-4b7e-b3b4-117ac76f320e"],
"val1": "result.shp"
}
result = await invoke_tool(285, params)
5. upload_file
将文件上传到数据中转服务器。
参数:
file_path:文件路径(字符串)
返回:上传成功后的文件 URL
示例:
file_url = await upload_file("/path/to/your/file.shp")
参数说明
invoke_tool 参数映射
调用 invoke_tool 时,参数的键名不是参数的实际名称,而是按照参数在工具定义中的顺序编号:
val0:第一个参数val1:第二个参数val2:第三个参数,以此类推
不同类型参数的处理方式:
-
文件输入类型参数:
- 需要先使用
upload_file工具上传文件,然后将返回的文件 ID 作为参数值 - 如果参数类型是单个文件,则传入文件 ID 字符串
- 如果参数类型是文件列表,则传入文件 ID 列表
- 需要先使用
-
文件输出类型参数:
- 只需传入输出文件名
-
布尔类型参数:
- 可以传入布尔值(
true/false)或字符串("true"/"false")
- 可以传入布尔值(
-
数值类型参数:
- 可以传入数值或字符串形式的数值
使用流程示例
以下是使用地理数据处理 MCP Server 的典型流程:
1. 查找可用工具
# 列出所有工具
tools_list = await list_all_tools()
print(tools_list)
# 或者搜索特定关键词的工具
vector_tools = await search_tools_by_keyword("vector")
print(vector_tools)
2. 获取工具详细信息
# 获取特定工具的详细信息
tool_details = await get_tool_details("MergeVectors")
print(tool_details)
3. 上传输入文件
# 上传需要处理的文件
file1_url = await upload_file("/path/to/vector1.shp")
file2_url = await upload_file("/path/to/vector2.shp")
# 从URL中提取文件ID
file1_id = file1_url.split('/')[-1]
file2_id = file2_url.split('/')[-1]
4. 调用工具处理数据
# 准备参数
params = {
"val0": [file1_id, file2_id], # 文件ID列表
"val1": "merged_result.shp" # 输出文件名
}
# 调用工具(假设MergeVectors的ID是285)
result = await invoke_tool(285, params)
print(result)
常见问题解答
Q: 如何知道工具需要哪些参数?
A: 使用 get_tool_details 函数获取工具的详细信息,包括参数列表和类型。返回的 params 字段包含每个参数的名称、类型、描述等信息。
Q: 调用工具后如何获取处理结果?
A: 调用 invoke_tool 后,返回的 JSON 中的 output 字段包含输出文件的信息,包括文件 ID。您可以使用这些 ID 下载或进一步处理结果文件。
Q: 支持哪些类型的地理数据?
A: 支持多种地理数据格式,包括但不限于:
- 矢量数据:Shapefile (.shp)
- 栅格数据:GeoTIFF (.tif, .tiff)
- LiDAR 点云数据:LAS/LAZ (.las, .laz, .zlidar)
- 表格数据:CSV (.csv)
贡献指南
我们欢迎对地理数据处理 MCP Server 的贡献!如果您想贡献代码、报告问题或提出建议,请遵循以下步骤:
- Fork 本仓库
- 创建您的特性分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开一个 Pull Request
许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
Recommend MCP Servers 💡
@mpeirone/zabbix-mcp-server
🔌 Complete MCP server for Zabbix integration - Connect AI assistants to Zabbix monitoring with 40+ tools for hosts, items, triggers, templates, problems, and more. Features read-only mode and comprehensive API coverage.
@heilgar/shadcn-ui-mcp-server
An MCP server for managing and installing Shadcn UI components and blocks
awslabs.nova-canvas-mcp-server
An MCP server that enables text-based and color-guided image generation using Amazon Nova Canvas, supporting customizable dimensions, quality, and multiple image outputs, with secure AWS authentication and workspace integration.
koido/extreme-p-mcp
An MCP server providing API access to extreme p-value calculation functions (z, t, F, chi-square, SAIGE) using R and Python.
seo-mcp
A free SEO tool MCP service based on Ahrefs data, providing backlink analysis, keyword research, and traffic estimation.
md-emoji-mcp
一个为Markdown技术文章添加表情符号的超便捷CLI小工具,支持本地和远程表情包加载。