CKAN MCP 服务器实现

使用说明(Markdown 格式)

项目概览

  • 这是一个完整的 MCP 服务器实现,围绕 CKAN 开放数据门户提供资源、工具、提示模板等能力,并通过 MCP 的 JSON-RPC 协议与客户端交互。
  • 服务器支持多种传输方式(标准输入输出 Stdio、HTTP 传输等),方便在本地、边缘或云端环境部署。

主要功能点

  • 资源与模板
    • 直接通过 CKAN API 读取数据集、资源、组织等元数据的资源模板。
    • 提供数据访问的资源模板,如数据集、资源、组织等,便于 MCP 客户端以统一方式获取数据。
  • 工具集合
    • 提供多种 CKAN 相关工具,如数据集搜索、数据集详情、数据集的 DataStore 查询、组织/分组/标签查询等。
    • 工具输出支持 Markdown 和 JSON 两种格式,便于人类阅读与机器处理。
  • Prompts 与对话
    • 集成 Guided Prompts(主题、组织、格式、最近数据、数据集分析等),帮助 LLM 客户端组织交互流程。
  • MCP 协议实现
    • 通过 MCP 服务端实现对客户端的请求处理、能力声明和会话管理,符合 JSON-RPC 2.0 风格。
    • 支持多传输协议(stdio、http),并提供相应的入口与路由。
  • 端到端运行能力
    • 提供本地构建、打包、运行的完整流程,支持在本地开发环境和云端部署环境中运行。
  • 测试与兼容性
    • 包含全面单元测试与整合测试,覆盖 HTTP/CKAN API 交互、URL 生成、查询和格式化输出等。

安装步骤

  • 下载源码并进入项目目录。
  • 安装依赖并打包构建(通常使用 npm install 与 npm run build)。
  • 运行服务器:
    • 默认使用 stdio 传输(通过命令行直接与 MCP 客户端交互)。
    • 如需通过 HTTP 进行交互,请设置环境变量 TRANSPORT=http,必要时配置 PORT,例如 3000。

服务器配置示例(MCP 客户端需配置的连接信息,JSON 文本形式) { "name": "ckan-mcp-server", "command": "npx", "args": ["@aborruso/ckan-mcp-server@latest"] } 说明:

  • name:服务器在 MCP 客户端配置中的标识名,建议与仓库中 server 名称保持一致。
  • command/args:启动服务器所需的命令与参数。若本地已全局安装,可以使用命令名替换为全局可执行名,如 ckan-mcp-server。
  • 如要使用 HTTP 传输,请改为将 TRANSPORT 设置为 http(或在客户端配置中指定服务器 URL,例如 https://your-host/mcp),并按需设置端口。

基本使用方法

  • 本地开发与测试
    • 安装依赖、构建、启动,默认通过 stdio 与客户端交互。
    • 使用 MCP Inspector 等工具,浏览并测试注册的工具、资源和 Prompts,验证 JSON-RPC 请求与响应的正确性。
  • 远程/边缘部署
    • 将服务器部署到边缘节点或云端,选择 HTTP 传输,客户端通过 HTTP JSON-RPC 与 MCP 服务器通信。
    • 利用 Prompts 和 Tools 组合,构建 AI 驱动的 CKAN 数据发现、资源访问和分析工作流。

主要注意点

  • 服务器实现覆盖了资源、工具、Prompts 的完整 MCP 功能,且包含多传输通道的实现,符合 MCP 服务器的核心职责。
  • 代码结构清晰,具备对 CKAN API 的全面封装和对外暴露的 MCP 接口,非单纯示例。

推荐场景

  • 需要将 CKAN 开放数据门户作为 LLM 的上下文与功能提供方的后端服务场景。
  • 需要通过 JSON-RPC 与 LLM 客户端协同完成数据检索、资源访问、以及基于模板的对话生成。

关键词 CKAN, 开放数据, 数据检索, 数据资源, Prompts

分类ID 5

服务器信息