关于 Portugal (public data)
Portugal (public data) 是只读 MCP 服务,将葡萄牙多个官方和开放数据源汇集为面向 AI 助手的查询工具。它涵盖天气、统计、议会、医疗、能源和交通等领域,回答标明来源与日期,且无需 API 密钥或账户。
主要功能
- 01查询天气、预警及火险
- 02检索统计、经济与议会数据
- 03查询公共合同和开放数据集
- 04获取医疗与药品公开信息
- 05查找燃油价格和电动车充电桩
- 06查询公交及铁路时刻表
适用场景
- 01查询葡萄牙天气和火险预报
- 02了解失业率或 Euribor 的变化
- 03查找附近燃油站或充电桩
- 04查询公交到站和跨城直达班次
MCP 相关
该项目是供 MCP 客户端使用的只读 MCP 服务,提供查询葡萄牙公开数据的工具。支持 stdio,也可通过 Streamable HTTP 提供服务;无需 API 密钥或账户。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
47收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lat | any | 否 | |
| lon | any | 否 | |
| place | any | 否 |
详细介绍
portugal-mcp
通过一个 MCP 服务,为 AI 助手提供葡萄牙公共数据。 向 Claude(或任何 MCP 客户端)询问天气和预警、邮政编码、失业或通胀、Euribor、议会投票结果、公共合同中标者、急诊室繁忙程度、药品是否短缺、附近最便宜的燃油、下一班开往波尔图的火车何时出发,或本火灾季节有多少土地被烧毁。
只读,无需 API 密钥,无需账户。 每个回答都来自官方或公共开放数据源,并注明来源及数据日期。与任何数据源均无关联。
葡萄牙语: 提供葡萄牙公共数据的 MCP 服务(IPMA、INE、Banco de Portugal、Parlamento、Portal BASE、dados.gov.pt、SNS、Infarmed、DGEG、MOBI.E、Carris Metropolitana、CP 时刻表、Metro de Lisboa、Carris 和 Fertagus、EFFIS 火灾数据)。只读,无需密钥。工具接受葡萄牙语提问。
涵盖内容
| 功能 | 工具 | 来源 |
|---|---|---|
clima | weather_forecast、weather_warnings、fire_risk、sea_forecast、earthquakes | IPMA |
geo | postal_code、where_is、municipality、public_holidays | GeoAPI.pt(CAOP、CTT、INE 人口普查);节假日根据《劳动法典》计算 |
ine | ine_search、ine_indicator | INE 指标 API |
bpstat | bpstat_search、bpstat_series | Banco de Portugal BPstat |
parlamento | parliament_search、parliament_initiative、parliament_votes、parliament_deputies | 葡萄牙共和国议会开放数据 |
contratos | public_contracts、public_contracts_summary | IMPIC / Portal BASE |
dados | open_data_search、open_data_dataset、open_data_preview | dados.gov.pt |
saude | sns_find_institutions、sns_emergency_stats、sns_surgery_wait_stats、sns_consultation_wait_stats、sns_search_datasets、sns_query_dataset | SNS 透明度门户 |
medicamentos | medicine_availability、pharmacies、find_medicine_near、medicine_help | Infarmed 公共页面、值班药房 |
energia | fuel_prices、fuel_station_detail、fuel_types、ev_chargers、ev_charger_detail | DGEG、MOBI.E |
transportes | bus_find_stops、bus_next_arrivals、bus_line_info、bus_service_alerts、bus_vehicle_positions | Carris Metropolitana API |
transit | transit_operators、transit_find_stops、transit_departures、transit_trips_between | CP、Metro de Lisboa、Carris 和 Fertagus 的官方 GTFS 时刻表 |
incendios | wildfires | EFFIS(Copernicus,CC BY 4.0) |
总共有 47 个工具。如果你的客户端难以处理这么多工具,可以通过 PORTUGAL_MCP_FEATURES(见下文)仅加载所需工具。
须知
- 统计数据有时效性。 INE、BPstat 和 SNS 的数据属于官方统计序列,带有参考时段,通常会滞后几个月。回答会注明统计时段。
- 医疗与药品:提供信息,不构成建议。 SNS 数据是月度统计,并非急诊室的实时排队情况。葡萄牙不公开各药房的库存,因此工具不会声称某家药房有某种药品。遇到紧急情况请拨打 112;需要医疗建议请拨打 SNS 24, 808 24 24 24。
- 议会: 投票按议会党团记录,与议会公布的方式一致。首次调用会下载约 100 MB 的数据(大约需要一分钟),之后缓存一天。
- 公共合同: BASE 年度文件大小为 15-55 MB,因此首次查询某一年的数据需要一两分钟。金额是采购方报告的不含 VAT 的合同价格。个人的税号(NIF)会被隐藏;公司和公共机构的 NIF 会显示。
- 燃油 / 电动汽车: 首次查询电动汽车数据时会加载 MOBI.E 全国数据源(约 80 秒),之后会缓存。
- 时刻表是计划时刻,不是实时信息。 CP、Metro de Lisboa、Carris 和 Fertagus 会发布官方 GTFS 时刻表;首次使用时,每份时刻表都会加载到本地 SQLite 文件中(Carris 约需 20 秒),并在运营方发布新版时更新。
transit_trips_between仅查找直达班次(不包含换乘)。Metro do Porto 和 STCP 未发布当前的官方数据源。 - 野火数据是卫星绘制的过火区域(EFFIS),通常会滞后一日或更久,并非实时火情。要查询今日火险,请使用
fire_risk;遇到紧急情况请拨打 112。
安装
需要 Python 3.10+。使用 uv 时无需其他依赖:
uvx portugal-mcp --list-tools
也可以使用 pip:pip install portugal-mcp。
Claude Code
claude mcp add portugal -- uvx portugal-mcp
Claude Desktop
将以下内容添加到 claude_desktop_config.json(也见 claude_desktop_config.snippet.json):
{
"mcpServers": {
"portugal": {
"command": "uvx",
"args": ["portugal-mcp"]
}
}
}
Codex 和其他 MCP 客户端
任何可运行 stdio 服务的客户端都适用:命令为 uvx,参数为 ["portugal-mcp"]。如需使用 HTTP,请运行 portugal-mcp --http,它会在 127.0.0.1:8000 上提供可流式传输的 HTTP 服务(可通过 MCP_HOST / MCP_PORT 修改)。
配置
| 变量 | 默认值 | 功能 |
|---|---|---|
PORTUGAL_MCP_FEATURES | all | 以逗号分隔的要加载功能列表(clima,geo,ine),或要排除的功能列表(-contratos,-parlamento)。 |
PORTUGAL_MCP_CACHE_DIR | OS cache dir | 下载文件的缓存位置。 |
PORTUGAL_MCP_LOG_LEVEL | INFO | 日志级别;日志输出到 stderr。 |
portugal-mcp --refresh 会预先下载大型文件(议会数据、本年度合同、电动汽车充电桩、时刻表),然后退出。
示例问题
- “波尔图这周会下雨吗?有预警吗?”
- “今天 Monchique 的火险等级如何?”
- “葡萄牙最新一个月的失业率是多少?”
- “过去 12 个月 6 个月期 Euribor 如何变化?”
- “本月议会对住房问题进行了哪些投票,各党派分别如何投票?”
- “2026 年金额最大的直接采购合同有哪些?里斯本市政厅今年签订了多少合同?”
- “我在 Coimbra 需要布洛芬——是否断货?哪些药房在值班?”
- “Setúbal 附近最便宜的柴油” / “Marquês 附近的快速充电桩”
- “Cais do Sodré 站下一班公交车什么时候到?”
- “明天上午从 Lisboa Oriente 到 Porto 的直达火车有哪些?” / “Prazeres 下一班 28 路有轨电车是什么时候?”
- “今年 Algarve 有多少面积被烧毁?”
开发
python -m venv .venv && .venv/bin/pip install -e ".[dev]"
pytest # offline unit tests (fixtures, no network)
pytest -m live # hits every real source; CI runs this daily
ruff check .
CONTRIBUTING.md 介绍了功能的组织方式以及添加数据源的规则。SECURITY.md 介绍了如何报告漏洞。
维护
- CI: 每次推送和拉取请求都会在 Linux 和 Windows 上运行 lint 和单元测试,并执行
pip-audit。 - 实时数据源: 每天运行一次,检查真实 API;当数据源更改格式时,会创建一个 issue。
- Dependabot: 提议更新依赖项和 GitHub Actions。Actions 使用提交 SHA 固定版本。
- 发布: 仅从版本标签发布,且仅在测试通过后进行。发布通过 PyPI trusted publishing 和官方 MCP Registry 完成,不存储令牌。
替代项目
此软件包合并了同一作者之前开发的四个服务,这些服务现已弃用:sns-portugal-mcp、portugal-medicines-mcp、portugal-fuel-ev-mcp 和 carris-metropolitana-mcp。它们的工具现已整合到此处。SNS、药品和公交工具现在带有前缀(sns_、medicine_、bus_),以便在 47 个工具中明确区分。
许可证
MIT。数据归其发布者所有,使用时遵循其开放数据条款;重新使用时请注明来源。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。