CKAN数据集搜索MCP服务

通过自然语言查询CKAN数据集并提供详细信息的MCP服务器,专为LLM工具调用设计。

  • by mq-sol
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mq-sol/ckan-search-mcp

使用说明

G空间信息中心支持

概要

本项目利用G空间信息中心(CKAN)的API 允许从自然语言检索和检索数据集 Model Context Protocol服务器提供。

以从LLM(ChatGPT/Claude等)作为工具调用为前提。


目的

  • 允许使用自然语言搜索CKAN数据集
  • 获取和确认数据集的详细信息
  • 作为将来的数据取得·变换(GIS处理)的扩展基础

MVP示波器

已实施

  • 数据集搜索
  • 获取数据集详细信息
  • 预览CSV资源

非对象(不在MVP中实施)

  • 下载资源(非CSV)
  • GIS数据转换(Shapefile→GeoJSON等)
  • UI开発
  • 高级身份验证(如多用户支持)

系统配置

[LLM (ChatGPT / Claude)]
        ↓
[MCP Client]
        ↓
[MCP Server(本プロジェクト)]
        ↓
[CKAN API(G空間情報センター)]

使用技术

种别 技术
言语 Python 3.12+
MCP MCP[cli]
HTTP httpx
设定管理 python-dotenv
|软件包管理|uv/pyproject.toml|

接続先CKAN

  • 基本URL(示例) https://www.geospatial.jp/ckan/api/3/action

  • 环境变数 CKAN_SEARCH_URL 中所述修改相应参数的值

使用API

  • package_search(検索)
  • package_show(详细取得)

认证

环境变数

CKAN_SEARCH_URL=https://www.geospatial.jp/ckan/api/3/action
CKAN_API_KEY=xxxxxxxx

头部

Authorization: <CKAN_API_KEY>

※ CKAN_API_KEY 未设定时,无认证头发送请求(对应于公开API)


MCP工具设计

1.搜索_数据集

概要

用关键字搜索数据集

入力

{
  "query": "埼玉県 道路",
  "limit": 5
}

内部処理

GET <CKAN_SEARCH_URL>/package_search?q=<query>&rows=<limit>

出力

单击功能区上 result 直接返回对象(count / results 等)


2.获取_数据_详细信息

概要

获取特定数据集的所有元数据(包括资源列表标签定制字段)

入力

{
  "dataset_id": "dataset-id"
}

内部処理

GET <CKAN_SEARCH_URL>/package_show?id=<dataset_id>

出力

单击功能区上 result 返回对象


3.预览_csv_resource

概要

从CSV资源的URL读取开头几行,用文本返回数据结构。 AI用于了解数据的列配置。

入力

{
  "url": "https://example.com/data.csv",
  "row_limit": 10
}

出力

CSV的开头 row_limit 以文本格式返回行。错误时返回错误信息。


目录配置

ckan-search-mcp/
├── src/
│   └── ckan_search_mcp/
│       ├── server.py       # MCPエントリポイント・ツール定義
│       └── settings.py     # 環境変数読み込み
├── .env                    # 環境変数(gitignore対象)
├── .python-version         # Python バージョン指定(3.12)
├── pyproject.toml          # プロジェクト設定・依存関係
├── uv.lock                 # 依存関係ロックファイル
└── README.md

安装,安装

git clone <repo>
cd ckan-search-mcp

# uv がない場合はインストール
curl -LsSf https://astral.sh/uv/install.sh | sh

# 依存関係のインストール
uv sync

# 環境変数の設定
cp .env.example .env
# .env を編集して CKAN_SEARCH_URL と CKAN_API_KEY を設定

実行

uv run python src/ckan_search_mcp/server.py

动作确认

例:

  • “寻找埼玉县的道路数据”
  • “让我看看第一个细节。”
  • “让我看看这CSV资源的前10行。”

未来扩展

  • 资源下载(包括ZIP部署)
  • Shapefile→GeoJSON变换
  • S3连携
  • 高速缓存机制
  • 搜索过滤器增强(标记/组织)

注意事项

  • 注意CKAN API的规格变更
  • 大量响应时的控制(limit 参数限制件数)
  • CKAN_API_KEY 不提交给公共存储库

许可证

待定


作成者

待定