mcp-swiss 0.5.1-dev → 0.5.2-dev-beta.20260308192446

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,8 @@
13
13
  [![Downloads](https://img.shields.io/npm/dm/mcp-swiss.svg?style=flat-square)](https://www.npmjs.com/package/mcp-swiss)
14
14
  [![Stars](https://img.shields.io/github/stars/vikramgorla/mcp-swiss?style=flat-square)](https://github.com/vikramgorla/mcp-swiss)
15
15
  [![Node](https://img.shields.io/node/v/mcp-swiss?style=flat-square)](https://nodejs.org)
16
+ [![.mcpb](https://img.shields.io/badge/.mcpb-One--Click_Install-D52B1E?style=flat-square)](https://github.com/vikramgorla/mcp-swiss/releases/latest/download/mcp-swiss.mcpb)
17
+ [![Claude Desktop](https://img.shields.io/badge/Claude_Desktop-Install-D52B1E?style=flat-square&logo=anthropic&logoColor=white)](https://github.com/vikramgorla/mcp-swiss/releases/latest/download/mcp-swiss.mcpb)
16
18
 
17
19
  [Install](#installation) · [Tools](#tools) · [Demo](#demo-prompts) · [Data Sources](#data-sources)
18
20
 
@@ -62,6 +64,18 @@ That's it. No API keys, no `.env` files, no accounts. Pick your client below and
62
64
 
63
65
  ---
64
66
 
67
+ ### One-Click Install (.mcpb)
68
+
69
+ `.mcpb` bundles work with Claude Desktop and any MCP Bundle-compatible app.
70
+
71
+ [**⬇ Download mcp-swiss.mcpb**](https://github.com/vikramgorla/mcp-swiss/releases/latest/download/mcp-swiss.mcpb)
72
+
73
+ [![Install in Claude Desktop](https://img.shields.io/badge/Install_in_Claude_Desktop-D52B1E?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/vikramgorla/mcp-swiss/releases/latest/download/mcp-swiss.mcpb)
74
+
75
+ Open the downloaded file — your app handles the rest. No config editing, no terminal, no API keys.
76
+
77
+ ---
78
+
65
79
  ### Claude Desktop
66
80
 
67
81
  Edit your config file:
package/manifest.json ADDED
@@ -0,0 +1,112 @@
1
+ {
2
+ "manifest_version": "0.3",
3
+ "name": "mcp-swiss",
4
+ "display_name": "Switzerland MCP 🇨🇭",
5
+ "version": "0.5.1",
6
+ "description": "Swiss open data for AI — 68 tools, zero API keys. Transport, weather, geodata, companies, parliament, and 15 more modules.",
7
+ "long_description": "mcp-swiss gives any AI assistant direct access to Swiss open data. 68 tools across 20 modules: train schedules (SBB), weather (MeteoSwiss), river levels (BAFU), geodata (swisstopo), company registry (ZEFIX), parliament, avalanche bulletins, holidays, postal services, electricity prices, population statistics, exchange rates (SNB), recycling schedules, news (SRF), voting results, dam registry, hiking trail alerts, real estate data, traffic counts, and earthquake monitoring. All APIs are free and require zero authentication.",
8
+ "author": {
9
+ "name": "Vikram Gorla",
10
+ "url": "https://github.com/vikramgorla"
11
+ },
12
+ "repository": {
13
+ "type": "git",
14
+ "url": "https://github.com/vikramgorla/mcp-swiss.git"
15
+ },
16
+ "homepage": "https://github.com/vikramgorla/mcp-swiss",
17
+ "documentation": "https://github.com/vikramgorla/mcp-swiss/blob/main/docs/tool-specs.md",
18
+ "support": "https://github.com/vikramgorla/mcp-swiss/issues",
19
+ "icon": "assets/icon.png",
20
+ "server": {
21
+ "type": "node",
22
+ "entry_point": "dist/index.js",
23
+ "mcp_config": {
24
+ "command": "node",
25
+ "args": ["${__dirname}/dist/index.js"]
26
+ }
27
+ },
28
+ "tools": [
29
+ {"name": "search_stations", "description": "Search for Swiss public transport stations/stops by name or coordinates"},
30
+ {"name": "get_connections", "description": "Get train/bus connections between two Swiss locations"},
31
+ {"name": "get_departures", "description": "Get live departures from a Swiss transport station"},
32
+ {"name": "get_arrivals", "description": "Get live arrivals at a Swiss transport station"},
33
+ {"name": "get_nearby_stations", "description": "Find Swiss public transport stations near given coordinates"},
34
+ {"name": "get_weather", "description": "Get current weather conditions at a Swiss MeteoSwiss station"},
35
+ {"name": "list_weather_stations", "description": "List all available MeteoSwiss weather stations in Switzerland"},
36
+ {"name": "get_weather_history", "description": "Get historical weather data for a Swiss station"},
37
+ {"name": "get_water_level", "description": "Get current river or lake water level and temperature at a Swiss hydrological station"},
38
+ {"name": "list_hydro_stations", "description": "List all available BAFU hydrological monitoring stations"},
39
+ {"name": "get_water_history", "description": "Get historical river/lake water level data for a Swiss hydrological station"},
40
+ {"name": "geocode", "description": "Convert a Swiss address or place name to coordinates (swisstopo)"},
41
+ {"name": "reverse_geocode", "description": "Convert coordinates to a Swiss address (swisstopo)"},
42
+ {"name": "search_places", "description": "Search Swiss place names, localities, mountains, and geographic features"},
43
+ {"name": "get_solar_potential", "description": "Get rooftop solar energy potential for a location in Switzerland"},
44
+ {"name": "identify_location", "description": "Identify geographic features and data layers at a specific Swiss location"},
45
+ {"name": "get_municipality", "description": "Get information about a Swiss municipality by name"},
46
+ {"name": "search_companies", "description": "Search Swiss company registry (ZEFIX) by name, canton, or legal form"},
47
+ {"name": "get_company", "description": "Get full details of a Swiss company by its ZEFIX internal ID"},
48
+ {"name": "search_companies_by_address", "description": "Search Swiss companies registered at a specific address or locality"},
49
+ {"name": "list_cantons", "description": "List all Swiss cantons with their codes"},
50
+ {"name": "list_legal_forms", "description": "List all Swiss company legal forms (AG, GmbH, etc.)"},
51
+ {"name": "get_public_holidays", "description": "Get public holidays for a Swiss canton and year"},
52
+ {"name": "get_school_holidays", "description": "Get school holidays for a Swiss canton"},
53
+ {"name": "is_holiday_today", "description": "Check if today is a public holiday in a Swiss canton"},
54
+ {"name": "get_latest_votes", "description": "Get the latest parliament votes"},
55
+ {"name": "search_councillors", "description": "Search current National/States Council members"},
56
+ {"name": "get_sessions", "description": "Get parliament session schedule"},
57
+ {"name": "search_parliament_business", "description": "Search parliamentary affairs and bills"},
58
+ {"name": "get_avalanche_bulletin", "description": "Get SLF avalanche danger bulletin"},
59
+ {"name": "list_avalanche_regions", "description": "List avalanche warning regions"},
60
+ {"name": "get_air_quality", "description": "Get NABEL air quality measurements"},
61
+ {"name": "list_air_quality_stations", "description": "List NABEL air quality monitoring stations"},
62
+ {"name": "lookup_postcode", "description": "Look up a Swiss postcode"},
63
+ {"name": "search_postcode", "description": "Search Swiss postcodes by locality name"},
64
+ {"name": "list_postcodes_in_canton", "description": "List all postcodes in a Swiss canton"},
65
+ {"name": "track_parcel", "description": "Track a Swiss Post parcel"},
66
+ {"name": "get_electricity_tariff", "description": "Get electricity tariff for a Swiss municipality"},
67
+ {"name": "compare_electricity_tariffs", "description": "Compare electricity prices across municipalities"},
68
+ {"name": "search_municipality_energy", "description": "Search municipalities for energy data"},
69
+ {"name": "get_population", "description": "Get population data by canton or municipality"},
70
+ {"name": "search_statistics", "description": "Search BFS statistical datasets"},
71
+ {"name": "get_statistic", "description": "Get a specific BFS statistic"},
72
+ {"name": "get_exchange_rate", "description": "Get current CHF exchange rate from SNB"},
73
+ {"name": "get_exchange_rate_history", "description": "Get historical exchange rates"},
74
+ {"name": "list_currencies", "description": "List available currency pairs"},
75
+ {"name": "get_waste_collection", "description": "Get waste collection schedule"},
76
+ {"name": "list_waste_types", "description": "List available waste types"},
77
+ {"name": "get_waste_calendar", "description": "Get waste collection calendar"},
78
+ {"name": "get_swiss_news", "description": "Get SRF news headlines"},
79
+ {"name": "search_swiss_news", "description": "Search Swiss news by keyword"},
80
+ {"name": "get_voting_results", "description": "Get popular vote results"},
81
+ {"name": "get_vote_details", "description": "Get detailed vote breakdown"},
82
+ {"name": "search_votes", "description": "Search available vote dates and topics"},
83
+ {"name": "search_dams", "description": "Search Swiss federal dam registry"},
84
+ {"name": "get_dams_by_canton", "description": "Get dams by canton"},
85
+ {"name": "get_dam_details", "description": "Get details of a specific dam"},
86
+ {"name": "get_trail_closures", "description": "Get hiking trail closures and alerts"},
87
+ {"name": "get_trail_closures_nearby", "description": "Get trail closures near coordinates"},
88
+ {"name": "get_property_price_index", "description": "Get Swiss property price index"},
89
+ {"name": "get_rent_index", "description": "Get rental price index"},
90
+ {"name": "search_real_estate_data", "description": "Search real estate market data"},
91
+ {"name": "get_traffic_count", "description": "Get traffic count data from ASTRA stations"},
92
+ {"name": "get_traffic_by_canton", "description": "Get traffic data by canton"},
93
+ {"name": "get_traffic_nearby", "description": "Get traffic data near coordinates"},
94
+ {"name": "get_recent_earthquakes", "description": "Get recent earthquakes in Switzerland"},
95
+ {"name": "get_earthquake_details", "description": "Get details of a specific earthquake"},
96
+ {"name": "search_earthquakes_by_location", "description": "Search earthquakes near a location"}
97
+ ],
98
+ "keywords": [
99
+ "switzerland", "swiss", "open-data", "transport", "sbb", "weather",
100
+ "meteoswiss", "geodata", "swisstopo", "zefix", "companies", "parliament",
101
+ "avalanche", "holidays", "postal", "energy", "statistics", "exchange-rates",
102
+ "recycling", "news", "voting", "dams", "hiking", "real-estate", "traffic",
103
+ "earthquakes"
104
+ ],
105
+ "license": "MIT",
106
+ "compatibility": {
107
+ "platforms": ["darwin", "win32", "linux"],
108
+ "runtimes": {
109
+ "node": ">=20.0.0"
110
+ }
111
+ }
112
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-swiss",
3
- "version": "0.5.1-dev",
3
+ "version": "0.5.2-dev-beta.20260308192446",
4
4
  "description": "Swiss open data MCP server — 68 tools across 20 modules. Zero API keys.",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -0,0 +1,37 @@
1
+ #!/bin/bash
2
+ # Build .mcpb (MCP Bundle) for Claude Desktop
3
+ set -euo pipefail
4
+
5
+ VERSION=$(node -p "require('./package.json').version")
6
+ BUNDLE_NAME="mcp-swiss-${VERSION}.mcpb"
7
+ BUNDLE_DIR="$(mktemp -d)"
8
+
9
+ echo "Building mcpb bundle v${VERSION}..."
10
+
11
+ # Build the project first
12
+ npm run build
13
+
14
+ # Copy required files to bundle directory
15
+ cp -r dist/ "${BUNDLE_DIR}/dist/"
16
+ cp -r node_modules/ "${BUNDLE_DIR}/node_modules/"
17
+ cp package.json "${BUNDLE_DIR}/"
18
+ cp manifest.json "${BUNDLE_DIR}/"
19
+
20
+ # Copy icon if it exists
21
+ if [ -d "assets" ]; then
22
+ cp -r assets/ "${BUNDLE_DIR}/assets/"
23
+ fi
24
+
25
+ # Create the .mcpb (zip) file
26
+ cd "${BUNDLE_DIR}"
27
+ zip -r "/tmp/${BUNDLE_NAME}" . -x "*.git*" "*.DS_Store"
28
+ cd -
29
+
30
+ # Move to project root
31
+ mv "/tmp/${BUNDLE_NAME}" "./${BUNDLE_NAME}"
32
+
33
+ # Cleanup
34
+ rm -rf "${BUNDLE_DIR}"
35
+
36
+ echo "✅ Created ${BUNDLE_NAME} ($(du -h "${BUNDLE_NAME}" | cut -f1))"
37
+ echo " Install: Open with Claude Desktop"
@@ -0,0 +1,156 @@
1
+ #!/bin/bash
2
+ # QA Smoke Test — one prompt per tool (68 tools across 20 modules)
3
+ # Runs locally via Claude Code MCP client
4
+
5
+ set -o pipefail
6
+
7
+ export CLAUDE_CODE_OAUTH_TOKEN=$(grep CLAUDE_CODE_OAUTH_TOKEN ~/.bashrc | cut -d'"' -f2)
8
+ MCP='{"mcpServers":{"swiss":{"command":"node","args":["dist/index.js"]}}}'
9
+ OPTS="--permission-mode bypassPermissions --max-turns 5 --mcp-config $MCP"
10
+ PASS=0
11
+ FAIL=0
12
+ FAILED_TESTS=()
13
+
14
+ run_test() {
15
+ local tool="$1"
16
+ local prompt="$2"
17
+ echo ""
18
+ echo "=== [$tool] ==="
19
+ if OUTPUT=$(claude -p "$prompt" $OPTS 2>&1); then
20
+ echo "$OUTPUT" | tail -5
21
+ echo "✅ $tool"
22
+ PASS=$((PASS + 1))
23
+ else
24
+ echo "$OUTPUT" | tail -5
25
+ echo "❌ $tool FAILED"
26
+ FAIL=$((FAIL + 1))
27
+ FAILED_TESTS+=("$tool")
28
+ fi
29
+ }
30
+
31
+ # Build first
32
+ npm run build || { echo "BUILD FAILED"; exit 1; }
33
+
34
+ echo "=========================================="
35
+ echo "QA Per-Tool Smoke Tests — 68 tools"
36
+ echo "=========================================="
37
+
38
+ # --- Transport (5) ---
39
+ run_test "search_stations" "Search for train stations named Interlaken. Use the search_stations swiss MCP tool."
40
+ run_test "get_connections" "Get the next train connection from Bern to Zürich. Use the get_connections swiss MCP tool."
41
+ run_test "get_departures" "Show departures from Zürich HB station. Use the get_departures swiss MCP tool."
42
+ run_test "get_arrivals" "Show arrivals at Basel SBB. Use the get_arrivals swiss MCP tool."
43
+ run_test "get_nearby_stations" "Find train stations near latitude 46.95, longitude 7.44. Use the get_nearby_stations swiss MCP tool."
44
+
45
+ # --- Weather (6) ---
46
+ run_test "get_weather" "Current weather in Bern. Use the get_weather swiss MCP tool."
47
+ run_test "list_weather_stations" "List all MeteoSwiss weather stations. Use the list_weather_stations swiss MCP tool."
48
+ run_test "get_weather_history" "Weather history for Bern in the last 24 hours. Use the get_weather_history swiss MCP tool."
49
+ run_test "get_water_level" "Current water level of the Aare river. Use the get_water_level swiss MCP tool."
50
+ run_test "list_hydro_stations" "List all hydrology stations. Use the list_hydro_stations swiss MCP tool."
51
+ run_test "get_water_history" "Water level history for the Aare. Use the get_water_history swiss MCP tool."
52
+
53
+ # --- Geodata (6) ---
54
+ run_test "geocode" "Geocode the address Bundesplatz 3 Bern. Use the geocode swiss MCP tool."
55
+ run_test "reverse_geocode" "Reverse geocode latitude 46.9481 longitude 7.4474. Use the reverse_geocode swiss MCP tool."
56
+ run_test "search_places" "Search for places named Zermatt. Use the search_places swiss MCP tool."
57
+ run_test "get_solar_potential" "Solar potential at latitude 46.95 longitude 7.45. Use the get_solar_potential swiss MCP tool."
58
+ run_test "identify_location" "Identify what is at latitude 46.95 longitude 7.45. Use the identify_location swiss MCP tool."
59
+ run_test "get_municipality" "Get municipality info for Bern. Use the get_municipality swiss MCP tool."
60
+
61
+ # --- Companies (5) ---
62
+ run_test "search_companies" "Search for Nestlé in ZEFIX. Use the search_companies swiss MCP tool."
63
+ run_test "get_company" "Get details for company with UID CHE-105.909.036. Use the get_company swiss MCP tool."
64
+ run_test "search_companies_by_address" "Search companies at address Vevey. Use the search_companies_by_address swiss MCP tool."
65
+ run_test "list_cantons" "List all Swiss cantons. Use the list_cantons swiss MCP tool."
66
+ run_test "list_legal_forms" "List Swiss company legal forms. Use the list_legal_forms swiss MCP tool."
67
+
68
+ # --- Holidays (3) ---
69
+ run_test "get_public_holidays" "Public holidays in Zürich 2026. Use the get_public_holidays swiss MCP tool."
70
+ run_test "get_school_holidays" "School holidays in Zürich 2026. Use the get_school_holidays swiss MCP tool."
71
+ run_test "is_holiday_today" "Is today a public holiday in Switzerland? Use the is_holiday_today swiss MCP tool."
72
+
73
+ # --- Parliament (4) ---
74
+ run_test "search_parliament_business" "Search parliamentary business about climate. Use the search_parliament_business swiss MCP tool."
75
+ run_test "get_latest_votes" "Latest 3 parliamentary votes. Use the get_latest_votes swiss MCP tool."
76
+ run_test "search_councillors" "Search for councillor named Baume-Schneider. Use the search_councillors swiss MCP tool."
77
+ run_test "get_sessions" "List recent parliamentary sessions. Use the get_sessions swiss MCP tool."
78
+
79
+ # --- Avalanche (2) ---
80
+ run_test "get_avalanche_bulletin" "Current avalanche bulletin info. Use the get_avalanche_bulletin swiss MCP tool."
81
+ run_test "list_avalanche_regions" "List all avalanche warning regions. Use the list_avalanche_regions swiss MCP tool."
82
+
83
+ # --- Air Quality (2) ---
84
+ run_test "list_air_quality_stations" "List all NABEL air quality stations. Use the list_air_quality_stations swiss MCP tool."
85
+ run_test "get_air_quality" "Air quality legal limits in Switzerland. Use the get_air_quality swiss MCP tool."
86
+
87
+ # --- Post (4) ---
88
+ run_test "lookup_postcode" "What is the postcode for Zermatt? Use the lookup_postcode swiss MCP tool."
89
+ run_test "search_postcode" "Search for postcodes starting with 80. Use the search_postcode swiss MCP tool."
90
+ run_test "list_postcodes_in_canton" "List postcodes in canton Zug. Use the list_postcodes_in_canton swiss MCP tool."
91
+ run_test "track_parcel" "Track parcel 990012345678. Use the track_parcel swiss MCP tool."
92
+
93
+ # --- Energy (3) ---
94
+ run_test "get_electricity_tariff" "Electricity tariff in Bern for 2026. Use the get_electricity_tariff swiss MCP tool."
95
+ run_test "compare_electricity_tariffs" "Compare electricity tariffs between Zürich and Lugano. Use the compare_electricity_tariffs swiss MCP tool."
96
+ run_test "search_municipality_energy" "Search for energy municipality Bern. Use the search_municipality_energy swiss MCP tool."
97
+
98
+ # --- Statistics (3) ---
99
+ run_test "get_population" "Population of canton Zürich. Use the get_population swiss MCP tool."
100
+ run_test "search_statistics" "Search for statistics about housing. Use the search_statistics swiss MCP tool."
101
+ run_test "get_statistic" "Get a statistic about population. Use the get_statistic swiss MCP tool."
102
+
103
+ # --- SNB (3) ---
104
+ run_test "list_currencies" "List all SNB tracked currencies. Use the list_currencies swiss MCP tool."
105
+ run_test "get_exchange_rate" "Current CHF to EUR exchange rate. Use the get_exchange_rate swiss MCP tool."
106
+ run_test "get_exchange_rate_history" "EUR/CHF exchange rate history for the last year. Use the get_exchange_rate_history swiss MCP tool."
107
+
108
+ # --- Traffic (3) ---
109
+ run_test "get_traffic_count" "Traffic count at Gotthard. Use the get_traffic_count swiss MCP tool."
110
+ run_test "get_traffic_by_canton" "Traffic stations in canton Zürich. Use the get_traffic_by_canton swiss MCP tool."
111
+ run_test "get_traffic_nearby" "Traffic stations near latitude 47.37 longitude 8.54. Use the get_traffic_nearby swiss MCP tool."
112
+
113
+ # --- Recycling (3) ---
114
+ run_test "get_waste_collection" "Next waste collection for ZIP 8001. Use the get_waste_collection swiss MCP tool."
115
+ run_test "list_waste_types" "List all waste collection types. Use the list_waste_types swiss MCP tool."
116
+ run_test "get_waste_calendar" "Waste calendar for ZIP 8005 in March 2026. Use the get_waste_calendar swiss MCP tool."
117
+
118
+ # --- News (2) ---
119
+ run_test "get_swiss_news" "Latest Swiss news headlines. Use the get_swiss_news swiss MCP tool."
120
+ run_test "search_swiss_news" "Search Swiss news for climate. Use the search_swiss_news swiss MCP tool."
121
+
122
+ # --- Voting (3) ---
123
+ run_test "get_voting_results" "Recent Swiss popular vote results. Use the get_voting_results swiss MCP tool."
124
+ run_test "search_votes" "Search votes about AHV. Use the search_votes swiss MCP tool."
125
+ run_test "get_vote_details" "Details of the E-ID vote. Use the get_vote_details swiss MCP tool."
126
+
127
+ # --- Dams (3) ---
128
+ run_test "search_dams" "Search for Grande Dixence dam. Use the search_dams swiss MCP tool."
129
+ run_test "get_dams_by_canton" "List dams in canton Valais. Use the get_dams_by_canton swiss MCP tool."
130
+ run_test "get_dam_details" "Full details of Grande Dixence dam. Use the get_dam_details swiss MCP tool."
131
+
132
+ # --- Hiking (2) ---
133
+ run_test "get_trail_closures" "Current hiking trail closures in Switzerland. Use the get_trail_closures swiss MCP tool."
134
+ run_test "get_trail_closures_nearby" "Trail closures near Interlaken latitude 46.69 longitude 7.85. Use the get_trail_closures_nearby swiss MCP tool."
135
+
136
+ # --- Real Estate (3) ---
137
+ run_test "get_property_price_index" "Swiss property price index trend. Use the get_property_price_index swiss MCP tool."
138
+ run_test "search_real_estate_data" "Search for real estate datasets on opendata.swiss. Use the search_real_estate_data swiss MCP tool."
139
+ run_test "get_rent_index" "Swiss rent price index. Use the get_rent_index swiss MCP tool."
140
+
141
+ # --- Earthquakes (3) ---
142
+ run_test "get_recent_earthquakes" "Recent earthquakes in Switzerland. Use the get_recent_earthquakes swiss MCP tool."
143
+ run_test "get_earthquake_details" "Get details of the most recent Swiss earthquake. Use the get_recent_earthquakes tool first, then get_earthquake_details for the first event."
144
+ run_test "search_earthquakes_by_location" "Earthquakes near Bern latitude 46.95 longitude 7.45 in the last 90 days. Use the search_earthquakes_by_location swiss MCP tool."
145
+
146
+ # --- Summary ---
147
+ echo ""
148
+ echo "=========================================="
149
+ echo "RESULTS: $PASS passed, $FAIL failed out of $((PASS + FAIL))"
150
+ echo "=========================================="
151
+ if [ $FAIL -gt 0 ]; then
152
+ echo "FAILED TOOLS:"
153
+ for t in "${FAILED_TESTS[@]}"; do echo " ❌ $t"; done
154
+ exit 1
155
+ fi
156
+ echo "✅ ALL 68 TOOLS PASSED"
package/server.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.vikramgorla/swiss",
4
- "title": "Switzerland MCP 🇨🇭",
4
+ "title": "Switzerland MCP \ud83c\udde8\ud83c\udded",
5
5
  "description": "Swiss open data MCP server. 68 tools, zero API keys. Transport, weather, geodata, news, rates.",
6
6
  "repository": {
7
7
  "url": "https://github.com/vikramgorla/mcp-swiss",
8
8
  "source": "github"
9
9
  },
10
- "version": "0.5.1-dev",
10
+ "version": "0.5.2-dev",
11
11
  "icons": [
12
12
  {
13
13
  "src": "https://raw.githubusercontent.com/vikramgorla/mcp-swiss/main/assets/icon.svg",
@@ -25,7 +25,7 @@
25
25
  {
26
26
  "registryType": "npm",
27
27
  "identifier": "mcp-swiss",
28
- "version": "0.5.1-dev",
28
+ "version": "0.5.2-dev",
29
29
  "runtimeHint": "npx",
30
30
  "transport": {
31
31
  "type": "stdio"