mcpField
S
Swiss open data for AI — zero config, zero API keys

Swiss open data for AI — zero config, zero API keys

本地服务
github.com/vikramgorla开发工具254 周前更新

关于 Swiss open data for AI — zero config, zero API keys

mcp-swiss 是一个 MCP 服务,为 AI 助手提供瑞士开放数据访问,涵盖交通、天气、水文、地理数据、企业登记等领域。无需 API 密钥、注册或额外部署,可通过 npx 直接启动,适合需要瑞士本地信息的用户与开发者。

主要功能

  1. 01覆盖 22 个模块共 79 个工具
  2. 02无需 API 密钥与账户注册
  3. 03支持按模块或预设筛选加载工具
  4. 04数据来源包括 SBB、MeteoSwiss、BAFU 与 ZEFIX
  5. 05通过 stdio 传输接入多种 MCP 客户端

适用场景

  1. 01查询列车班次与路线规划
  2. 02查看河流与湖泊水位及水温
  3. 03检索瑞士企业登记信息与地址

MCP 相关

该项目是一个 MCP 服务,通过 stdio 传输向 MCP 客户端暴露交通、天气、地理与统计等工具。用户可用 --modules 或 --preset 参数限制加载的模块以减少 token 消耗。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"swiss": {
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}
启动命令npx -y mcp-swiss

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-swiss0.7.1

工具

76

收录的工具列表 · 更新于 3 周前

参数类型必填说明
querystring否要搜索的车站名称
xnumber否经度(WGS84)
ynumber否纬度(WGS84)
typestring否筛选:全部、车站、兴趣点、地址

详细介绍

瑞士 MCP

mcp-swiss

面向 AI 的瑞士开放数据——零配置、无需 API 密钥

npm CI License MCP Downloads Stars Node .mcpb Claude Desktop

安装 · 工具 · 演示 · 数据源


mcp-swiss 是一个 Model Context Protocol 服务,让任何 AI 助手都能直接访问瑞士开放数据——火车、天气、河流、地图和公司信息。

79 个工具。无需 API 密钥。无需注册。无需运行服务。只需运行 npx mcp-swiss。

🚆 Transport    — SBB, PostBus, trams, live departures, journey planning
🌤️ Weather      — MeteoSwiss live conditions + historical data
🌊 Hydrology    — BAFU river & lake levels (great for Aare swimming!)
🗺️ Geodata      — swisstopo geocoding, solar potential, geographic layers
🏢 Companies    — ZEFIX federal registry, all 700K+ Swiss companies
🎄 Holidays     — Swiss public & school holidays by canton
🏛️ Parliament   — Bills, votes, members, speeches, cantonal affairs (OpenParlData.ch)
🏔️ Avalanche    — SLF danger bulletins and warning regions
💨 Air Quality  — NABEL stations, Swiss legal limits (LRV)
📮 Swiss Post   — Postcode lookup and parcel tracking
⚡ Energy       — Electricity tariffs by municipality (ElCom)
📊 Statistics   — Population, demographics, BFS datasets
🏦 SNB Rates    — Swiss National Bank CHF exchange rates, historical data
♻️ Recycling    — Zurich city waste collection calendar (OpenERZ)
📰 Swiss News   — SRF news headlines and keyword search
🗳️ Voting       — Swiss popular vote results (Basel-Stadt open data)
🌊 Dams         — Swiss federal dam registry (SFOE/swisstopo)
🥾 Hiking       — Swiss trail closures and hiking alerts (swisstopo)
🏠 Real Estate  — Swiss property prices, rent index, housing data (BFS)
🚗 Traffic      — ASTRA counting stations, daily volumes
🌍 Earthquakes  — Swiss Seismological Service (SED/ETH Zürich), FDSN API
❄️ Snow         — SLF snow depth, stations, and measurements
🌿 Pollen       — MeteoSwiss pollen concentrations at 16 stations

安装

快速开始
npx mcp-swiss

就这么简单。无需 API 密钥、无需 .env 文件,也无需账户。选择下方的客户端并粘贴配置即可。


一键安装(.mcpb)

.mcpb 捆绑包适用于 Claude Desktop 及任何兼容 MCP Bundle 的应用。

⬇ 下载 mcp-swiss.mcpb

安装到 Claude Desktop

打开下载的文件,后续操作由应用自动完成。无需编辑配置、无需使用终端,也无需 API 密钥。


Claude Desktop

编辑配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

保存后重启 Claude Desktop。


Claude Code(命令行)
claude mcp add swiss -- npx -y mcp-swiss

就这么简单——Claude Code 会在你的下一次会话中使用它。


Cursor

需要 Cursor 0.45.6+

选项 A:项目配置——在项目根目录创建 .cursor/mcp.json:

{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

选项 B:全局配置——创建 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

选项 C:通过 Cursor 设置界面

  1. 打开 Cursor 设置
  2. 前往 功能 → MCP 服务
  3. 点击 + 添加新的全局 MCP 服务
  4. 粘贴上方的 JSON 配置

VS Code(GitHub Copilot)
一键安装

在 VS Code 中安装 在 VS Code Insiders 中安装

CLI 安装
# VS Code
code --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'

# VS Code Insiders
code-insiders --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'
手动配置

添加到 VS Code 用户设置(JSON)中——按 Ctrl+Shift+P → Preferences: Open User Settings (JSON):

{
  "mcp": {
    "servers": {
      "swiss": {
        "command": "npx",
        "args": ["-y", "mcp-swiss"]
      }
    }
  }
}

或者添加到工作区中的 .vscode/mcp.json(可与团队共享):

{
  "servers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

Windsurf

添加到 ~/.codeium/windsurf/model_config.json:

{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

Cline(VS Code)

打开 VS Code settings.json 并添加:

{
  "cline.mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss"]
    }
  }
}

任意 MCP 客户端

mcp-swiss 使用 stdio 传输,无需环境变量。通用配置如下:

{
  "command": "npx",
  "args": ["-y", "mcp-swiss"]
}

此配置适用于任何兼容 MCP 的客户端——直接添加即可。

Docker
docker pull vikramgorla/mcp-swiss

可与任何支持基于 Docker 的服务的 MCP 客户端配合使用。容器使用 stdio 传输:

# Run directly (stdio)
docker run -i vikramgorla/mcp-swiss

# Use with Claude Desktop

对于 Claude Desktop,请更新配置以使用 Docker:

{
  "mcpServers": {
    "swiss": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "vikramgorla/mcp-swiss"]
    }
  }
}

也可通过 GitHub Container Registry 获取:

docker pull ghcr.io/vikramgorla/mcp-swiss

模块筛选

默认情况下,mcp-swiss 会加载全部 22 个模块(79 个工具)。为提高令牌使用效率,只加载所需模块:

选择指定模块
{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss", "--modules", "transport,weather"]
    }
  }
}
使用预设
{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss", "--preset", "commuter"]
    }
  }
}
预设模块工具节省令牌
commutertransport、weather、holidays1481%
outdoorweather、avalanche、hiking、earthquakes、dams、snow1975%
businesscompanies、geodata、post、energy、statistics、snb2467%
citizenparliament、voting、holidays、news1777%
minimaltransport593%
full全部 22 个模块(默认)79—

组合使用预设和模块:--preset commuter --modules parliament

查看可用列表:npx mcp-swiss --list-modules 或 npx mcp-swiss --list-presets


示例提示词

连接后,可以尝试向 AI 提问:

提示词使用的工具
“从 Zürich HB 到 Geneva 的接下来 5 班列车”get_connections
“伯尔尼的阿勒河水温适合游泳吗?”get_water_level
“今天卢加诺和苏黎世的天气”get_weather
“查找在楚格注册的区块链公司”search_companies
“伯尔尼 Bundesplatz 3 的太阳能潜力”geocode + get_solar_potential
“伯尔尼 HB 的实时发车信息”get_departures
“图恩附近有哪些河流?”list_hydro_stations + get_water_level
“规划我的周六:乘火车去因特拉肯,查看天气”链式调用多个工具
“下周一在苏黎世是公共假日吗?”get_public_holidays
“瑞士议会最近投票表决了什么?”search_parliament_business
“伯尔尼高地的雪崩危险等级是多少?”get_avalanche_bulletin
“采尔马特的邮政编码是多少?”search_postcode
“追踪我的瑞士邮政包裹 99.12.345678.12345678”track_parcel
“苏黎世和巴塞尔的电费是多少?”search_municipality_energy + compare_electricity_tariffs
“楚格州的人口是多少?”get_population

工具

22 个模块共提供 79 个工具。完整规格:docs/tool-specs.md · 机器可读格式:docs/tools.schema.json

🚆 交通(5 个工具)
工具描述
search_stations按名称或位置查找车站/站点
get_connections规划任意两地之间的行程
get_departures查询车站的实时出发信息
get_arrivals查询车站的实时到达信息
get_nearby_stations查找坐标附近的车站
🌤️ 天气与水文(6 个工具)
工具描述
get_weather查询 MeteoSwiss 气象站的当前天气状况
list_weather_stations列出全部约 160 个 MeteoSwiss 气象站及其元数据
get_weather_history查询历史天气数据(最多 32 天)
get_water_level查询河流/湖泊水位及温度(BAFU)
list_hydro_stations列出全部 400 多个水文监测站
get_water_history查询历史水文数据
🗺️ 地理数据/swisstopo(6 个工具)
工具描述
geocode瑞士地址 → 坐标
reverse_geocode坐标 → 瑞士地址
search_places搜索瑞士地名、山脉、湖泊和地理特征
get_solar_potential查询地点的屋顶太阳能辐照量
identify_location查询某点的所有地理数据图层
get_municipality按名称查询市镇信息
🏢 公司/ZEFIX(5 个工具)
工具描述
search_companies按名称、州或法律形式搜索
get_company按 ZEFIX ehraid 查询完整公司详情
search_companies_by_address查询在某地址注册的公司
list_cantons列出全部 26 个瑞士州
list_legal_forms列出 AG、GmbH 及所有瑞士法律形式
🎄 节假日(3 个工具)
工具描述
get_public_holidays按年份查询瑞士公共假日,可按州筛选
get_school_holidays按年份和州查询学校假期时段
is_holiday_today快速检查今天是否为公共假日
🏛️ 议会(9 个工具)— OpenParlData.ch
工具描述
search_parliament_business搜索联邦政治事务(法案、动议、质询)
get_parliament_members按州、政党或活动情况列出议员
get_parliament_votes查询特定事务的投票结果
get_session_schedule查询即将举行/近期的议会会议
search_parliament_speeches搜索某项事务的辩论发言
get_politician_interests查询议员申报的利益和职务
search_cantonal_affairs搜索 26 个州议会的事务
get_parliamentary_documents查询某项事务的官方文件
get_committee_meetings查询委员会会议日程
🏔️ 雪崩(2 个工具)
工具描述
get_avalanche_bulletin查询当前雪崩公告,包括危险等级和 PDF 链接
list_avalanche_regions列出全部 22 个瑞士雪崩预警区
💨 空气质量(2 个工具)
工具描述
list_air_quality_stations列出全部 14 个 NABEL 监测站
get_air_quality查询站点信息、瑞士法定限值(LRV)及 BAFU 数据链接
📮 瑞士邮政(4 个工具)
工具描述
lookup_postcodePLZ → 地区、州、坐标
search_postcode城市名称 → 匹配的邮政编码
list_postcodes_in_canton列出某州的所有邮政编码
track_parcel为包裹生成瑞士邮政追踪 URL
⚡ 能源价格(3 个工具)
工具描述
get_electricity_tariff按市镇查询电价及各组成部分明细
compare_electricity_tariffs比较不同市镇的电价
search_municipality_energy查找用于查询电价的市镇 ID
📊 统计数据 / BFS(3 个工具)
工具描述
get_population根据 BFS STATPOP 查询州或市镇的人口
search_statistics搜索 opendata.swiss 上的 BFS 数据集
get_statistic获取数据集的详细信息
🏦 SNB 汇率(3 个工具)
工具描述
list_currencies列出瑞士国家银行(SNB)提供的所有货币
get_exchange_rate获取任意货币当前兑 CHF 汇率
get_exchange_rate_history获取历史月度 CHF 汇率,并按日期筛选
♻️ 回收 / 垃圾收集(3 个工具)
工具描述
get_waste_collection按苏黎世邮政编码和垃圾类型查询下一次收集日期
list_waste_types列出所有支持的垃圾类型及其说明
get_waste_calendar查询邮政编码对应的完整垃圾收集日历(即将到来的日期)
📰 瑞士新闻(2 个工具)
工具描述
get_swiss_news按类别(瑞士 / 国际 / 经济)获取 SRF 最新头条
search_swiss_news按关键词搜索所有类别的 SRF 新闻
🗳️ 投票(3 个工具)
工具描述
get_voting_results获取来自巴塞尔城市州开放数据的瑞士全民投票结果
search_votes按关键词搜索全民投票(德语 / 法语 / 意大利语)
get_vote_details获取特定投票按区划分的详细结果
🌊 水坝与水库(3 个工具)
工具描述
search_dams按名称或关键词搜索瑞士联邦水坝
get_dams_by_canton列出某个州的所有联邦水坝
get_dam_details获取特定水坝的详细信息(高度、库容、用途)
🥾 徒步 / 步道封闭(2 个工具)
工具描述
get_trail_closures获取 swisstopo 提供的瑞士步道封闭信息和徒步预警
get_trail_closures_nearby查询指定坐标附近的步道封闭信息
🏠 房地产(3 个工具)
工具描述
get_property_price_index瑞士房价指数(BFS Immo-Monitoring)
search_real_estate_data搜索 opendata.swiss 上的 BFS 房地产数据集
get_rent_index获取 BFS 提供的瑞士租金指数和住房成本数据
🚗 交通 / ASTRA(3 个工具)
工具描述
get_traffic_count交通计数站数据(ASTRA)——每日车流量和重型车辆占比
get_traffic_by_canton按州筛选并列出 ASTRA 交通计数站
get_traffic_nearby查找指定坐标附近的交通计数站
🌍 地震 / SED(3 个工具)
工具描述
get_recent_earthquakes获取瑞士及周边地区的近期地震事件,数据来自苏黎世联邦理工学院(ETH Zürich)的瑞士地震局(SED)
get_earthquake_details根据 SED 事件 ID 获取特定地震事件的完整详情
search_earthquakes_by_location搜索指定坐标附近的地震,并可配置搜索半径、时间范围和结果数量上限
❄️ 积雪状况 / SLF(3 个工具)
工具描述
get_snow_conditions获取 SLF IMIS 站点的瑞士当前雪深和 24 小时新雪量,可按州 / 海拔筛选
list_snow_stations列出全部 307 个 SLF 积雪测量站(IMIS 自动站及人工观测样地)
get_snow_measurements获取特定 SLF 站点的详细积雪和天气测量数据
🌿 Pollen / MeteoSwiss(3 个工具)
工具描述
get_pollen_currentMeteoSwiss 16 个监测站中任一站点的当前每小时花粉浓度(7 种:桤木、桦树、榛树、山毛榉、白蜡树、橡树、禾本科植物)
get_pollen_daily可配置时间范围内的每日花粉平均值,用于趋势分析
list_pollen_stationsMeteoSwiss 全部 16 个自动花粉监测站及其位置详情

数据源

所有数据均来自瑞士官方开放数据,无需 API 密钥:

来源数据文档
transport.opendata.chSBB、PostBus、有轨电车API 文档
api.existenz.chMeteoSwiss 天气 + BAFU 水文数据API 文档
api3.geo.admin.chswisstopo 联邦地理数据API 文档
zefix.admin.ch联邦企业注册信息Swagger
openholidaysapi.org瑞士公共假日和学校假期API 文档
OpenParlData.ch瑞士议会数据——联邦和州级(CC BY 4.0)API 文档
whiterisk.ch / aws.slf.chSLF/WSL 雪崩公告SLF
geo.admin.ch — BAFU/NABEL瑞士空气质量监测站BAFU NABEL
geo.admin.ch — swisstopo瑞士邮政编码(Amtliches Ortschaftenverzeichnis)geo.admin.ch
strompreis.elcom.admin.ch按市镇划分的 ElCom 电价ElCom
pxweb.bfs.admin.ch + opendata.swissBFS 人口统计(STATPOP)+ 数据集BFS
data.snb.ch瑞士国家银行 CHF 汇率SNB 数据门户
openerz.metaodi.ch苏黎世垃圾收集日历(OpenERZ)OpenERZ
srf.chSRF 瑞士新闻标题SRF
data.bs.ch巴塞尔城市州民众投票结果Open Data BS
geo.admin.ch — SFOE瑞士联邦水坝登记册SFOE
geo.admin.ch — swisstopo瑞士步道封闭信息和徒步警报swisstopo
pxweb.bfs.admin.chBFS 房产价格 + 租金指数BFS 住房
geo.admin.ch — ASTRA交通计数站 + 日流量ASTRA
arclink.ethz.ch瑞士地震局地震数据(SED/ETH)SED
measurement-api.slf.chSLF 积雪深度 + 测量数据(IMIS + 研究样地,CC BY 4.0)SLF
data.geo.admin.chMeteoSwiss 花粉浓度(16 个自动监测站,CC BY)MeteoSwiss

开发

# Clone
git clone https://github.com/vikramgorla/mcp-swiss.git
cd mcp-swiss

# Install deps
npm install

# Build
npm run build

# Run in dev mode
npm run dev

# Test with MCP Inspector
npx @modelcontextprotocol/inspector node dist/index.js
测试
npm test

贡献

欢迎贡献!mcp-swiss 遵循严格的 PR 工作流,以保持代码库整洁,并确保 CI 始终通过。

快速链接
  • CONTRIBUTING.md — 完整的贡献者指南:

    • 开发环境设置(克隆、安装、构建、测试)
    • 分支模型(develop / main / feature 分支)
    • 严格的工作流规则(不得直接推送、始终通过 PR、只允许常规合并)
    • 添加新模块(附分步说明和代码模板)
    • 集成检查清单(需要更新的所有文件)
    • 代码规范(TypeScript、不得使用 any、响应上限为 50K、不得包含 API 密钥)
  • RELEASING.md — 面向维护者的发布流程:

    • 分步发布工作流
    • 发布前检查清单
    • 版本策略(功能更新使用 minor 版本,修复使用 patch 版本)
    • 发布后验证
    • CI/CD 工作流参考(ci.yml、release.yml、beta.yml、mcp-registry.yml)

要求

  • Node.js 20+
  • 无需 API 密钥或账号

许可证

MIT — 参见 LICENSE

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。