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.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"swiss": {
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add swiss -- npx -y mcp-swissวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"swiss": {
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"swiss": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"mcp-swiss"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub vikramgorla ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.9.0) เข้า registry 3 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Recta
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo