mcp-swiss
Servidor MCP de dados abertos suíços — transporte, clima, geodados, empresas, etc. Zero chaves de API.
Documentação
mcp-swiss
Dados abertos suíços para IA — zero configuração, zero chaves de API
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.
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
- Abra as Configurações do Cursor
- Vá para Features → MCP Servers
- Clique em + Adicionar novo servidor MCP global
- Cole a configuração JSON acima
VS Code (GitHub Copilot)
Instalação com Um Clique
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ção | Módulos | Ferramentas | Economia de Tokens |
|---|---|---|---|
commuter | transport, weather, holidays | 14 | 81% |
outdoor | weather, avalanche, hiking, earthquakes, dams, snow | 19 | 75% |
business | companies, geodata, post, energy, statistics, snb | 24 | 67% |
citizen | parliament, voting, holidays, news | 17 | 77% |
minimal | transport | 5 | 93% |
full | todos 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:
| Prompt | O 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)
| Ferramenta | Descrição |
|---|---|
search_stations | Encontre estações/paradas por nome ou localização |
get_connections | Planejador de viagens entre quaisquer dois pontos |
get_departures | Partidas ao vivo de uma estação |
get_arrivals | Chegadas ao vivo em uma estação |
get_nearby_stations | Estações próximas a coordenadas |
🌤️ Clima e Hidrologia (6 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_weather | Condições atuais em uma estação MeteoSwiss |
list_weather_stations | Todas as ~160 estações MeteoSwiss com metadados |
get_weather_history | Dados meteorológicos históricos (até 32 dias) |
get_water_level | Nível de rio/lago + temperatura (BAFU) |
list_hydro_stations | Todas as 400+ estações de monitoramento hidrológico |
get_water_history | Dados históricos de hidrologia |
🗺️ Geodados / swisstopo (6 ferramentas)
| Ferramenta | Descrição |
|---|---|
geocode | Endereço suíço → coordenadas |
reverse_geocode | Coordenadas → endereço suíço |
search_places | Nomes de lugares suíços, montanhas, lagos, características |
get_solar_potential | Irradiação solar em telhados em uma localização |
identify_location | Todas as camadas de dados geográficos em um ponto |
get_municipality | Informações do município por nome |
🏢 Empresas / ZEFIX (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
search_companies | Pesquise por nome, cantão, forma jurídica |
get_company | Detalhes completos da empresa por ZEFIX ehraid |
search_companies_by_address | Empresas registradas em um endereço |
list_cantons | Todos os 26 cantões suíços |
list_legal_forms | AG, GmbH e todas as formas jurídicas suíças |
🎄 Feriados (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_public_holidays | Feriados públicos suíços por ano, opcionalmente filtrados por cantão |
get_school_holidays | Períodos de férias escolares por ano e cantão |
is_holiday_today | Verificação rápida se hoje é feriado público |
🏛️ Parlamento (9 ferramentas) — OpenParlData.ch
| Ferramenta | Descrição |
|---|---|
search_parliament_business | Pesquise assuntos políticos federais (projetos de lei, moções, perguntas) |
get_parliament_members | Liste membros do parlamento por cantão, partido ou atividade |
get_parliament_votes | Resultados de votação para um assunto específico |
get_session_schedule | Sessões parlamentares futuras/recentes |
search_parliament_speeches | Discursos de debate para um assunto |
get_politician_interests | Interesses declarados e mandatos de um membro |
search_cantonal_affairs | Pesquise nos 26 parlamentos cantonais |
get_parliamentary_documents | Documentos oficiais para um assunto |
get_committee_meetings | Agenda de reuniões de comitês/comissões |
🏔️ Avalanche (2 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_avalanche_bulletin | Boletim atual de avalanche com níveis de perigo e links PDF |
list_avalanche_regions | Todas as 22 regiões suíças de alerta de avalanche |
💨 Qualidade do Ar (2 ferramentas)
| Ferramenta | Descrição |
|---|---|
list_air_quality_stations | Todas as 14 estações de monitoramento NABEL |
get_air_quality | Informações da estação, limites legais suíços (LRV) e links de dados BAFU |
📮 Correios Suíços (4 ferramentas)
| Ferramenta | Descrição |
|---|---|
lookup_postcode | PLZ → localidade, cantão, coordenadas |
search_postcode | Nome da cidade → códigos postais correspondentes |
list_postcodes_in_canton | Todos os códigos postais em um cantão |
track_parcel | Gerar URL de rastreamento dos Correios Suíços para uma encomenda |
⚡ Preços de Energia (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_electricity_tariff | Tarifa de eletricidade por município com detalhamento de componentes |
compare_electricity_tariffs | Compare preços de eletricidade entre municípios |
search_municipality_energy | Encontre o ID do município para consulta de tarifa |
📊 Estatísticas / BFS (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_population | População por cantão ou município do BFS STATPOP |
search_statistics | Pesquise conjuntos de dados BFS em opendata.swiss |
get_statistic | Obtenha informações detalhadas do conjunto de dados |
🏦 Taxas de Câmbio SNB (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
list_currencies | Liste todas as moedas disponíveis do Banco Nacional Suíço (SNB) |
get_exchange_rate | Obtenha a taxa de câmbio CHF atual para qualquer moeda |
get_exchange_rate_history | Obtenha taxas de câmbio CHF mensais históricas com filtro de data |
♻️ Reciclagem / Coleta de Resíduos (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_waste_collection | Próximas datas de coleta de resíduos por código postal de Zurique e tipo de resíduo |
list_waste_types | Liste todos os tipos de resíduos suportados com descrições |
get_waste_calendar | Calendário completo de coleta de resíduos para um código postal (próximas datas) |
📰 Notícias Suíças (2 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_swiss_news | Últimas manchetes suíças da SRF por categoria (Suíça/internacional/economia) |
search_swiss_news | Pesquise notícias SRF por palavra-chave em todas as categorias |
🗳️ Votação (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_voting_results | Resultados de votação popular suíça dos dados abertos de Basileia-Cidade |
search_votes | Pesquise votações populares por palavra-chave (alemão/francês/italiano) |
get_vote_details | Detalhamento por distrito de uma votação específica |
🌊 Barragens e Reservatórios (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
search_dams | Pesquise barragens federais suíças por nome ou palavra-chave |
get_dams_by_canton | Liste todas as barragens federais em um cantão |
get_dam_details | Informações detalhadas sobre uma barragem específica (altura, volume, finalidade) |
🥾 Caminhadas / Fechamento de Trilhas (2 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_trail_closures | Fechamentos de trilhas suíças e alertas de caminhada do swisstopo |
get_trail_closures_nearby | Fechamentos de trilhas próximos a coordenadas fornecidas |
🏠 Imóveis (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_property_price_index | Índice de preços de imóveis suíços (BFS Immo-Monitoring) |
search_real_estate_data | Pesquise 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)
| Ferramenta | Descrição |
|---|---|
get_traffic_count | Dados de estações de contagem de tráfego (ASTRA) — volumes diários e participação de tráfego pesado |
get_traffic_by_canton | Liste estações de contagem de tráfego ASTRA filtradas por cantão |
get_traffic_nearby | Encontre estações de contagem de tráfego próximas a coordenadas fornecidas |
🌍 Terremotos / SED (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_recent_earthquakes | Eventos sísmicos recentes na Suíça e arredores do Serviço Sismológico Suíço (SED) da ETH Zürich |
get_earthquake_details | Detalhes completos de um evento sísmico específico pelo ID de evento do SED |
search_earthquakes_by_location | Terremotos próximos a coordenadas fornecidas com raio, intervalo de tempo e limite configuráveis |
❄️ Condições de Neve / SLF (3 ferramentas)
| Ferramenta | Descrição |
|---|---|
get_snow_conditions | Profundidade 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_stations | Todas as 307 estações de medição de neve SLF (IMIS automáticas + parcelas de estudo manuais) |
get_snow_measurements | Mediçõ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:
| Fonte | Dados | Documentação |
|---|---|---|
| transport.opendata.ch | SBB, PostBus, bondes | Documentação da API |
| api.existenz.ch | Clima MeteoSwiss + hidrologia BAFU | Documentação da API |
| api3.geo.admin.ch | Geodados federais swisstopo | Documentação da API |
| zefix.admin.ch | Registro federal de empresas | Swagger |
| openholidaysapi.org | Feriados públicos e escolares suíços | Documentação da API |
| OpenParlData.ch | Dados do Parlamento Suíço — federal e cantonal (CC BY 4.0) | Documentação da API |
| whiterisk.ch / aws.slf.ch | Boletins de avalanche SLF/WSL | SLF |
| geo.admin.ch — BAFU/NABEL | Estações de monitoramento da qualidade do ar na Suíça | BAFU NABEL |
| geo.admin.ch — swisstopo | Códigos postais suíços (Amtliches Ortschaftenverzeichnis) | geo.admin.ch |
| strompreis.elcom.admin.ch | Tarifas de eletricidade ElCom por município | ElCom |
| pxweb.bfs.admin.ch + opendata.swiss | Estatísticas populacionais BFS (STATPOP) + conjuntos de dados | BFS |
| data.snb.ch | Taxas de câmbio CHF do Banco Nacional Suíço | Portal de dados SNB |
| openerz.metaodi.ch | Calendário de coleta de lixo de Zurique (OpenERZ) | OpenERZ |
| srf.ch | Manchetes de notícias suíças SRF | SRF |
| data.bs.ch | Resultados de votação popular de Basel-Stadt | Open Data BS |
| geo.admin.ch — SFOE | Registro federal suíço de barragens | SFOE |
| geo.admin.ch — swisstopo | Fechamentos de trilhas e alertas de caminhada na Suíça | swisstopo |
| pxweb.bfs.admin.ch | Preços de imóveis BFS + índice de aluguel | BFS habitação |
| geo.admin.ch — ASTRA | Estações de contagem de tráfego + volumes diários | ASTRA |
| arclink.ethz.ch | Terremotos do Serviço Sismológico Suíço (SED/ETH) | SED |
| measurement-api.slf.ch | Profundidade 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