MCP服务器 是 AI Skill Hub 本期精选MCP工具之一。综合评分 8.0 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
MCP服务器 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
MCP服务器 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/ondata/ckan-mcp-server
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"mcp---": {
"command": "npx",
"args": ["-y", "ckan-mcp-server"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 MCP服务器 执行以下任务... Claude: [自动调用 MCP服务器 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"mcp___": {
"command": "npx",
"args": ["-y", "ckan-mcp-server"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
ckan_find_relevant_datasets({
server_url: "https://www.dati.gov.it/opendata",
query: "mobilità urbana",
limit: 5
})
ckan_tag_list({
server_url: "https://www.dati.gov.it/opendata",
tag_query: "salute",
limit: 25
})
ckan_package_search({ server_url: "https://www.dati.gov.it/opendata", q: "incidenti stradali", fq: "issued:[2025-01-01T00:00:00Z TO 2025-12-31T23:59:59Z]" }) // → ~121 results (only datasets where publisher filled in issued)
The HTTP transport (TRANSPORT=http) is network-exposed and unauthenticated: any client that reaches POST /mcp can drive requests through it. To prevent SSRF abuse (e.g. a caller pointing server_url at internal hosts or cloud metadata), the HTTP transport refuses to start unless you set a domain allowlist:
| Variable | Effect |
|---|---|
CKAN_ALLOWED_DOMAINS | Comma-separated allowlist of hostnames the server may query (default-deny). **Required** to start the HTTP transport. Example: CKAN_ALLOWED_DOMAINS="www.dati.gov.it,dati.comune.messina.it" |
CKAN_HTTP_ALLOW_ALL=true | Explicit opt-out: start the HTTP transport **without** an allowlist (logs a security warning). Not recommended when network-exposed. |
The default stdio transport is unaffected — it stays open so you can query any portal locally. Regardless of allowlist, all requests are also validated against private/internal IP ranges, including hostnames that resolve to internal addresses (DNS-based SSRF, fixed in v0.4.108). The official Cloudflare Worker is sandboxed by the platform and does not require this setting.
The quickest way. Install the package globally and it's immediately available as a command:
npm install -g @aborruso/ckan-mcp-server
The server will be available as ckan-mcp-server, or you can run it without installing via:
npx @aborruso/ckan-mcp-server@latest
For development or if you want to run the latest unreleased code:
git clone https://github.com/ondata/ckan-mcp-server.git
cd ckan-mcp-server
npm install
npm run build
node dist/index.js
Thanks to @piersoft, you can also run the server via Docker:
git clone https://github.com/ondata/ckan-mcp-server.git
cd ckan-mcp-server
docker compose up --build -d
The MCP server will be available at http://localhost:3000/mcp. See docker/README.md for full details, including how to connect Claude Desktop to the container.
---
The skill folder lives at skills/ckan-mcp/ in this repository and is listed on skills.sh. Use the Skills CLI to install it:
```bash
npx skills add -g ondata/ckan-mcp-server --skill ckan-mcp
```bash
npm run build
These real-world examples demonstrate powerful Solr query combinations tested on the Italian open data portal (dati.gov.it):
Find healthcare datasets (tolerating spelling errors) modified in the last 6 months, prioritizing title matches:
ckan_package_search({
server_url: "https://www.dati.gov.it/opendata",
q: "(title:sanità~2^3 OR title:salute~2^3 OR notes:sanità~1) AND metadata_modified:[NOW-6MONTHS TO *]",
sort: "score desc, metadata_modified desc",
rows: 30
})
Techniques used:
sanità~2 - Fuzzy search with edit distance 2 (finds "sanita", "sanitá", minor typos)^3 - Boosts title matches 3x higher in relevance scoringNOW-6MONTHS - Dynamic date math for rolling time windowsResults: 949 datasets including hospital units, healthcare organizations, medical services
Environmental datasets where "inquinamento" and "aria" (air pollution) appear close together, excluding water-related datasets:
ckan_package_search({
server_url: "https://www.dati.gov.it/opendata",
q: "(notes:\"inquinamento aria\"~5 OR title:\"qualità aria\"~3) AND NOT (title:acqua OR title:mare)",
facet_field: ["organization", "res_format"],
rows: 25
})
Techniques used:
"inquinamento aria"~5 - Proximity search (words within 5 positions)~3 - Tighter proximity for title matchesNOT (title:acqua OR title:mare) - Exclude water/sea datasetsResults: 305 datasets
Regional datasets published in the last month that have at least one resource format declared:
ckan_package_search({
server_url: "https://www.dati.gov.it/opendata",
q: "organization:regione* AND metadata_created:[NOW-1MONTH TO *] AND res_format:*",
sort: "metadata_modified desc",
facet_field: ["organization"],
rows: 10
})
Techniques used:
regione* - Wildcard matches all regional organizationsres_format:* - Field existence check (has at least one resource format declared)NOW-1MONTH - Rolling 30-day windowResults: 293 datasets
Datasets from the Italian Ministry of Labour modified during 2025, with facets by format and tags:
ckan_package_search({
server_url: "https://www.dati.gov.it/opendata",
q: "organization:ministero-del-lavoro AND metadata_modified:[2025-01-01T00:00:00Z TO 2025-12-31T23:59:59Z]",
sort: "metadata_modified desc",
facet_field: ["res_format", "tags"],
rows: 10
})
Techniques used:
[2025-01-01T00:00:00Z TO 2025-12-31T23:59:59Z] - Explicit date range (full year)organization:ministero-del-lavoro - Filter by specific organizationResults: 83 datasets
ckan_group_search({
server_url: "https://www.dati.gov.it/opendata",
pattern: "ambiente"
})
Boolean Operators: AND, OR, NOT, +required, -excluded Wildcards: * (multiple chars), ? (single char) - Note: left truncation not supported Fuzzy: ~N (edit distance), e.g., health~2 Proximity: "phrase"~N (words within N positions) Boosting: ^N (relevance multiplier), e.g., title:water^2 Ranges:
[a TO b], e.g., num_resources:[5 TO 10]{a TO b}, e.g., num_resources:{0 TO 100}[2024-01-01T00:00:00Z TO *]Date Math: NOW, NOW-1YEAR, NOW-6MONTHS, NOW-7DAYS, NOW/DAY Field Existence: field:* (field exists), NOT field:* (field missing)
---
Add to your User Settings or .vscode/settings.json:
Using the hosted endpoint (no install):
{
"mcpServers": {
"ckan": {
"url": "https://ckan-mcp-server.andy-pr.workers.dev/mcp",
"type": "http"
}
}
}
Using local installation:
{
"mcpServers": {
"ckan": {
"command": "npx",
"args": ["@aborruso/ckan-mcp-server@latest"]
}
}
}
Wrong URL for Italian portal — use https://www.dati.gov.it/opendata (not https://dati.gov.it).
Connection error
Error: Server not found: https://example.gov
Verify the URL is reachable and use ckan_status_show to confirm the portal is responding.
No results — broaden your query or check what's available with facets:
ckan_package_search({
server_url: "https://www.dati.gov.it/opendata",
q: "*:*",
facet_field: ["tags", "organization"],
rows: 0
})
LLM uses external data when no results are found — when a tool returns no results, some LLMs (e.g. ChatGPT) may supplement the answer with information from their training data without warning. This is a known LLM behavior, not a server issue. To avoid it, instruct the model in your system prompt to only use data returned by the MCP tools and not rely on external sources.
---
高质量的MCP服务器实现
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
经综合评估,MCP服务器 在MCP工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | ckan-mcp-server |
| 原始描述 | 开源MCP工具:MCP server for querying CKAN open data portals (package search, DataStore SQL, o。⭐55 · TypeScript |
| Topics | mcpckanapi-clienttypescript |
| GitHub | https://github.com/ondata/ckan-mcp-server |
| License | MIT |
| 语言 | TypeScript |
收录时间:2026-06-22 · 更新时间:2026-06-22 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端