mcp-swiss

Servidor MCP de dados abertos suíços — transporte, clima, geodados, empresas, etc. Zero chaves de API.

Documentação

mcp-swiss

mcp-swiss

Dados abertos suíços para IA — zero configuração, zero chaves de API

npm CI License MCP Downloads Stars Node .mcpb Claude Desktop

Instalação · Ferramentas · Demonstração · Fontes de Dados


mcp-swiss é um servidor Model Context Protocol que dá a qualquer assistente de IA acesso direto aos dados abertos suíços — trens, clima, rios, mapas e empresas.

76 ferramentas. Sem chaves de API. Sem registro. Sem servidor para executar. Apenas 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

Instalação

Início Rápido

npx mcp-swiss

É isso. Sem chaves de API, sem arquivos .env, sem contas. Escolha seu cliente abaixo e cole a configuração.


Instalação com Um Clique (.mcpb)

.mcpb bundles funcionam com Claude Desktop e qualquer aplicativo compatível com MCP Bundle.

⬇ Baixar mcp-swiss.mcpb

Install in Claude Desktop

Abra o arquivo baixado — seu aplicativo cuida do resto. Sem edição de configuração, sem terminal, sem chaves de API.


Claude Desktop

Edite seu arquivo de configuração:

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

Reinicie o Claude Desktop após salvar.


Claude Code (CLI)

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

É isso — o Claude Code usará na sua próxima sessão.


Cursor

Requer Cursor 0.45.6+

Opção A: Configuração do projeto — crie .cursor/mcp.json na raiz do seu projeto:

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

Opção B: Configuração global — crie ~/.cursor/mcp.json:

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

Opção C: Via interface de Configurações do Cursor

  1. Abra as Configurações do Cursor
  2. Vá para Features → MCP Servers
  3. Clique em + Adicionar novo servidor MCP global
  4. Cole a configuração JSON acima

VS Code (GitHub Copilot)

Instalação com Um Clique

Install in VS Code Install in VS Code Insiders

Instalação via 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"]}'

Configuração Manual

Adicione às Configurações de Usuário do VS Code (JSON) — pressione Ctrl+Shift+P → Preferences: Open User Settings (JSON):

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

Ou adicione a .vscode/mcp.json no seu workspace (compartilhável com sua equipe):

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

Windsurf

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

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

Cline (VS Code)

Abra settings.json do VS Code e adicione:

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

Qualquer Cliente MCP

mcp-swiss usa transporte stdio e não requer variáveis de ambiente. A configuração universal:

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

Isso funciona com qualquer cliente compatível com MCP — basta conectar.

Docker

docker pull vikramgorla/mcp-swiss

Use com qualquer cliente MCP que suporte servidores baseados em Docker. O contêiner usa transporte stdio:

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

# Use with Claude Desktop

Para Claude Desktop, atualize sua configuração para usar Docker:

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

Também disponível no GitHub Container Registry:

docker pull ghcr.io/vikramgorla/mcp-swiss

Filtragem de Módulos

Por padrão, o mcp-swiss carrega todos os 21 módulos (76 ferramentas). Para melhor eficiência de tokens, carregue apenas os módulos que você precisa:

Selecionar módulos específicos

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

Usar predefinições

{
  "mcpServers": {
    "swiss": {
      "command": "npx",
      "args": ["-y", "mcp-swiss", "--preset", "commuter"]
    }
  }
}
PredefiniçãoMódulosFerramentasEconomia de Tokens
commutertransport, weather, holidays1481%
outdoorweather, avalanche, hiking, earthquakes, dams, snow1975%
businesscompanies, geodata, post, energy, statistics, snb2467%
citizenparliament, voting, holidays, news1777%
minimaltransport593%
fulltodos os 21 módulos (padrão)76—

Combine predefinição + módulos: --preset commuter --modules parliament

Listar disponíveis: npx mcp-swiss --list-modules ou npx mcp-swiss --list-presets


Prompts de Demonstração

Após conectar, tente perguntar à sua IA:

PromptO que usa
"Próximos 5 trens de Zurique HB para Genebra"get_connections
"O Aare em Berna está quente o suficiente para nadar?"get_water_level
"Clima em Lugano vs Zurique hoje"get_weather
"Encontre empresas de blockchain registradas em Zug"search_companies
"Potencial solar de Bundesplatz 3, Berna"geocode + get_solar_potential
"Partidas ao vivo de Berna HB"get_departures
"Quais rios estão perto de Thun?"list_hydro_stations + get_water_level
"Planeje meu sábado: trem para Interlaken, verifique o clima"Múltiplas ferramentas encadeadas
"Segunda-feira que vem é feriado em Zurique?"get_public_holidays
"Sobre o que o parlamento suíço votou recentemente?"search_parliament_business
"Qual é o nível de perigo de avalanche nos Alpes Berneses?"get_avalanche_bulletin
"Qual é o código postal de Zermatt?"search_postcode
"Rastreie minha encomenda dos Correios Suíços 99.12.345678.12345678"track_parcel
"Quanto custa a eletricidade em Zurique vs Basileia?"search_municipality_energy + compare_electricity_tariffs
"Qual é a população do cantão de Zug?"get_population

Ferramentas

76 ferramentas em 21 módulos. Especificações completas: docs/tool-specs.md · Legível por máquina: docs/tools.schema.json

🚆 Transporte (5 ferramentas)

FerramentaDescrição
search_stationsEncontre estações/paradas por nome ou localização
get_connectionsPlanejador de viagens entre quaisquer dois pontos
get_departuresPartidas ao vivo de uma estação
get_arrivalsChegadas ao vivo em uma estação
get_nearby_stationsEstações próximas a coordenadas

🌤️ Clima e Hidrologia (6 ferramentas)

FerramentaDescrição
get_weatherCondições atuais em uma estação MeteoSwiss
list_weather_stationsTodas as ~160 estações MeteoSwiss com metadados
get_weather_historyDados meteorológicos históricos (até 32 dias)
get_water_levelNível de rio/lago + temperatura (BAFU)
list_hydro_stationsTodas as 400+ estações de monitoramento hidrológico
get_water_historyDados históricos de hidrologia

🗺️ Geodados / swisstopo (6 ferramentas)

FerramentaDescrição
geocodeEndereço suíço → coordenadas
reverse_geocodeCoordenadas → endereço suíço
search_placesNomes de lugares suíços, montanhas, lagos, características
get_solar_potentialIrradiação solar em telhados em uma localização
identify_locationTodas as camadas de dados geográficos em um ponto
get_municipalityInformações do município por nome

🏢 Empresas / ZEFIX (5 ferramentas)

FerramentaDescrição
search_companiesPesquise por nome, cantão, forma jurídica
get_companyDetalhes completos da empresa por ZEFIX ehraid
search_companies_by_addressEmpresas registradas em um endereço
list_cantonsTodos os 26 cantões suíços
list_legal_formsAG, GmbH e todas as formas jurídicas suíças

🎄 Feriados (3 ferramentas)

FerramentaDescrição
get_public_holidaysFeriados públicos suíços por ano, opcionalmente filtrados por cantão
get_school_holidaysPeríodos de férias escolares por ano e cantão
is_holiday_todayVerificação rápida se hoje é feriado público

🏛️ Parlamento (9 ferramentas) — OpenParlData.ch

FerramentaDescrição
search_parliament_businessPesquise assuntos políticos federais (projetos de lei, moções, perguntas)
get_parliament_membersListe membros do parlamento por cantão, partido ou atividade
get_parliament_votesResultados de votação para um assunto específico
get_session_scheduleSessões parlamentares futuras/recentes
search_parliament_speechesDiscursos de debate para um assunto
get_politician_interestsInteresses declarados e mandatos de um membro
search_cantonal_affairsPesquise nos 26 parlamentos cantonais
get_parliamentary_documentsDocumentos oficiais para um assunto
get_committee_meetingsAgenda de reuniões de comitês/comissões

🏔️ Avalanche (2 ferramentas)

FerramentaDescrição
get_avalanche_bulletinBoletim atual de avalanche com níveis de perigo e links PDF
list_avalanche_regionsTodas as 22 regiões suíças de alerta de avalanche

💨 Qualidade do Ar (2 ferramentas)

FerramentaDescrição
list_air_quality_stationsTodas as 14 estações de monitoramento NABEL
get_air_qualityInformações da estação, limites legais suíços (LRV) e links de dados BAFU

📮 Correios Suíços (4 ferramentas)

FerramentaDescrição
lookup_postcodePLZ → localidade, cantão, coordenadas
search_postcodeNome da cidade → códigos postais correspondentes
list_postcodes_in_cantonTodos os códigos postais em um cantão
track_parcelGerar URL de rastreamento dos Correios Suíços para uma encomenda

⚡ Preços de Energia (3 ferramentas)

FerramentaDescrição
get_electricity_tariffTarifa de eletricidade por município com detalhamento de componentes
compare_electricity_tariffsCompare preços de eletricidade entre municípios
search_municipality_energyEncontre o ID do município para consulta de tarifa

📊 Estatísticas / BFS (3 ferramentas)

FerramentaDescrição
get_populationPopulação por cantão ou município do BFS STATPOP
search_statisticsPesquise conjuntos de dados BFS em opendata.swiss
get_statisticObtenha informações detalhadas do conjunto de dados

🏦 Taxas de Câmbio SNB (3 ferramentas)

FerramentaDescrição
list_currenciesListe todas as moedas disponíveis do Banco Nacional Suíço (SNB)
get_exchange_rateObtenha a taxa de câmbio CHF atual para qualquer moeda
get_exchange_rate_historyObtenha taxas de câmbio CHF mensais históricas com filtro de data

♻️ Reciclagem / Coleta de Resíduos (3 ferramentas)

FerramentaDescrição
get_waste_collectionPróximas datas de coleta de resíduos por código postal de Zurique e tipo de resíduo
list_waste_typesListe todos os tipos de resíduos suportados com descrições
get_waste_calendarCalendário completo de coleta de resíduos para um código postal (próximas datas)

📰 Notícias Suíças (2 ferramentas)

FerramentaDescrição
get_swiss_newsÚltimas manchetes suíças da SRF por categoria (Suíça/internacional/economia)
search_swiss_newsPesquise notícias SRF por palavra-chave em todas as categorias

🗳️ Votação (3 ferramentas)

FerramentaDescrição
get_voting_resultsResultados de votação popular suíça dos dados abertos de Basileia-Cidade
search_votesPesquise votações populares por palavra-chave (alemão/francês/italiano)
get_vote_detailsDetalhamento por distrito de uma votação específica

🌊 Barragens e Reservatórios (3 ferramentas)

FerramentaDescrição
search_damsPesquise barragens federais suíças por nome ou palavra-chave
get_dams_by_cantonListe todas as barragens federais em um cantão
get_dam_detailsInformações detalhadas sobre uma barragem específica (altura, volume, finalidade)

🥾 Caminhadas / Fechamento de Trilhas (2 ferramentas)

FerramentaDescrição
get_trail_closuresFechamentos de trilhas suíças e alertas de caminhada do swisstopo
get_trail_closures_nearbyFechamentos de trilhas próximos a coordenadas fornecidas

🏠 Imóveis (3 ferramentas)

FerramentaDescrição
get_property_price_indexÍndice de preços de imóveis suíços (BFS Immo-Monitoring)
search_real_estate_dataPesquise conjuntos de dados imobiliários BFS em opendata.swiss
get_rent_indexÍndice de aluguel suíço e dados de custos habitacionais do BFS

🚗 Tráfego / ASTRA (3 ferramentas)

FerramentaDescrição
get_traffic_countDados de estações de contagem de tráfego (ASTRA) — volumes diários e participação de tráfego pesado
get_traffic_by_cantonListe estações de contagem de tráfego ASTRA filtradas por cantão
get_traffic_nearbyEncontre estações de contagem de tráfego próximas a coordenadas fornecidas

🌍 Terremotos / SED (3 ferramentas)

FerramentaDescrição
get_recent_earthquakesEventos sísmicos recentes na Suíça e arredores do Serviço Sismológico Suíço (SED) da ETH Zürich
get_earthquake_detailsDetalhes completos de um evento sísmico específico pelo ID de evento do SED
search_earthquakes_by_locationTerremotos próximos a coordenadas fornecidas com raio, intervalo de tempo e limite configuráveis

❄️ Condições de Neve / SLF (3 ferramentas)

FerramentaDescrição
get_snow_conditionsProfundidade atual de neve e neve nova (24h) em toda a Suíça das estações SLF IMIS, filtrável por cantão/altitude
list_snow_stationsTodas as 307 estações de medição de neve SLF (IMIS automáticas + parcelas de estudo manuais)
get_snow_measurementsMedições detalhadas de neve e clima para uma estação SLF específica

Fontes de Dados

Todos os dados abertos oficiais suíços — nenhuma chave de API necessária:

FonteDadosDocumentação
transport.opendata.chSBB, PostBus, bondesDocumentação da API
api.existenz.chClima MeteoSwiss + hidrologia BAFUDocumentação da API
api3.geo.admin.chGeodados federais swisstopoDocumentação da API
zefix.admin.chRegistro federal de empresasSwagger
openholidaysapi.orgFeriados públicos e escolares suíçosDocumentação da API
OpenParlData.chDados do Parlamento Suíço — federal e cantonal (CC BY 4.0)Documentação da API
whiterisk.ch / aws.slf.chBoletins de avalanche SLF/WSLSLF
geo.admin.ch — BAFU/NABELEstações de monitoramento da qualidade do ar na SuíçaBAFU NABEL
geo.admin.ch — swisstopoCódigos postais suíços (Amtliches Ortschaftenverzeichnis)geo.admin.ch
strompreis.elcom.admin.chTarifas de eletricidade ElCom por municípioElCom
pxweb.bfs.admin.ch + opendata.swissEstatísticas populacionais BFS (STATPOP) + conjuntos de dadosBFS
data.snb.chTaxas de câmbio CHF do Banco Nacional SuíçoPortal de dados SNB
openerz.metaodi.chCalendário de coleta de lixo de Zurique (OpenERZ)OpenERZ
srf.chManchetes de notícias suíças SRFSRF
data.bs.chResultados de votação popular de Basel-StadtOpen Data BS
geo.admin.ch — SFOERegistro federal suíço de barragensSFOE
geo.admin.ch — swisstopoFechamentos de trilhas e alertas de caminhada na Suíçaswisstopo
pxweb.bfs.admin.chPreços de imóveis BFS + índice de aluguelBFS habitação
geo.admin.ch — ASTRAEstações de contagem de tráfego + volumes diáriosASTRA
arclink.ethz.chTerremotos do Serviço Sismológico Suíço (SED/ETH)SED
measurement-api.slf.chProfundidade de neve SLF + medições (IMIS + parcelas de estudo, CC BY 4.0)SLF

Desenvolvimento

# 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

Testes

npm test

Contribuindo

Aceitamos contribuições! O mcp-swiss segue um fluxo de trabalho rigoroso baseado em PRs para manter a base de código limpa e o CI sempre verde.

Links rápidos

  • CONTRIBUTING.md — guia completo do contribuidor:

    • Configuração de desenvolvimento (clone, instalação, build, teste)
    • Modelo de branches (develop / main / branches de feature)
    • Regras rígidas de fluxo de trabalho (sem pushes diretos, sempre PRs, apenas merge regular)
    • Adicionando um novo módulo (passo a passo com modelos de código)
    • Checklist de integração (todos os arquivos a atualizar)
    • Padrões de código (TypeScript, sem any, limite de resposta de 50K, zero chaves de API)
  • RELEASING.md — processo de release para mantenedores:

    • Fluxo de trabalho de release passo a passo
    • Checklist de pré-release
    • Estratégia de versão (minor para features, patch para correções)
    • Verificação pós-release
    • Referência do fluxo de trabalho CI/CD (ci.yml, release.yml, beta.yml, mcp-registry.yml)

Requisitos

  • Node.js 20+
  • Nenhuma chave de API ou conta necessária

Licença

MIT — veja LICENSE