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 未设定时,无认证头发送请求(对应于公开API)
______________________________________________________________________
MCP工具设计
1.搜索_数据集
概要
用关键字搜索数据集
入力
{
"query": "埼玉県 道路",
"limit": 5
}内部処理
GET /package_search?q=&rows=
出力
单击功能区上 result 直接返回对象(count / results 等)
______________________________________________________________________
2.获取_数据_详细信息
概要
获取特定数据集的所有元数据(包括资源列表标签定制字段)
入力
{
"dataset_id": "dataset-id"
}内部処理
GET /package_show?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
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不提交给公共存储库
______________________________________________________________________
许可证
待定
______________________________________________________________________
作成者
待定
______________________________________________________________________
