这是一个MCP(模型上下文协议)服务器,提供访问来自DATA.GOV.HK的数据,这是香港政府官方开放数据门户。
要通过 Smithery 自动安装 mcp-open-data-hk 到 Claude Desktop:
npx -y @smithery/cli install @mcp-open-data-hk/mcp-open-data-hk --client claude
当使用 uv 时,不需要特定的安装。我们将使用 uvx 直接运行 mcp-server-fetch。
或者你可以通过 pip 安装 mcp-server-fetch:
pip install mcp-open-data-hk
安装后,你可以通过以下命令作为脚本运行它:
python -m mcp_open_data_hk
安装后,在你的 settings.json 中添加以下内容来配置兼容MCP的客户端(如Cursor、Claude Code或Claude Desktop):
<details> <summary>使用 uvx</summary>{
"mcpServers": {
"mcp-open-data-hk": {
"command": "uvx",
"args": ["mcp-open-data-hk"]
}
}
}
</details>
<details>
<summary>使用 pip 安装</summary>
{
"mcpServers": {
"mcp-open-data-hk": {
"command": "python",
"args": ["-m", "mcp_open_data_hk"]
}
}
}
</details>
该服务器提供了以下工具与 DATA.GOV.HK API 进行交互:
list_datasets - 获取数据集ID列表get_dataset_details - 获取特定数据集的详细信息list_categories - 获取数据类别列表get_category_details - 获取特定类别的详细信息search_datasets - 根据查询词搜索数据集,并支持高级选项search_datasets_with_facets - 搜索数据集并返回分面结果get_datasets_by_format - 根据文件格式获取数据集get_supported_formats - 获取支持的文件格式列表从 DATA.GOV.HK 获取数据集ID列表
参数:
limit(可选):返回的最大数据集数量(默认:1000)offset(可选):返回的第一个数据集偏移量language(可选):语言代码(en, tc, sc)- 默认为 "en"获取特定数据集的详细信息
参数:
dataset_id:要检索的数据集ID或名称language(可选):语言代码(en, tc, sc)- 默认为 "en"include_tracking(可选):是否添加数据集和资源的跟踪信息 - 默认为 False获取数据类别列表(组)
参数:
order_by(可选):排序字段('name' 或 'packages')- 已弃用,请使用 sort 替代sort(可选):结果排序('name asc', 'package_count desc' 等)- 默认为 "title asc"limit(可选):返回的最大类别数量offset(可选):分页偏移量all_fields(可选):是否返回完整的组字典而不是仅名称 - 默认为 Falselanguage(可选):语言代码(en, tc, sc)- 默认为 "en"获取特定类别的详细信息(组)
参数:
category_id:要检索的类别ID或名称include_datasets(可选):是否包含类别数据集的截断列表 - 默认为 Falseinclude_dataset_count(可选):是否包含完整的包计数 - 默认为 Trueinclude_extras(可选):是否包含额外字段 - 默认为 Trueinclude_users(可选):是否包含用户 - 默认为 Trueinclude_groups(可选):是否包含子组 - 默认为 Trueinclude_tags(可选):是否包含标签 - 默认为 Trueinclude_followers(可选):是否包含关注者数量 - 默认为 Truelanguage(可选):语言代码(en, tc, sc)- 默认为 "en"使用 package_search API 根据查询词搜索数据集。
此函数在数据集标题、描述和其他元数据中搜索匹配查询词的数据集。它支持高级 Solr 搜索参数。
参数:
query(可选):Solr 查询字符串(例如:"transport", "weather", ":" 表示所有)- 默认为 ":"limit(可选):返回的最大数据集数量(默认:10,最大:1000)offset(可选):分页偏移量 - 默认为 0language(可选):语言代码(en, tc, sc)- 默认为 "en"返回值: 一个包含以下内容的字典:
count:匹配数据集的总数results:匹配的数据集列表(最多 limit 个)search_facets:关于结果的分面信息has_more:布尔值,表示是否有更多可用结果搜索数据集并返回分面结果以更好地探索数据。
此函数通过显示按标签、组织或其他分面分组的数据集计数,有助于探索可用的数据类型。
参数:
query(可选):Solr 查询字符串 - 默认为 ":"language(可选):语言代码(en, tc, sc)- 默认为 "en"返回值: 一个包含以下内容的字典:
count:匹配数据集的总数search_facets:关于结果的分面信息sample_results:前 3 个匹配的数据集获取具有特定文件格式资源的数据集。
参数:
file_format:用于过滤的文件格式(例如:"CSV", "JSON", "GeoJSON")limit(可选):返回的最大数据集数量 - 默认为 10language(可选):语言代码(en, tc, sc)- 默认为 "en"返回值: 一个包含以下内容的字典:
count:匹配数据集的总数results:匹配的数据集列表获取 DATA.GOV.HK 支持的文件格式列表
返回值: 一个支持的文件格式列表
python tests/test_client.py
python tests/debug_search.py
python tests/comprehensive_test.py
python -m src.mcp_open_data_hk
pytest tests/
当作为包安装时,可以通过模块名而不是文件路径引用服务器。这对用户来说更方便,因为他们不需要指定完整的文件路径。
{
"mcpServers": {
"mcp-open-data-hk": {
"command": "python",
"args": ["-m", "mcp_open_data_hk"]
}
}
}
{
"mcpServers": {
"mcp-open-data-hk": {
"command": "python",
"args": ["-m", "src.mcp_open_data_hk"],
"cwd": "/full/path/to/mcp-open-data-hk"
}
}
}
建议最终用户使用包安装方法,而本地开发和测试则使用文件路径方法。
一旦安装完成,可以尝试这些查询与您的AI助手:
AI 将自动使用您的 MCP 服务器中的适当工具来获取所需的信息。
模块未找到错误:确保您已安装依赖项,对于本地开发使用 pip install -e .,对于发布的包使用 pip install mcp-open-data-hk。
路径问题:确保 IDE 配置中的 cwd 是项目的正确绝对路径。
权限错误:在 Unix 系统上,确保脚本具有执行权限:
chmod +x src/mcp_open_data_hk/__main__.py
找不到 FastMCP:使用以下命令安装:
pip install fastmcp
如果您遇到问题,可以手动测试连接:
在一个终端中运行服务器:
python -m src.mcp_open_data_hk
在另一个终端中运行测试客户端:
python tests/test_client.py
如果这能正常工作,那么问题可能在于 IDE 配置。
您可以通过在 src/mcp_open_data_hk/server.py 中添加更多的工具来扩展服务器。遵循现有的模式:
@mcp.tool 装饰服务器会自动将所有装饰有 @mcp.tool 的函数暴露给 MCP 客户端。
此项目包括 GitHub Actions 工作流用于持续集成/持续部署:
此项目使用 PyPI 的可信发布,比使用 API 令牌更安全。要设置它:
访问 https://pypi.org/manage/account/publishing/ 并添加一个新的待处理发布者:
mcp-open-data-hkmcp-open-data-hkpublish.ymlpypi访问 https://test.pypi.org/manage/account/publishing/ 并添加一个新的待处理发布者,使用相同的信息但环境名称为 testpypi。
在您的 GitHub 仓库中,进入“设置” > “环境”并创建两个环境:
pypi - 设置“需要审批的人员”为您的用户名以增加安全性testpypi - 不需要额外配置使用可信发布,无需创建或存储 API 令牌作为秘密。
为了使可信发布正确工作,您需要在 GitHub 仓库设置中创建两个环境:
pypi - 此环境在发布到 PyPI 时需要手动审批以增加安全性testpypi - 此环境不需要手动审批,将自动发布到 TestPyPI要创建这些环境:
pypi 环境并启用“需要审批的人员”并选择您的用户名testpypi 环境,无需额外设置要发布新版本:
pyproject.toml 中的版本号git tag -a v1.0.0 -m "发布版本 1.0.0"
git push origin v1.0.0
或者使用提供的发布脚本:
./release.sh 1.0.0
这将自动触发发布工作流,构建并发布包到 TestPyPI 和 PyPI(对于标记的发布),并创建 GitHub 发布。
欢迎贡献!请阅读我们的贡献指南和行为准则,了解如何为此项目做出贡献的详细信息。
mcp-open-data-hk/
├── src/
│ └── mcp_open_data_hk/ # 主 Python 包
│ ├── __init__.py # 包初始化
│ ├── __main__.py # 包入口点
│ └── server.py # 主 MCP 服务器实现
├── tests/
│ ├── test_client.py # 客户端测试脚本
│ ├── debug_search.py # 搜索功能测试
│ ├── comprehensive_test.py # 综合功能测试
│ └── test_data_gov_hk.py # 单元测试
├── requirements.txt # Python 依赖项
├── pyproject.toml # 项目配置
├── README.md # 此文件
├── run_examples.sh # 示例命令脚本
├── install.sh # 安装辅助脚本
├── release.sh # 发布辅助脚本
└── .gitignore # Git 忽略文件
此项目根据 MIT 许可证授权。