MCP Hub
Back to servers

mcp-swiss

Swiss open data MCP server — transport, weather, geodata, companies. Zero API keys.

npm1.6k/wk
Updated
Mar 7, 2026

Quick Install

npx -y mcp-swiss
mcp-swiss

mcp-swiss

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

npm CI License MCP

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.

22 tools. No API keys. No registration. No server to run. Just 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

Installation

Quick Start

npx mcp-swiss

That's it. No API keys, no .env files, no accounts. Pick your client below and paste the config.


Claude Desktop

Edit your config file:

  • 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"]
    }
  }
}

Restart Claude Desktop after saving.


Claude Code (CLI)

claude mcp add swiss -- npx -y mcp-swiss

That's it — Claude Code will use it in your next session.


Cursor

Requires Cursor 0.45.6+

Option A: Project config — create .cursor/mcp.json in your project root:

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

Option B: Global config — create ~/.cursor/mcp.json:

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

Option C: Via Cursor Settings UI

  1. Open Cursor Settings
  2. Go to Features → MCP Servers
  3. Click + Add new global MCP server
  4. Paste the JSON config above

VS Code (GitHub Copilot)

One-click Install

Install in VS Code Install in VS Code Insiders

CLI Install

# 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"]}'

Manual Config

Add to your VS Code User Settings (JSON) — press Ctrl+Shift+PPreferences: Open User Settings (JSON):

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

Or add to .vscode/mcp.json in your workspace (shareable with your team):

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

Windsurf

Add to ~/.codeium/windsurf/model_config.json:

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

Cline (VS Code)

Open VS Code settings.json and add:

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

Any MCP Client

mcp-swiss uses stdio transport and requires no environment variables. The universal config:

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

This works with any MCP-compatible client — just plug it in.


Demo Prompts

Once connected, try asking your AI:

PromptWhat it uses
"Next 5 trains from Zürich HB to Geneva"get_connections
"Is the Aare in Bern warm enough to swim?"get_water_level
"Weather in Lugano vs Zürich today"get_weather
"Find blockchain companies registered in Zug"search_companies
"Solar potential of Bundesplatz 3, Bern"geocode + get_solar_potential
"Live departures from Bern HB"get_departures
"What rivers are near Thun?"list_hydro_stations + get_water_level
"Plan my Saturday: train to Interlaken, check weather"Multiple tools chained

Tools

Full specifications: docs/tool-specs.md · Machine-readable: docs/tools.schema.json

🚆 Transport (5 tools)

ToolDescription
search_stationsFind stations/stops by name or location
get_connectionsJourney planner between any two points
get_departuresLive departures from a station
get_arrivalsLive arrivals at a station
get_nearby_stationsStations near coordinates

🌤️ Weather & Hydrology (6 tools)

ToolDescription
get_weatherCurrent conditions at a MeteoSwiss station
list_weather_stationsAll ~160 MeteoSwiss stations with metadata
get_weather_historyHistorical weather data (up to 32 days)
get_water_levelRiver/lake level + temperature (BAFU)
list_hydro_stationsAll 400+ hydrological monitoring stations
get_water_historyHistorical hydrology data

🗺️ Geodata / swisstopo (6 tools)

ToolDescription
geocodeSwiss address → coordinates
reverse_geocodeCoordinates → Swiss address
search_placesSwiss place names, mountains, lakes, features
get_solar_potentialRooftop solar irradiation at a location
identify_locationAll geographic data layers at a point
get_municipalityMunicipality info by name

🏢 Companies / ZEFIX (5 tools)

ToolDescription
search_companiesSearch by name, canton, legal form
get_companyFull company details by ZEFIX ehraid
search_companies_by_addressCompanies registered at an address
list_cantonsAll 26 Swiss cantons
list_legal_formsAG, GmbH, and all Swiss legal forms

Data Sources

All official Swiss open data — no API keys required:

SourceDataDocs
transport.opendata.chSBB, PostBus, tramsAPI docs
api.existenz.chMeteoSwiss weather + BAFU hydrologyAPI docs
api3.geo.admin.chswisstopo federal geodataAPI docs
zefix.admin.chFederal company registrySwagger

Development

# 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

Testing

npm test

Contributing

mcp-swiss uses Speckit — a spec-driven development workflow. Every new tool starts with a spec in specs/, not code.

See CONTRIBUTING.md for the full workflow including:

  • How to add a new tool (spec → plan → implement → test)
  • Testing requirements (unit + integration + MCP protocol)
  • Code style and ESLint rules
  • Branch naming and PR process

Requirements

  • Node.js 20+
  • No API keys or accounts needed

License

MIT — see LICENSE

Reviews

No reviews yet

Sign in to write a review