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.
์ด ์ธ ๊ฐ์ง๋ ์ ๋ ํ๋์ ์ ์๋ก ํฉ์น์ง ์์์. ์๊ฒฌ, ์ธก์ , ์ธ๊ธฐ๋ ์๋ก ๋ค๋ฅธ ๊ฒ์ด๋๊น์.
์ด ์๋ฒ๋ ์์ง ์ฌ์ด ๋ง๋ก ๋ ์์ฝ์ ์ฐ์ง ๋ชปํ์ด์. ์๋๋ ๋ ์ง์คํธ๋ฆฌ์์ ์ฝ์ด ์จ ์ฌ์ค์ด์์.
์ฐ๊ณ ์๋ 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๋ ์ธํฐ๋ท์ ์๋ ์๋ฒ์๋ง ์ฐ๊ฒฐํ ์ ์์ด์. ๋ค๋ฅธ ์ฑ์ ๊ณ ๋ฅด์ธ์.
์ ํํ ์ฑ์ ์ด ๊ธฐ๊ธฐ์ ์ฟ ํค์๋ง ์ ์ฅ๋ผ์. ๊ณ์ ์ ํ์ ์์ด์.
์ด ์ค์ ์ ์ ์์์ ๋ ์ง์คํธ๋ฆฌ ์ ๋ณด๋ก ๋ง๋ค์์ด์. README์ ๋ค๋ฅด๋ฉด README๋ฅผ ๋ฐ๋ฅด์ธ์.
๋ด ์ปดํจํฐ์์ ์คํ๋ผ์. ์ค์นํ๋ฉด AI ์ฑ์ ๋๊ตฌ ๋ชฉ๋ก์ด ๋ํ๋์.
๋๊ตฌ๋ ๋ณผ ์ ์๋ ์ ๋ณด๋ฅผ ์ ๊ฒํ๊ณ , ์ฝ๋๋ ์ฝ์ง ์์์ด์. ํด๋นํ์ง ์๋ ํญ๋ชฉ์ ๊ฐ์์์ ๋บ์ด์. ยท 2026๋ 11์ 7์ผ ์ ๊ฒ
๋ ์ง์คํธ๋ฆฌ ์ด๋ฆ์ด 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, TF Rooms
๊ฐ์ ์นดํ ๊ณ ๋ฆฌ์์ ๋ค๋ฅธ ์ ์์๊ฐ ๋ง๋ ์๋ฒ์์. ์คํ ์์ผ๋ก ์ ๋ ฌํ์ด์.
์นด๋ ๋ณด๋ ๋ฒ:โ GitHub ์คํi์ธ ๊ธฐ๋ฅ: ๋ฆฌ๋ทฐ ยท ์ ๊ฒ ยท ์ฌ์ฉ ์ ๋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.
Live room availability, rates and stay quotes for 12 New Leaf motels in Twin Falls, Idaho.
์ ์์์ ์ ์ฅ์์์ ์ฐ์ธ ๊ทธ๋๋ก ๊ฐ์ ธ์์ด์. 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
์๋ถ๋ถ๋ง ๋ณด์ฌ ๋๋ ค์. ๋๋จธ์ง๋ ์ ์ฅ์์์ ์ฝ์ด ๋ณด์ธ์