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