search_stations
Search public transport stations/stops by name or coordinates
xytypequeryio.github.vikramgorla由 GitHub 账号 vikramgorla 发布v0.9.0更新于 Nov 3, 2026
瑞士开放数据 MCP 服务器。94 个工具,无需 API 密钥。涵盖交通、天气、地理数据、目录。
AI 翻译由 AI 模型根据下方的原文描述翻译,可能有误。
Swiss open data MCP server. 94 tools, zero API keys. Transport, weather, geodata, catalogue.
Switzerland MCP 🇨🇭 的本地 MCP 服务;无需登录;STDIO;94 个工具。
暂无 AI 概览:以下信息来自注册中心条目和服务本身。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
Swiss open data for AI — zero config, zero API keys
[npm] [CI] [License] [MCP] [Downloads] [Stars] [Node] [.mcpb] [Claude Desktop] [MCP Registry] [Awesome MCP Servers] [Glama]
Install · Tools · Demo · Data Sources
mcp-swiss is a Model Context Protocol server that gives any AI assistant direct access to Swiss open data — trains, weather, rivers, maps, and companies.
94 tools. No API keys. No registration. No server to run. Just npx mcp-swiss.
That's it. No API keys, no .env files, no accounts. Pick your client below and paste the config.
.mcpb bundles work with Claude Desktop and any MCP Bundle-compatible app.
Open the downloaded file — your app handles the rest. No config editing, no terminal, no API keys.
Edit your config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonRestart Claude Desktop after saving.
That's it — Claude Code will use it in your next session.
Requires Cursor 0.45.6+
Option A: Project config — create .cursor/mcp.json in your project root:
Option B: Global config — create ~/.cursor/mcp.json:
Option C: Via Cursor Settings UI
[Install in VS Code] [Install in VS Code Insiders]
Add to your VS Code User Settings (JSON) — press Ctrl+Shift+P → Preferences: Open User Settings (JSON):
Or add to .vscode/mcp.json in your workspace (shareable with your team):
Add to ~/.codeium/windsurf/model_config.json:
Open VS Code settings.json and add:
mcp-swiss uses stdio transport and requires no environment variables. Upstream calls time out after 30 seconds (MCP_SWISS_TIMEOUT_MS overrides that) and retry once on a dropped connection or a rate limit. The universal config:
This works with any MCP-compatible client — just plug it in.
Use with any MCP client that supports Docker-based servers. The container uses stdio transport:
For Claude Desktop, update your config to use Docker:
Also available on GitHub Container Registry:
stdio is still the default. For a local HTTP client, run:
That listens on 127.0.0.1:3000 and serves MCP at POST /mcp (also GET and DELETE) plus GET /health. --port, --host, PORT, HOST, and MCP_TRANSPORT=http are the other switches.
A bind that is not loopback (127.0.0.1, localhost, or ::1) refuses to start unless both MCP_AUTH_TOKEN and MCP_ALLOWED_HOSTS are set. Sessions are capped (MCP_MAX_SESSIONS, default 64) and idle ones expire. This is the transport half of #64. It does not deploy a hosted instance.
By default, mcp-swiss loads all 27 modules (94 tools). The full tools/list schema is about 9,300 tokens (37,011 characters). For a smaller startup list, load only the modules you need.
Search, then execute. The server lists three meta-tools instead of every schema (about 330 tokens versus about 9,300):
MCP_SWISS_MODE=discovery and --mode discovery do the same thing. swiss_search_tools finds tools by keyword or module and returns their input schemas. swiss_call_tool checks those arguments, then runs the tool. swiss_list_modules is the catalog. The default, with no flag, is still the full tool list.
Combine preset + modules: --preset commuter --modules parliament
List available: npx mcp-swiss --list-modules or npx mcp-swiss --list-presets
Once connected, try asking your AI:
94 tools across 27 modules. Full specifications:
docs/tool-specs.md· Machine-readable:docs/tools.schema.json
All official Swiss open data — no API keys required:
We welcome contributions! mcp-swiss follows a strict PR-based workflow to keep the codebase clean and CI always green.
CONTRIBUTING.md — full contributor guide:
any, 50K response limit, zero API keys)RELEASING.md — release process for maintainers:
ci.yml, release.yml, beta.yml, mcp-registry.yml)MCP_SWISS_TIMEOUT_MS — per-request upstream timeout in milliseconds (default 30000)MIT — see LICENSE
来源:README.md,提交 c12e6e5
Search public transport stations/stops by name or coordinates
xytypequeryTrain/bus connections between two locations
to必填datefrom必填timelimitisArrivalTimeLive departures from a station
limitstation必填datetimeLive arrivals at a station
limitstation必填datetimeStations near coordinates
x必填y必填limitdistanceCurrent weather at a MeteoSwiss station. For past dates use get_weather_history
station必填List MeteoSwiss weather station codes
无需输入参数。
Historical weather readings for a MeteoSwiss station. Only the last 32 days are available
station必填end_date必填resolutionstart_date必填Current river/lake level and temperature at a BAFU hydro station
station必填List BAFU hydro station IDs (rivers, lakes)
无需输入参数。
Historical river/lake levels for a BAFU hydro station. Only the last 32 days are available
station必填end_date必填resolutionstart_date必填Address or place name to WGS84 coordinates (swisstopo)
address必填WGS84 coordinates to address (swisstopo)
lat必填lng必填Search place names, localities, mountains, geographic features
query必填Rooftop solar potential at a location
lat必填lng必填Geographic features and swisstopo data layers at a location
lat必填lng必填layersMunicipality info by name
name必填Search the ZEFIX commercial register by company name, optionally filtered by canton/legal form
name必填limitcantonlegal_formFull company details by ZEFIX ehraid (from search_companies)
ehraid必填Companies whose registered seat is in a commune/town. ZEFIX has no street-address search
namelimitlocality必填List cantons with codes
无需输入参数。
List company legal forms (AG, GmbH, ...) with the ids used by search_companies
无需输入参数。
Public holidays for a year, national and cantonal
year必填cantonSchool holiday periods for a year, by canton
year必填cantonWhether today is a public holiday
cantonFull-text search of federal parliament affairs (bills, motions, interpellations, postulates, questions, initiatives). For cantonal parliaments use search_cantonal_affairs
limitquery必填Federal parliament members (National Council, Council of States), filterable by canton/party
limitpartyactivecantonRecorded votes on a parliamentary affair (Geschäft)
affair_id必填Upcoming and recent federal parliament sessions
limitDebate speeches on a parliamentary affair
limitaffair_id必填Declared interests and mandates (boards, consulting roles) of a federal parliament member
person_id必填Search affairs in a cantonal parliament (Kantonsrat), all 26 cantons
limitquerycanton必填Official documents (reports, committee opinions, Federal Council statements) for a parliamentary affair
limitaffair_id必填Federal parliament committee meeting schedule
limitgroup_idLive SLF avalanche bulletin: danger level (1-5), avalanche problems with aspect and elevation, validity and advice text, for one warning region, a coordinate, or all of Switzerland. Outside the winter season it reports that no bulletin is in force
latlondateregionlanguageThe 135 SLF/EAWS avalanche warning regions (id, name, canton) for get_avalanche_bulletin
cantonsearchList NABEL air-quality monitoring stations (BAFU/Empa)
无需输入参数。
NABEL station info: location, environment type, legal limits (LRV) and a link to BAFU live data (no measurements returned)
station必填Locality, canton and coordinates for a postcode (PLZ)
postcode必填Postcodes (PLZ) for a city/locality name
city_name必填List postcodes (PLZ) in a canton
canton必填Swiss Post tracking page URL for a tracking number (no live status: there is no public tracking API)
tracking_number必填ElCom electricity tariff (Rp./kWh) for a municipality, with component breakdown
yearcategorymunicipality必填Compare electricity tariffs across 2–20 municipalities
yearcategorymunicipalities必填Find municipality BFS numbers for the electricity tariff tools
name必填Permanent resident population (BFS STATPOP) for Switzerland, a canton or all cantons
yearcantonSearch BFS datasets on opendata.swiss
limitquery必填Details and resource links for a BFS dataset by opendata.swiss ID (from search_statistics)
dataset_id必填List currencies with SNB CHF exchange rates
无需输入参数。
Latest SNB monthly-average CHF exchange rate for a currency
currency必填Historical SNB monthly-average CHF exchange rates (default: last 90 months)
tofromcurrency必填Upcoming waste collection dates for a ZIP code. Zurich city only (8001–8099, OpenERZ)
zip必填typelimitList waste collection types. Zurich city only (OpenERZ)
无需输入参数。
Monthly waste collection calendar for a ZIP code. Zurich city only (8001–8099, OpenERZ)
zip必填yearmonthLatest SRF news headlines
limitcategoryKeyword search in current SRF headlines (all categories)
limitquery必填Popular vote (Volksabstimmung) results as counted in Basel-Stadt: national and cantonal votes since 2021
yearlimitSearch popular votes by title keyword (Basel-Stadt results)
limitquery必填Per-district Basel-Stadt results (Basel, Riehen, Bettingen, abroad) for one vote. Give vote_title and/or date
datevote_titleSearch federally supervised dams by dam or reservoir name (SFOE)
query必填Federally supervised dams in a canton
limitcanton必填Full technical details of one dam by name
name必填Current hiking trail closures and detours (ASTRA/Schweizer Wanderwege)
typelimitreasonHiking trail closures and detours near a WGS84 point
lat必填lon必填radiusBFS residential property price index (IMPI), quarterly since 2017Q1, Q4 2019 = 100
tofromtypeSearch opendata.swiss for real-estate/housing datasets (prices, rents, construction, vacancies)
limitquery必填BFS consumer price index (CPI/LIK, incl. rents), monthly, Dec 1982 = 100. Not a dedicated rent index; for purchase prices use get_property_price_index
yearlimitASTRA traffic counting station volumes by location name
location必填ASTRA traffic counting stations in a canton (max 20)
canton必填ASTRA traffic counting stations near a WGS84 point
lat必填lon必填radiusRecent earthquakes in and around Switzerland (SED, ETH Zürich)
dayslimitmin_magnitudeinclude_blastsFull details of one seismic event by SED event ID
event_id必填Earthquakes within a radius of a WGS84 point (SED)
lat必填lon必填dayslimitradius_kmmin_magnitudeCurrent snow depth and 24h new snow at SLF IMIS stations, deepest first
limitcantonmin_altitudeList SLF snow stations (IMIS automatic, manual study plots)
typelimitcantonMeasurements for one SLF station: IMIS 30-min snow/weather data, or study-plot daily snow data
typestation_code必填Latest hourly pollen concentrations (alder, birch, hazel, beech, ash, oak, grasses) at a MeteoSwiss station
station必填Daily average pollen concentrations at a MeteoSwiss station
daysstation必填List MeteoSwiss pollen stations
cantonFind buildings in the federal buildings register (GWR/RegBL) by address; gives EGIDs for get_building
limitaddress必填Full GWR record of one building by EGID: construction, floors, areas, heating/hot-water system and energy source, parcel (EGRID), entrances, dwellings
egid必填max_dwellingsGWR buildings nearest a WGS84 point (small radius), with EGIDs
lat必填lon必填limitradiusSearch the Swiss open data catalogue (opendata.swiss) for datasets. Returns titles, publishers, and dataset ids. Optional organization slug narrows results to one publisher (e.g. bundesamt-fur-statistik-bfs). Source: opendata.swiss CKAN API.
limitquery必填organizationGet metadata for one opendata.swiss dataset by its catalogue name or UUID. Includes the publisher, description, keywords, and a short resource summary. Use list_opendata_resources for the full download list.
dataset_id必填List downloadable resources (files and services) for an opendata.swiss dataset. Optional format filter such as CSV, JSON, or WMS.
limitformatdataset_id必填List MeteoSwiss Open Government Data stations from a STAC collection on data.geo.admin.ch. Defaults to SwissMetNet automatic weather stations (smn). Other station collections: smn-precip, smn-tower, nime, nbcn, nbcn-precip, obs, phenology, tot. Filter by canton or a name/code search.
limitquerycantoncollectionGet the latest MeteoSwiss OGD measurements for one station by reading the STAC CSV asset (10-minute/hourly 'now' file when available, otherwise the recent file). Times are Swiss local time. Use list_ogd_stations for codes such as BER, SMA, LUG.
limitstation必填collectionparametersgranularityGet historical MeteoSwiss OGD measurements for one station and date range by parsing the STAC CSV assets. Daily data defaults to the smaller recent/historical files. Hourly history is limited to 14 days because decade files are large. Times are Swiss local time (no offset).
limitstation必填end_date必填collectionparametersstart_date必填granularitySearch or list layers in the geo.admin ech MapServer catalogue (all federal geospatial layers). Returns layer ids that identify_map_layer and find_map_features accept. Without a query, returns the first page of layers alphabetically.
limitownerqueryIdentify geo.admin features at a WGS84 point on one ech MapServer layer. Use search_map_layers to find the layer id. Historical time-series layers keep only the current feature unless include_historical is true.
lat必填lng必填langlayer必填limittoleranceinclude_historicalFind geo.admin features on one ech MapServer layer by an attribute value. Identify a point first if you need the attribute names. Example: layer ch.swisstopo.swissboundaries3d-gemeinde-flaeche.fill, search_field gemname, search_text Bern.
layer必填limitcontainssearch_text必填search_field必填include_historicalPassenger counts for an SBB station from the data.sbb.ch frequency dataset. Returns average daily, weekday, and weekend boardings and alightings (Ein- und Aussteigende). Newest year first.
yearlimitstation必填containsPunctuality for an SBB stop on the previous operating day (ist-daten-sbb target vs actual times). Returns stop counts, arrival and departure delay counts, cancellations, and a short sample of delayed arrivals. A stop is delayed when SBB flags it, which is generally a delay of about three minutes or more.
linelimitstation必填containsPlatform accessibility for an SBB station: platform number, length, type, and whether access is rail-free (step-free). Source: data.sbb.ch platform dataset.
limitstation必填contains已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
🚆 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 the published stations🏠 Buildings — Federal register of buildings and dwellings (GWR)📂 Catalogue — opendata.swiss dataset search, metadata, and downloads🌡️ Meteo OGD — SwissMetNet stations and measurements (STAC CSV)🧭 Map layers — geo.admin layer search, identify, and attribute find🚉 SBB Data — station passengers, punctuality, and step-free accessnpx mcp-swiss{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}claude mcp add swiss -- npx -y mcp-swiss{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}# VS Codecode --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'
# VS Code Insiderscode-insiders --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'{ "mcp": { "servers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } } }}{ "servers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}{ "cline.mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } }}{ "command": "npx", "args": ["-y", "mcp-swiss"]}docker pull vikramgorla/mcp-swiss# Run directly (stdio)docker run -i vikramgorla/mcp-swiss
# Use with Claude Desktop{ "mcpServers": { "swiss": { "command": "docker", "args": ["run", "-i", "--rm", "vikramgorla/mcp-swiss"] } }}docker pull ghcr.io/vikramgorla/mcp-swissnpx mcp-swiss --http{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--discovery"] } }}{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--modules", "transport,weather"] } }}{ "mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--preset", "commuter"] } }}# Clonegit clone https://github.com/vikramgorla/mcp-swiss.gitcd mcp-swiss
# Install depsnpm install
# Buildnpm run build
# Run in dev modenpm run dev
# Test with MCP Inspectornpx @modelcontextprotocol/inspector node dist/index.jsnpm test