mcp-swiss

Servidor MCP de datos abiertos suizos — transporte, clima, geodatos, empresas, etc. Sin claves API.

Documentación

mcp-swiss

mcp-swiss

Datos abiertos suizos para IA — cero configuración, cero claves API

npm CI License MCP Downloads Stars Node .mcpb Claude Desktop

Instalación · Herramientas · Demo · Fuentes de datos


mcp-swiss es un servidor de Model Context Protocol que brinda a cualquier asistente de IA acceso directo a datos abiertos suizos: trenes, clima, ríos, mapas y empresas.

76 herramientas. Sin claves API. Sin registro. Sin servidor que ejecutar. Solo 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

Instalación

Inicio rápido

npx mcp-swiss

Eso es todo. Sin claves API, sin archivos .env, sin cuentas. Elige tu cliente a continuación y pega la configuración.


Instalación con un clic (.mcpb)

Los paquetes .mcpb funcionan con Claude Desktop y cualquier aplicación compatible con MCP Bundle.

⬇ Descargar mcp-swiss.mcpb

Install in Claude Desktop

Abre el archivo descargado: tu aplicación se encarga del resto. Sin editar configuración, sin terminal, sin claves API.


Claude Desktop

Edita tu archivo de configuración:

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

Reinicia Claude Desktop después de guardar.


Claude Code (CLI)

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

Eso es todo: Claude Code lo usará en tu próxima sesión.


Cursor

Requiere Cursor 0.45.6+

Opción A: Configuración del proyecto — crea .cursor/mcp.json en la raíz de tu proyecto:

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

Opción B: Configuración global — crea ~/.cursor/mcp.json:

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

Opción C: A través de la interfaz de configuración de Cursor

  1. Abre Configuración de Cursor
  2. Ve a Features → MCP Servers
  3. Haz clic en + Add new global MCP server
  4. Pega la configuración JSON anterior

VS Code (GitHub Copilot)

Instalación con un clic

Install in VS Code Install in VS Code Insiders

Instalación por 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"]}'

Configuración manual

Agrega a la configuración de usuario de VS Code (JSON) — presiona Ctrl+Shift+P → Preferences: Open User Settings (JSON):

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

O agrega a .vscode/mcp.json en tu espacio de trabajo (compartible con tu equipo):

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

Windsurf

Agrega a ~/.codeium/windsurf/model_config.json:

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

Cline (VS Code)

Abre settings.json de VS Code y agrega:

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

Cualquier cliente MCP

mcp-swiss usa transporte stdio y no requiere variables de entorno. La configuración universal:

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

Esto funciona con cualquier cliente compatible con MCP: solo conéctalo.

Docker

docker pull vikramgorla/mcp-swiss

Úsalo con cualquier cliente MCP que admita servidores basados en Docker. El contenedor usa transporte stdio:

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

# Use with Claude Desktop

Para Claude Desktop, actualiza tu configuración para usar Docker:

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

También disponible en GitHub Container Registry:

docker pull ghcr.io/vikramgorla/mcp-swiss

Filtrado de módulos

De forma predeterminada, mcp-swiss carga los 21 módulos (76 herramientas). Para una mejor eficiencia de tokens, carga solo los módulos que necesitas:

Seleccionar módulos específicos

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

Usar ajustes preestablecidos

{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss", "--preset", "commuter"]
    }
  }
}
Ajuste preestablecidoMódulosHerramientasAhorro de tokens
commutertransporte, clima, festivos1481%
outdoorclima, avalanchas, senderismo, terremotos, presas, nieve1975%
businessempresas, geodatos, correo, energía, estadísticas, snb2467%
citizenparlamento, votaciones, festivos, noticias1777%
minimaltransporte593%
fulllos 21 módulos (predeterminado)76—

Combina ajuste preestablecido + módulos: --preset commuter --modules parliament

Lista disponible: npx mcp-swiss --list-modules o npx mcp-swiss --list-presets


Prompts de demostración

Una vez conectado, prueba a preguntarle a tu IA:

PromptQué usa
"Próximos 5 trenes de Zúrich HB a Ginebra"get_connections
"¿Está el Aare en Berna lo suficientemente cálido para nadar?"get_water_level
"Clima en Lugano vs Zúrich hoy"get_weather
"Encuentra empresas de blockchain registradas en Zug"search_companies
"Potencial solar de Bundesplatz 3, Berna"geocode + get_solar_potential
"Salidas en vivo desde Berna HB"get_departures
"¿Qué ríos están cerca de Thun?"list_hydro_stations + get_water_level
"Planifica mi sábado: tren a Interlaken, revisa el clima"Múltiples herramientas encadenadas
"¿Es el próximo lunes festivo en Zúrich?"get_public_holidays
"¿Sobre qué votó recientemente el parlamento suizo?"search_parliament_business
"¿Cuál es el nivel de peligro de avalanchas en los Alpes berneses?"get_avalanche_bulletin
"¿Cuál es el código postal de Zermatt?"search_postcode
"Rastrea mi paquete de Swiss Post 99.12.345678.12345678"track_parcel
"¿Cuánto cuesta la electricidad en Zúrich vs Basilea?"search_municipality_energy + compare_electricity_tariffs
"¿Cuál es la población del cantón de Zug?"get_population

Herramientas

76 herramientas en 21 módulos. Especificaciones completas: docs/tool-specs.md · Legible por máquina: docs/tools.schema.json

🚆 Transporte (5 herramientas)

HerramientaDescripción
search_stationsEncuentra estaciones/paradas por nombre o ubicación
get_connectionsPlanificador de viajes entre dos puntos cualesquiera
get_departuresSalidas en vivo desde una estación
get_arrivalsLlegadas en vivo a una estación
get_nearby_stationsEstaciones cerca de coordenadas

🌤️ Clima e hidrología (6 herramientas)

HerramientaDescripción
get_weatherCondiciones actuales en una estación de MeteoSwiss
list_weather_stationsLas ~160 estaciones de MeteoSwiss con metadatos
get_weather_historyDatos meteorológicos históricos (hasta 32 días)
get_water_levelNivel de río/lago + temperatura (BAFU)
list_hydro_stationsLas más de 400 estaciones de monitoreo hidrológico
get_water_historyDatos hidrológicos históricos

🗺️ Geodatos / swisstopo (6 herramientas)

HerramientaDescripción
geocodeDirección suiza → coordenadas
reverse_geocodeCoordenadas → dirección suiza
search_placesNombres de lugares suizos, montañas, lagos, accidentes geográficos
get_solar_potentialIrradiación solar en tejados en una ubicación
identify_locationTodas las capas de datos geográficos en un punto
get_municipalityInformación del municipio por nombre

🏢 Empresas / ZEFIX (5 herramientas)

HerramientaDescripción
search_companiesBúsqueda por nombre, cantón, forma jurídica
get_companyDetalles completos de la empresa por ZEFIX ehraid
search_companies_by_addressEmpresas registradas en una dirección
list_cantonsLos 26 cantones suizos
list_legal_formsAG, GmbH y todas las formas jurídicas suizas

🎄 Festivos (3 herramientas)

HerramientaDescripción
get_public_holidaysFestivos públicos suizos por año, opcionalmente filtrados por cantón
get_school_holidaysPeríodos de vacaciones escolares por año y cantón
is_holiday_todayVerificación rápida si hoy es festivo

🏛️ Parlamento (9 herramientas) — OpenParlData.ch

HerramientaDescripción
search_parliament_businessBuscar asuntos políticos federales (proyectos de ley, mociones, preguntas)
get_parliament_membersListar miembros del parlamento por cantón, partido o actividad
get_parliament_votesResultados de votaciones para un asunto específico
get_session_scheduleSesiones parlamentarias próximas/recientes
search_parliament_speechesDiscursos de debate para un asunto
get_politician_interestsIntereses y mandatos declarados de un miembro
search_cantonal_affairsBúsqueda en los 26 parlamentos cantonales
get_parliamentary_documentsDocumentos oficiales para un asunto
get_committee_meetingsAgenda de reuniones de comités/comisiones

🏔️ Avalanchas (2 herramientas)

HerramientaDescripción
get_avalanche_bulletinBoletín de avalanchas actual con niveles de peligro y enlaces PDF
list_avalanche_regionsLas 22 regiones suizas de alerta de avalanchas

💨 Calidad del aire (2 herramientas)

HerramientaDescripción
list_air_quality_stationsLas 14 estaciones de monitoreo NABEL
get_air_qualityInformación de la estación, límites legales suizos (LRV) y enlaces de datos BAFU

📮 Swiss Post (4 herramientas)

HerramientaDescripción
lookup_postcodePLZ → localidad, cantón, coordenadas
search_postcodeNombre de ciudad → códigos postales coincidentes
list_postcodes_in_cantonTodos los códigos postales en un cantón
track_parcelGenerar URL de seguimiento de Swiss Post para un paquete

⚡ Precios de energía (3 herramientas)

HerramientaDescripción
get_electricity_tariffTarifa de electricidad por municipio con desglose de componentes
compare_electricity_tariffsComparar precios de electricidad entre municipios
search_municipality_energyEncontrar ID de municipio para consulta de tarifas

📊 Estadísticas / BFS (3 herramientas)

HerramientaDescripción
get_populationPoblación por cantón o municipio de BFS STATPOP
search_statisticsBuscar conjuntos de datos BFS en opendata.swiss
get_statisticObtener información detallada del conjunto de datos

🏦 Tipos de cambio SNB (3 herramientas)

HerramientaDescripción
list_currenciesListar todas las monedas disponibles del Banco Nacional Suizo (SNB)
get_exchange_rateObtener el tipo de cambio CHF actual para cualquier moneda
get_exchange_rate_historyObtener tipos de cambio mensuales históricos de CHF con filtrado por fecha

♻️ Reciclaje / Recogida de residuos (3 herramientas)

HerramientaDescripción
get_waste_collectionPróximas fechas de recogida de residuos por código postal de Zúrich y tipo de residuo
list_waste_typesListar todos los tipos de residuos admitidos con descripciones
get_waste_calendarCalendario completo de recogida de residuos para un código postal (próximas fechas)

📰 Noticias suizas (2 herramientas)

HerramientaDescripción
get_swiss_newsÚltimos titulares suizos de SRF por categoría (Suiza/internacional/economía)
search_swiss_newsBuscar noticias de SRF por palabra clave en todas las categorías

🗳️ Votaciones (3 herramientas)

HerramientaDescripción
get_voting_resultsResultados de votaciones populares suizas de datos abiertos de Basilea-Ciudad
search_votesBuscar votaciones populares por palabra clave (alemán/francés/italiano)
get_vote_detailsDesglose detallado por distrito de una votación específica

🌊 Presas y embalses (3 herramientas)

HerramientaDescripción
search_damsBuscar presas federales suizas por nombre o palabra clave
get_dams_by_cantonListar todas las presas federales en un cantón
get_dam_detailsInformación detallada sobre una presa específica (altura, volumen, propósito)

🥾 Senderismo / Cierres de senderos (2 herramientas)

HerramientaDescripción
get_trail_closuresCierres de senderos y alertas de senderismo suizos de swisstopo
get_trail_closures_nearbyCierres de senderos cerca de coordenadas dadas

🏠 Bienes raíces (3 herramientas)

HerramientaDescripción
get_property_price_indexÍndice de precios de propiedades suizas (BFS Immo-Monitoring)
search_real_estate_dataBuscar conjuntos de datos de bienes raíces BFS en opendata.swiss
get_rent_indexÍndice de alquiler suizo y datos de costos de vivienda de BFS

🚗 Tráfico / ASTRA (3 herramientas)

HerramientaDescripción
get_traffic_countDatos de estaciones de conteo de tráfico (ASTRA) — volúmenes diarios y proporción de tráfico pesado
get_traffic_by_cantonListar estaciones de conteo de tráfico ASTRA filtradas por cantón
get_traffic_nearbyEncontrar estaciones de conteo de tráfico cerca de coordenadas dadas

🌍 Terremotos / SED (3 herramientas)

HerramientaDescripción
get_recent_earthquakesEventos sísmicos recientes en Suiza y alrededores del Servicio Sismológico Suizo (SED) de la ETH Zúrich
get_earthquake_detailsDetalles completos de un evento sísmico específico por ID de evento del SED
search_earthquakes_by_locationTerremotos cerca de coordenadas dadas con radio, rango de tiempo y límite configurables

❄️ Condiciones de nieve / SLF (3 herramientas)

HerramientaDescripción
get_snow_conditionsProfundidad de nieve actual y nieve nueva (24 h) en toda Suiza de las estaciones IMIS del SLF, filtrable por cantón/altitud
list_snow_stationsLas 307 estaciones de medición de nieve del SLF (IMIS automáticas + parcelas de estudio manuales)
get_snow_measurementsMediciones detalladas de nieve y meteorológicas para una estación específica del SLF

Fuentes de datos

Todos los datos abiertos oficiales suizos — sin necesidad de claves API:

FuenteDatosDocumentación
transport.opendata.chSBB, PostBus, tranvíasDocumentación API
api.existenz.chMeteorología de MeteoSwiss + hidrología de BAFUDocumentación API
api3.geo.admin.chGeodatos federales de swisstopoDocumentación API
zefix.admin.chRegistro federal de empresasSwagger
openholidaysapi.orgFestivos públicos y escolares suizosDocumentación API
OpenParlData.chDatos del Parlamento suizo — federal y cantonal (CC BY 4.0)Documentación API
whiterisk.ch / aws.slf.chBoletines de avalanchas SLF/WSLSLF
geo.admin.ch — BAFU/NABELEstaciones suizas de monitoreo de calidad del aireBAFU NABEL
geo.admin.ch — swisstopoCódigos postales suizos (Amtliches Ortschaftenverzeichnis)geo.admin.ch
strompreis.elcom.admin.chTarifas eléctricas de ElCom por municipioElCom
pxweb.bfs.admin.ch + opendata.swissEstadísticas de población BFS (STATPOP) + conjuntos de datosBFS
data.snb.chTipos de cambio CHF del Banco Nacional SuizoPortal de datos SNB
openerz.metaodi.chCalendario de recogida de residuos de Zúrich (OpenERZ)OpenERZ
srf.chTitulares de noticias suizas SRFSRF
data.bs.chResultados de votaciones populares de Basilea-CiudadOpen Data BS
geo.admin.ch — SFOERegistro federal suizo de presasSFOE
geo.admin.ch — swisstopoCierres de senderos y alertas de senderismo en Suizaswisstopo
pxweb.bfs.admin.chPrecios de propiedades BFS + índice de alquilerBFS vivienda
geo.admin.ch — ASTRAEstaciones de conteo de tráfico + volúmenes diariosASTRA
arclink.ethz.chTerremotos del Servicio Sismológico Suizo (SED/ETH)SED
measurement-api.slf.chProfundidad de nieve SLF + mediciones (IMIS + parcelas de estudio, CC BY 4.0)SLF

Desarrollo

# 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

Pruebas

npm test

Contribuciones

¡Agradecemos las contribuciones! mcp-swiss sigue un flujo de trabajo estricto basado en PR para mantener el código limpio y el CI siempre en verde.

Enlaces rápidos

  • CONTRIBUTING.md — guía completa para contribuidores:

    • Configuración del desarrollo (clonar, instalar, compilar, probar)
    • Modelo de ramas (develop / main / ramas de características)
    • Reglas estrictas del flujo de trabajo (sin pushes directos, siempre PRs, solo merge regular)
    • Añadir un nuevo módulo (paso a paso con plantillas de código)
    • Lista de verificación de integración (todos los archivos a actualizar)
    • Estándares de código (TypeScript, sin any, límite de respuesta de 50K, cero claves API)
  • RELEASING.md — proceso de lanzamiento para mantenedores:

    • Flujo de trabajo de lanzamiento paso a paso
    • Lista de verificación previa al lanzamiento
    • Estrategia de versiones (minor para funciones, patch para correcciones)
    • Verificación posterior al lanzamiento
    • Referencia del flujo de trabajo CI/CD (ci.yml, release.yml, beta.yml, mcp-registry.yml)

Requisitos

  • Node.js 20+
  • No se necesitan claves API ni cuentas

Licencia

MIT — ver LICENSE