政府数据访问工具

FastMCP服务器提供以色列政府开放数据的访问工具,支持搜索、浏览和查询数据集,并可选集成本地LLM进行自动工具调用。

  • by yaronv
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yaronv/data_gov_il_mcp

使用说明

Data.gov.il快速MCP服务器

FastMCP服务器,用于通过LM Studio使用即用工具和可选的本地LLM集成访问以色列政府开放数据(Data.gov.il)。

特性

  • 数据工具:搜索、浏览和查询以色列政府数据集
  • 高级搜索:过滤/排序;希伯来语和英语支持
  • HTTP传输:客户端的简单HTTP端点(/mcp)
  • 可选LLM客户端:使用LM Studio(兼容OpenAI)自动驱动工具调用
  • web界面:用于探索数据的交互式聊天界面

先决条件

  • Python 3.12+
  • 互联网接入(到达 data.gov.il CKAN API)
  • 可选:启用OpenAI兼容服务器的LM Studio

安装

# From repo root
pip install -r requirements.txt

运行MCP服务器

# From repo root
python src/simple_server.py
  • 服务器将在以下时间启动 http://127.0.0.1:8000
  • MCP端点: http://127.0.0.1:8000/mcp

快速测试(无LM Studio)

# From repo root
python src/simple_test.py

这列出了工具并运行了两个示例调用: find_datasets 和 get_dataset_info.

web界面

web界面提供了一个交互式聊天界面,用于使用LLM探索data.gov.il数据集。

1) 启动MCP服务器

python src/simple_server.py

2) 配置环境变量

创建一个 .env repo根目录中的文件,其中包含:

OPENAI_BASE_URL=http://localhost:1234/v1
OPENAI_API_KEY=lm-studio
OPENAI_MODEL=openai/gpt-oss-20b
MCP_SERVER_URL=http://localhost:8000/mcp

3) 启动web界面

python src/web_interface.py

web界面将从以下位置开始 http://localhost:3000。在浏览器中打开此URL,开始与数据聊天。

4) 启动LM Studio(聊天需要)

  • 在LM Studio中,启用“OpenAI兼容服务器”
  • 默认URL为 http://localhost:1234/v1
  • 选择一个模型(例如。, openai/gpt-oss-20b)

使用OpenAI兼容客户端(LM Studio)

客户在 src/openai_mcp_client.py 允许与OpenAI兼容的API(例如LM Studio)调用MCP工具。

1) 启动MCP服务器

python src/simple_server.py

2) 启动/确认LM Studio API服务器

  • 在LM Studio中,启用“OpenAI兼容服务器”。
  • 默认基本URL通常为 http://localhost:1234/v1.
  • 选择型号(注意型号标识符。, openai/gpt-oss-20b).

3) 通过环境变量配置客户端

创建一个 .env 文件在您的工作目录中(或导出env-vars)。例子:

OPENAI_BASE_URL=http://localhost:1234/v1
OPENAI_API_KEY=lm-studio
OPENAI_MODEL=openai/gpt-oss-20b
MCP_SERVER_URL=http://localhost:8000/mcp

笔记:

  • LM Studio接受任何API密钥字符串;我们建议 lm-studio.
  • OPENAI_MODEL 必须与LM Studio中显示的模型标识符匹配。

4) 运行客户端

python src/openai_mcp_client.py

它的作用:

  • 从MCP服务器加载工具。
  • 保持问题之间的对话状态。
  • 让模型决定何时调用工具;工具调用参数经过净化,以避免验证错误。

工具参考

find_datasets(query: str, sort?: 'newest'|'relevance'|'popular'|'updated')

按关键字或主题搜索数据集。支持希伯来语和英语查询。使用此功能可以发现特定主题的数据集,如“交通”、“预算”或“人口”。

参数:

  • query (必填):搜索短语
  • sort (可选):排序顺序- newest, relevance, popular,或 updated

get_dataset_info(dataset: str)

获取特定数据集的详细元数据,包括标题、描述、创建日期和可搜索资源的简短列表。在找到一个有趣的数据集后使用 find_datasets.

参数:

  • dataset (必填):数据集标识符/名称(例如“分支”)

list_all_datasets()

列出目录中的所有可用数据集。使用此功能可以在没有特定搜索查询的情况下对所有可用内容进行全面概述。

退货: 所有数据集的名称(前20个显示总计数)

list_resources(dataset: str)

列出特定数据集中的所有资源(数据文件/表)。显示哪些资源处于活动状态及其标识符。

参数:

  • dataset (必填):数据集标识符/名称

search_records(resource_id: str, q?: str, limit?: int, offset?: int, filters?: dict, fields?: list, sort?: list)

查询特定资源中的实际数据记录。这是从数据集中检索真实数据的地方。

参数:

  • resource_id (必填):来自的资源标识符 get_dataset_info 或 list_resources
  • q (可选):搜索查询文本
  • limit (可选):要返回的最大记录数(默认值:100)
  • offset (可选):分页偏移
  • filters (可选):字段特定筛选器作为字典
  • fields (可选):返回哪些字段
  • sort (可选):排序顺序

工作流程示例:

  1. find_datasets("transportation") -查找相关数据集
  2. get_dataset_info("traffic-counts") -获取详细信息和资源ID
  3. search_records(resource_id="abc123", limit=10) -检索实际数据

许可证

MIT许可证