Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
äœè ã«ãã説æïŒè±èªã®åæïŒ
Swiss open data MCP server. 94 tools, zero API keys. Transport, weather, geodata, catalogue.
ãã®3ã€ã1ã€ã®ã¹ã³ã¢ã«ãŸãšããããšã¯ããŸãããæèŠã枬å®ã人æ°ã¯ããããå¥ã®ãã®ã ããã§ãã
ãã®ãµãŒããŒã®ãããã解説ã¯ãŸã æžããŠããŸããã以äžã¯ã¬ãžã¹ããªããèªã¿åã£ãäºå®ã§ãã
䜿ã£ãŠããAIã¢ããªãéžãã§ãèšå®ãã³ããŒããŠãã ããã
å¿ èŠãªãã®
ã©ã®ã¢ããªã䜿ã£ãŠããŸããïŒ
äžã§ã¢ããªãéžãã§ãã ãããéžãã ã¢ããªãèŠããŠããã®ã§ã次ããã¯ãã¿ã³ã«ãâŠã«ã€ã³ã¹ããŒã«ããšè¡šç€ºãããŸãã
Claude Desktop â Settings â Developer â Edit Config ãéããclaude_desktop_config.json ã«ããã貌ãä»ããŸã
{
"mcpServers": {
"swiss": {
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}ã¿ãŒããã«ã§ãããå®è¡ããŸã
claude mcp add swiss -- npx -y mcp-swissãããžã§ã¯ãã® .cursor/mcp.jsonããŸã㯠~/.cursor/mcp.json ã«è²Œãä»ããŸã
{
"mcpServers": {
"swiss": {
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}ãã©ãŠã¶ãã¢ããªãéããŠããã確èªãããã®ããšã¢ããªãèšå®ã衚瀺ããŠç¢ºèªãæ±ããŸããããŒã®å€ã¯ç©ºæ¬ã®ãŸãŸãªã®ã§ãèªåã§å ¥åããŠãã ããã
ãããžã§ã¯ãã® .vscode/mcp.json ã«è²Œãä»ããŸã
{
"servers": {
"swiss": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}ãã©ãŠã¶ãã¢ããªãéããŠããã確èªãããã®ããšã¢ããªãèšå®ã衚瀺ããŠç¢ºèªãæ±ããŸããããŒã®å€ã¯ç©ºæ¬ã®ãŸãŸãªã®ã§ãèªåã§å ¥åããŠãã ããã
ããã¯ããœã³ã³ã§åããµãŒããŒã§ãããChatGPTãã€ãªããã®ã¯ã€ã³ã¿ãŒãããäžã®ãµãŒããŒã ãã§ããã»ãã®ã¢ããªãéžãã§ãã ããã
éžãã ã¢ããªã¯ããã®ç«¯æ«ã®Cookieã«ä¿åãããŸããã¢ã«ãŠã³ãã¯äžèŠã§ãã
ãã®èšå®ã¯ãäœè ã®ã¬ãžã¹ããªç»é²æ å ±ããäœæããŠããŸããREADMEãšéãå Žåã¯ãREADMEã«åŸã£ãŠãã ããã
ããœã³ã³ã§åããµãŒããŒã§ããã€ã³ã¹ããŒã«ãããšãããŒã«äžèЧãAIã¢ããªã«è¡šç€ºãããŸãã
誰ã§ãèŠãããæ å ±ããã§ãã¯ããŠãããã³ãŒãã¯èªãã§ããŸãããåœãŠã¯ãŸããªãé ç®ã¯æ°ã«å ¥ããŠããŸããã · 2026幎11æ6æ¥ã«ãã§ãã¯
ã¬ãžã¹ããªåã¯ããªããžããªãææããGitHubã¢ã«ãŠã³ã vikramgorla ã§ç¢ºèªæžã¿ã§ã
ãã®ãªããžããªã¯ãŸã GitHubããèªã¿åã£ãŠããŸãã
ãã®ãªããžããªã¯ãŸã GitHubããèªã¿åã£ãŠããŸãã
ããã¯ããœã³ã³ã§åããããã€ã³ã¿ãŒãããäžã®ãšã³ããã€ã³ãã¯ãããŸãã
ããœã³ã³ã§åãã代ããã«ããŒã«ã«ã®èšå®ã䜿ããŸã
ããœã³ã³ã§åããµãŒããŒã§ããããŒã«äžèЧãèªã¿åããã®ã¯ãã€ã³ã¿ãŒãããäžã®ãšã³ããã€ã³ããããå Žåã ãã§ã
ã¬ãžã¹ããªã§ãã®ã«ããŽãªã«ããæå¹ãªãã¹ãŠã®ãµãŒããŒãšæ¯èŒããŠããŸããã¹ã¿ãŒã¯ãå ¬éè ããªããžããªã®ææè ã§ããå Žåã ãæ°ããŸãã
åœãŠã¯ãŸãåºæ¬ãã§ãã¯1é ç®ã®ãã¡1é ç®ã«åæ ŒããŸãããã³ãŒãã¯èªãã§ããŸãããããŒãããŒã¯ã³ã远å ããåã«ããµãŒããŒãã©ããªã¢ã¯ã»ã¹ãæ±ããŠãããã確èªããå¿ èŠãªæš©éã ããæã€ããŒã䜿ã£ãŠãã ããã
ã¬ãžã¹ããªã«ã¯å¿ é ã®ããŒã¯èŒã£ãŠããŸããããã ããæåã«äœ¿ããšãã«ãµã€ã³ã€ã³ãæ±ãããµãŒããŒããããŸãã
ããªãã®ããœã³ã³ã§åããŸããå¿ èŠãªãšãã«AIã¢ããªãèµ·åããããŒã¿ã¯äœè ã®ãµãŒããŒãéããŸããïŒãµãŒããŒèªäœããªã³ã©ã€ã³ãµãŒãã¹ãåŒã³åºãå Žåãé€ããŸãïŒã
GitHubãªããžããªã®æçµæŽæ°ã¯âãææ°ããŒãžã§ã³ïŒ0.9.0ïŒãã¬ãžã¹ããªã«å±ããã®ã¯4 æ¥åã§ãã
Claude DesktopãClaude CodeãCursorãVS Codeãªã©ã®MCP察å¿ã¢ããªã§äœ¿ããŸããããœã³ã³ã«Node.jsãå¿ èŠã§ãã
åãã«ããŽãªã«ã¯ïŒSpec Driven Development, Remote Desktop Commander, Toggl 2.0
åãã«ããŽãªã§ãã»ãã®äœè ãäœã£ããµãŒããŒãã¹ã¿ãŒã®å€ãé ã
ã«ãŒãã®èŠæ¹ïŒâ GitHubã¹ã¿ãŒi3ã€ã®æ±ïŒã¬ãã¥ãŒ · ãã§ã㯠· å©çšç¶æ³iæŽæ°ïŒææ°ããŒãžã§ã³ãã¬ãžã¹ããªã«å ¬éããæ¥i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.
äœè ã®ãªããžããªããæžããããšããã«ã³ããŒãããã®ã§ããPopNx MCPã¯å 容ã確èªã»æšå¥šããŠããŸãããHTMLãç»åãã¹ã¯ãªããã¯åãé€ããŠããŸãããªã³ã¯ã¯ãã®ãµã€ãã®å€ãžç§»åããŸãã
Swiss open data for AI â zero config, zero API keys
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.
94 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 ð 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 âïž Snow â SLF snow depth, stations, and measurements ð¿ Pollen â MeteoSwiss pollen concentrations at the published stations ð Buildings â Federal register of buildings and dwellings (GWR) ð Catalogue â opendata.swiss dataset search, metadata, and downloads ð¡ïž Meteo OGD â SwissMetNet stations and measurements (STAC CSV) ð§ Map layers â geo.admin layer search, identify, and attribute find ð SBB Data â station passengers, punctuality, and step-free access
npx mcp-swiss
That's it. No API keys, no .env files, no accounts. Pick your client below and paste the config.
.mcpb bundles work with Claude Desktop and any MCP Bundle-compatible app.
Open the downloaded file â your app handles the rest. No config editing, no terminal, no API keys.
Edit your config file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } } }
Restart Claude Desktop after saving.
claude mcp add swiss -- npx -y mcp-swiss
That's it â Claude Code will use it in your next session.
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
# VS Code
code --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'
code-insiders --add-mcp '{"name":"swiss","command":"npx","args":["-y","mcp-swiss"]}'
Add to your VS Code User Settings (JSON) â press Ctrl+Shift+P â Preferences: 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"] } } }
Add to ~/.codeium/windsurf/model_config.json:
{
"mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } } }
Open VS Code settings.json and add:
{
"cline.mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss"] } } }
mcp-swiss uses stdio transport and requires no environment variables. Upstream calls time out after 30 seconds (MCP_SWISS_TIMEOUT_MS overrides that) and retry once on a dropped connection or a rate limit. The universal config:
{
"command": "npx", "args": ["-y", "mcp-swiss"] }
This works with any MCP-compatible client â just plug it in.
docker pull vikramgorla/mcp-swiss
Use with any MCP client that supports Docker-based servers. The container uses stdio transport:
# Run directly (stdio)
docker run -i vikramgorla/mcp-swiss
For Claude Desktop, update your config to use Docker:
{
"mcpServers": { "swiss": { "command": "docker", "args": ["run", "-i", "--rm", "vikramgorla/mcp-swiss"] } } }
Also available on GitHub Container Registry:
docker pull ghcr.io/vikramgorla/mcp-swiss
stdio is still the default. For a local HTTP client, run:
npx mcp-swiss --http
That listens on 127.0.0.1:3000 and serves MCP at POST /mcp (also GET and DELETE) plus GET /health. --port, --host, PORT, HOST, and MCP_TRANSPORT=http are the other switches.
A bind that is not loopback (127.0.0.1, localhost, or ::1) refuses to start unless both MCP_AUTH_TOKEN and MCP_ALLOWED_HOSTS are set. Sessions are capped (MCP_MAX_SESSIONS, default 64) and idle ones expire. This is the transport half of #64. It does not deploy a hosted instance.
By default, mcp-swiss loads all 27 modules (94 tools). The full tools/list schema is about 9,300 tokens (37,011 characters). For a smaller startup list, load only the modules you need.
Search, then execute. The server lists three meta-tools instead of every schema (about 330 tokens versus about 9,300):
{
"mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--discovery"] } } }
MCP_SWISS_MODE=discovery and --mode discovery do the same thing. swiss_search_tools finds tools by keyword or module and returns their input schemas. swiss_call_tool checks those arguments, then runs the tool. swiss_list_modules is the catalog. The default, with no flag, is still the full tool list.
{
"mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--modules", "transport,weather"] } } }
{
"mcpServers": { "swiss": { "command": "npx", "args": ["-y", "mcp-swiss", "--preset", "commuter"] } } }
| Preset | Modules | Tools | Token Savings |
|---|---|---|---|
commuter | transport, weather, holidays | 14 | 83% |
outdoor | weather, avalanche, hiking, earthquakes, dams, snow, pollen | 22 | 74% |
business | companies, geodata, post, energy, statistics, snb, gwr | 27 | 68% |
citizen | parliament, voting, holidays, news | 17 | 80% |
minimal | transport | 5 | 94% |
full | all 27 modules (default) | 94 | â |
Combine preset + modules: --preset commuter --modules parliament
List available: npx mcp-swiss --list-modules or npx mcp-swiss --list-presets
Once connected, try asking your AI:
| Prompt | What 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
åé ã ãã衚瀺ããŠããŸããç¶ãã¯ãªããžããªã§èªããŸã