关于 gdex-mcp
gdex-mcp 通过 MCP 工具向大模型客户端开放 GDEX 地球科学数据门户。它支持数据集发现与元数据查询、文件访问、门户指标及需认证的数据子集工作流。
主要功能
- 01发现数据集并查询元数据
- 02列出文件和数据访问链接
- 03访问 ARCO 变量
- 04查询门户和数据集指标
- 05查找工作人员联系方式
- 06提交需认证的数据子集请求
适用场景
- 01查找地球科学数据集及其元数据
- 02定位文件和数据访问链接
- 03查看门户或数据集指标
- 04提交并跟踪数据子集请求
MCP 相关
gdex-mcp 将 GDEX REST API 封装为供 MCP 客户端调用的工具。它支持本地 stdio 或 streamable HTTP;数据子集请求工具需要 GDEX 令牌。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://gdex-mcp.k8s.ucar.edu/mcpclaude mcp add --transport http rpconroy-gdex https://gdex-mcp.k8s.ucar.edu/mcp{"mcpServers":{"rpconroy-gdex":{"type":"http","url":"https://gdex-mcp.k8s.ucar.edu/mcp"}}}在 Cursor 中打开{"servers":{"rpconroy-gdex":{"type":"http","url":"https://gdex-mcp.k8s.ucar.edu/mcp"}}}在 VS Code 中打开{"mcpServers":{"rpconroy-gdex":{"type":"http","url":"https://gdex-mcp.k8s.ucar.edu/mcp"}}}{"mcpServers":{"rpconroy-gdex":{"serverUrl":"https://gdex-mcp.k8s.ucar.edu/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
30| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | |
| query | string | 否 | |
| offset | integer | 否 |
详细介绍
GDEX MCP Server
一个 MCP(Model Context Protocol)服务,将 GDEX (Geoscience Data Exchange)REST API 作为工具提供给大模型客户端使用,包括数据集发现与元数据、文件列表、数据访问链接、ARCO 变量、门户/数据集指标、工作人员联系方式,以及经过身份验证的子集请求工作流。
本地运行
pip install -e .
gdex-mcp
然后将 MCP 客户端(Claude Desktop、Claude Code 等)指向
gdex-mcp 命令。通过环境变量或 .env
文件进行配置,详见 CLAUDE.md 的 Configuration 部分。大多数工具无需任何配置;只有在使用
子集请求工具(list_request_statuses、check_request_status、
get_request_files、submit_subset_request、submit_and_wait_for_request、
purge_request)时才需要设置 GDEX_TOKEN。
作为共享服务运行
设置 GDEX_MCP_TRANSPORT=streamable-http(参见 Dockerfile),即可将其作为
可通过网络访问的服务运行,而不是本地 stdio 子进程。在这种模式下,
调用子集请求工具的客户端需要在每个请求中通过
Authorization: Token <token> 标头传入各自的 GDEX 令牌,而不是依赖
共享的 GDEX_TOKEN。具体接线方式请参阅 CLAUDE.md 的 “Two transports” 部分。
Docker
# Build the image
docker build -t gdex-mcp .
# Run the container
docker run -d --name gdex-mcp -p 8080:8080 gdex-mcp
MCP 请求发送至 http://localhost:8080/mcp。
# Stop and remove the container
docker stop gdex-mcp && docker rm gdex-mcp
部署
合并到 main 的 PR 会触发 GitHub Actions 工作流,该工作流运行
测试套件(pip install -e ".[test]" && pytest),然后构建新的 Docker 镜像并推送至 Harbor
(hub.k8s.ucar.edu/gdex_mcp/gdex-mcp)。应用通过 app-chart/ 中的 Helm chart
部署到 Kubernetes。有关如何遵循 gdex-web-services 约定,请参阅 CLAUDE.md 的 Deployment
部分。
# Deploy with Helm
helm upgrade --install gdex-mcp ./app-chart -n <namespace>
# Deploy a test instance
helm upgrade --install gdex-mcp ./app-chart -n <namespace> --set testName=<your-name>
MCP Registry
gdex-mcp 已发布到官方 MCP Registry
,名称为 io.github.rpconroy/gdex-mcp(参见 server.json),而不是 io.github.NCAR/gdex-mcp。
即使将组织成员资格设为公开,在 NCAR 组织命名空间下发布仍不断遇到 403 错误。这是 Registry
组织成员资格检查中一个已知但尚未解决的问题(参见 modelcontextprotocol/registry#1537
和 #1649)。
我们怀疑问题出在组织管理员一侧的 GitHub OAuth App 访问限制,而非我们这边。.github/workflows/publish-mcp-registry.yaml
会在 v* 标签上发布新版本;它使用 PAT 身份验证(MCP_GITHUB_TOKEN
密钥),而不是 GitHub OIDC,因为此仓库归 NCAR 所有,所以 Actions
OIDC 始终声明 repository_owner: NCAR,无法以个人的 rpconroy 命名空间进行身份验证。待 NCAR 组织访问问题解决后,改用
io.github.NCAR/gdex-mcp 意味着要发布新的 Registry 条目(Registry 不支持重命名),并将工作流切换回
login github-oidc。
文档
CLAUDE.md 介绍了完整内容:架构、添加工具时要遵循的约定、两种传输模式以及部署。进行修改前请先阅读。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。