Rasdaman MCP服务器
该工具使用户能够在自然语言环境中与rasdaman进行交互。 通过MCP协议将rasdaman功能作为工具公开,LLM可以查询数据库以回答以下问题:
- “有哪些数据立方体可用?”
- “‘Sentinel2_10m’的覆盖范围有多大?”
- “创建2025年6月12日的NDVI图像。”
MCP服务器将这些工具调用转换为rasdaman可以理解的实际WCS/WCPS查询,然后将结果返回给LLM。
安装
pip install rasdaman-mcp用法
首先,需要通过环境变量配置从MCP服务器到rasdaman的连接:
RASDAMAN_URL:rasdaman服务器的URLRASDAMAN_USERNAME:身份验证用户名RASDAMAN_PASSWORD:身份验证密码
或命令行参数 rasdaman-mcp 工具:
--rasdaman-url:rasdaman服务器的URL(默认RASDAMAN_URLenv变量或http://localhost:8080/rasdaman/ows).--username:身份验证用户名(默认RASDAMAN_USERNAMEenv变量或rasguest).--password:设置身份验证密码(默认值RASDAMAN_PASSWORDenv变量或rasguest).
然后,MCP准备好以两种模式之一与AI代理工具一起使用: stdio (默认)或 http.
stdio 模式
用于与接管管理服务器进程并通过标准输入/输出与之通信的客户端直接集成。 通常,在您的AI工具中,您需要指定要运行的命令 rasdaman-mcp:
rasdaman-mcp --username rasguest --password rasguest --rasdaman-url "..."在gemini cli中启用它的示例:
gemini mcp add rasdaman-mcp "rasdaman-mcp --username rasguest --password rasguest"优点:
- 简单:无需管理单独的服务器进程或端口。
- 无缝集成:工具在客户端环境中透明地提供给LLM。
http 模式
此模式启动在指定主机/端口上侦听的独立Web服务器,例如:
rasdaman-mcp --transport http --host 127.0.0.1 --port 8000 --rasdaman-url "..."要在AI代理中配置的MCP服务器URL为 http://127.0.0.1:8000/mcp 与运输 streamable-http. 例如,对于Mistral Vibe,用这样的部分扩展config.toml:
[[mcp_servers]]
name = "rasdaman-mcp"
transport = "streamable-http"
url = "http://127.0.0.1:8000/mcp/"优点:
- 可扩展性:MCP服务器可以容器化(例如,使用Docker)并作为单独的微服务部署。
- 解耦:任何可以说HTTP的客户端(例如。,
curlPython脚本、web应用程序、其他LLM客户端)可以与这些工具交互。 - 测试:允许直接进行API测试和调试,独立于LLM客户端。
AI代理
一旦AI代理配置了访问权限 rasdaman-mcp,它能够使用多种工具:
- 列出已配置rasdaman中的覆盖范围
- 获取特定报道的详细信息
- 基于自然语言的描述执行处理/分析查询
例子
以下示例演示了使用rasdaman MCP服务器与AI代理的交互。
列表封面

描述覆盖范围

执行查询

查询结果可视化

自然语言查询建议

发展
设置
- 克隆 Git 仓库:
git clone https://github.com/rasdaman/rasdaman-mcp.git
cd rasdaman-mcp/- 创建虚拟环境(如果没有):
uv venv- 激活虚拟环境:
source .venv/bin/activate- 从源代码安装:
uv pip install -e .核心组件
- 主要应用(
main.py):此脚本初始化FastMCP应用程序。它处理传输选择、rasdaman URL、,
用户名和密码。然后,它实例化 RasdamanActions 类并装饰其方法,以将其作为工具公开。
RasdamanActions班级(rasdaman_actions.py):封装与rasdaman WCS/WCPS端点的所有交互。
它使用服务器URL和凭据进行初始化,其方法包含列出覆盖范围、描述覆盖范围和执行查询的逻辑。
- WCPS速成课程(
wcps_crash_course.py):WCPS语法的简短摘要,允许LLM生成更准确的查询。
定义工具
以下方法作为工具公开:
list_coverages():列出所有可用的数据立方体。describe_coverage(coverage_id):检索特定数据立方体的元数据。wcps_query_crash_course():返回WCPS语法速成课程,其中包含示例和最佳实践。execute_wcps_query(wcps_query):执行原始WCPS查询,并直接以字符串(标量或小json)或文件路径返回结果。
文档
要构建文档,请执行以下操作:
# install dependencies
uv pip install '.[docs]'
sphinx-build docs docs/_build然后,您可以打开 docs/_build/index.html 在浏览器中。
自动化测试
要运行测试,请执行以下操作:
# install dependencies
uv pip install '.[tests]'
pytest手动测试
与独立HTTP服务器交互 *手动地* 需要使用特定的3步流程 curl. 这 fastmcp 协议是有状态的,需要显式初始化会话。
- 首先,发送一个
initialize请求。这将返回一个200 OK最重要的是,
会话ID mcp-session-id 响应标头(在接下来的步骤中需要)。
curl -i -X POST \
-H "Accept: text/event-stream, application/json" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": { "name": "curl-client", "version": "1.0.0" }
},
"id": 1
}' \
"http://127.0.0.1:8000/mcp"- 接下来,向服务器发送通知以确认会话已准备就绪。使用步骤1中的会话ID
mcp-session-id头球
此请求不会在响应中生成正文。
SESSION_ID=""
curl -X POST \
-H "Accept: text/event-stream, application/json" \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"method": "notifications/initialized"
}' \
"http://127.0.0.1:8000/mcp"- 最后,您可以使用
tools/call方法。这params对象必须包含name工具和
一 arguments 带有该工具参数的对象。服务器将在JSON-RPC响应中返回工具调用的结果。
SESSION_ID=""
# Example: Calling the 'list_coverages' tool
curl -X POST \
-H "Accept: text/event-stream, application/json" \
-H "Content-Type: application/json" \
-H "Mcp-Session-Id: $SESSION_ID" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "list_coverages",
"arguments": {}
},
"id": 2
}' \
"http://127.0.0.1:8000/mcp"