一个模型上下文协议(MCP)服务器,使大型语言模型能够直接访问和分析意大利国家统计局(ISTAT)的数据。
这个MCP服务器允许像Claude这样的大型语言模型无缝查询、过滤并下载ISTAT的统计数据集,从而实现自然语言数据分析流程。无需手动搜索数据集、构建API查询并下载数据,只需简单地询问你的大型语言模型来查找和分析意大利统计数据。
基于: 该服务器使用了由ondata开发的出色开源Python封装istatapi,简化了与ISTAT的SDMX REST API的交互。
启用你的大型语言模型:
最简单的使用此MCP服务器的方法是直接使用uvx——无需安装:
uvx istat-mcp-server
# 使用pip
pip install istat-mcp-server
# 使用uv
uv pip install istat-mcp-server
# 克隆仓库
git clone https://github.com/Halpph/istat-mcp-server.git
cd istat-mcp-server
# 使用uv安装(推荐)
uv sync
# 或者使用pip安装
python -m venv .venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
pip install -e .
在Claude Desktop配置文件中添加以下内容:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"istat": {
"command": "uvx",
"args": ["istat-mcp-server"],
"env": {
"MCP_STORAGE_DIR": "/path/to/data/storage"
}
}
}
}
就这样!Claude Desktop会自动从PyPI下载并运行服务器。
如果你是从源码安装或想要运行开发版本:
{
"mcpServers": {
"istat": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/istat-mcp-server",
"run",
"istat-mcp-server"
],
"env": {
"MCP_STORAGE_DIR": "/path/to/data/storage"
}
}
}
}
默认情况下,下载的文件保存在:
/mnt/c/Users/Public/Downloads/mcp-data/%USERPROFILE%\Downloads\mcp-data./data通过设置环境变量MCP_STORAGE_DIR可以覆盖这一设置。
MCP_DEBUG: 设置为true以在响应中获得详细的错误跟踪信息get_list_of_available_datasets() - 列出所有可用的ISTAT数据集search_datasets(query) - 按关键词搜索数据集get_dataset_dimensions(dataflow_identifier) - 获取数据集的维度/结构get_dimension_values(dataflow_identifier, dimension) - 获取维度的可能值get_data(dataflow_identifier, filters) - 带过滤器获取数据(如果太大则返回URL)get_data_limited(dataflow_identifier, filters, limit) - 获取有限数量的记录get_summary(dataflow_identifier, filters) - 获取过滤后数据的统计摘要get_dataset_url(dataflow_identifier, filters) - 获取带有元数据的下载URLdownload_dataset(url, output_path) - 将数据集下载到本地存储配置完成后,你可以自然地进行交互:
你: "查找有关意大利失业率的数据集"
Claude: [使用search_datasets工具]
我找到了几个失业率数据集...
你: "获取2024年的月度失业率"
Claude: [使用get_dataset_dimensions, get_dimension_values, get_data工具]
这是2024年的失业率数据...
from mcp.client import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# 连接到服务器
server_params = StdioServerParameters(
command="uvx",
args=["istat-mcp-server"]
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 列出可用工具
tools = await session.list_tools()
# 调用一个工具
result = await session.call_tool("search_datasets", {"query": "unemployment"})
# 使用uv
uv run pytest
# 使用pip
pytest
istat-mcp-server/
├── main.py # 主MCP服务器实现
├── test_main.py # 综合测试套件
├── pyproject.toml # 项目元数据和依赖项
├── uv.lock # 依赖项锁定文件
├── README.md # 此文件
├── CONTRIBUTING.md # 贡献指南
├── LICENSE # MIT许可证
├── docs/ # 额外文档
│ ├── TESTING.md # 测试指南
│ └── ISTATAPI_REFERENCE.md # API参考
├── examples/ # 示例配置
│ └── gemini-extension.json # Gemini设置示例
└── .github/
└── workflows/ # CI/CD流水线
├── test.yml # 自动化测试
└── release.yml # 发布自动化
MIT许可证 - 详情见LICENSE文件
欢迎贡献!我们感谢bug报告、功能请求、文档改进和代码贡献。
请参阅CONTRIBUTING.md以了解详细指南:
快速入门指南:
# 分叉并克隆仓库
git clone https://github.com/YOUR_USERNAME/istat-mcp-server.git
cd istat-mcp-server
# 安装依赖项
uv sync
# 运行测试
uv run pytest
# 修改代码并提交拉取请求!
未来增强计划:
使用search_datasets工具并输入关键词如“失业率”、“GDP”、“人口”等。该工具会在所有ISTAT数据集标题和描述中进行搜索。
对于大型数据集或API超时的情况,服务器会自动返回一个下载URL。然后你可以使用download_dataset工具将数据保存到本地。
可以!任何兼容MCP的客户端都可以使用此服务器。更多信息请参阅MCP文档。
默认情况下:
/mnt/c/Users/Public/Downloads/mcp-data/%USERPROFILE%\Downloads\mcp-data./data你可以通过设置环境变量MCP_STORAGE_DIR来自定义这一设置。
download_dataset函数中自动检测文件格式
detected_extension和file_format字段查看发布历史以获取完整的版本历史。
对于问题或疑问: