ต้นแบบ · รุ่นทดลอง: มีทุก server ในทะเบียนทางการ อัปเดตทุก 30 นาที รีวิวและบัญชีผู้ใช้จะมาในขั้นถัดไป
PopNx MCPที่รวม MCP สำหรับคนใช้ AI · อธิบายเป็นภาษาคน

Meteoswiss MCP

โดย malkreideรุ่น 0.7.0i★ –iรันบนเครื่อง
ชื่อใน registryio.github.malkreide/meteoswiss-mcp

ติดตั้ง

ภาพรวม

คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)

MeteoSwiss Open Data for weather, climate normals, warnings

สามเสาของ PopNx MCP

สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน

ใช้ทำอะไรได้

ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry

  • การเชื่อมต่อ: รันบนเครื่อง
  • ช่องทาง (transport): stdio
  • หมวด: กฎหมายและข้อมูลภาครัฐ

ติดตั้ง

เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง

ก่อนติดตั้ง

ต้องเตรียมก่อน

  • PyPIติดตั้ง uv ของ Python (มีคำสั่ง uvx) ในเครื่อง

คุณใช้แอปไหน

เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”

เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json

{
  "mcpServers": {
    "meteoswiss": {
      "command": "uvx",
      "args": [
        "meteoswiss-mcp"
      ]
    }
  }
}

พิมพ์คำสั่งนี้ใน Terminal

claude mcp add meteoswiss -- uvx meteoswiss-mcp

เปิดใน Cursor

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json

{
  "mcpServers": {
    "meteoswiss": {
      "command": "uvx",
      "args": [
        "meteoswiss-mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

เปิดใน VS Code

หรือคัดลอกค่าตั้งเอง

วางในไฟล์ .vscode/mcp.json ของโปรเจกต์

{
  "servers": {
    "meteoswiss": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "meteoswiss-mcp"
      ]
    }
  }
}

เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง

ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น

ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี

ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README

ทำอะไรได้บ้าง

รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง

ผลตรวจเบื้องต้นi

เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 9 พ.ย. 2569

  • ✓ ผ่าน

    ตัวตนผู้ทำตรงกับ repo

    ชื่อใน registry ยืนยันด้วยบัญชี GitHub malkreide ซึ่งเป็นเจ้าของ repo

  • … ยังไม่ตรวจ

    ยังมีคนดูแล

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • … ยังไม่ตรวจ

    มีสัญญาอนุญาต (license)

    ยังไม่ได้อ่านข้อมูล repo จาก GitHub

  • – ไม่เกี่ยว

    endpoint ตอบ

    ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต

  • – ไม่เกี่ยว

    ล็อกอินแบบ OAuth

    ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน

  • … ยังไม่ตรวจ

    คำอธิบายเครื่องมือไม่มีคำสั่งแอบแฝง

    รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต

เทียบกับตัวอื่นในหมวด กฎหมายและข้อมูลภาครัฐi

  • ดาวมากกว่า 0% ของอีก 1772 ตัวในหมวดนี้
  • ส่งรุ่นใหม่เข้า registry ล่าสุดกว่า 43% ของอีก 1772 ตัวในหมวดนี้
  • ผลตรวจเบื้องต้นดีกว่าหรือเท่ากับ 100% ของอีก 1772 ตัวในหมวดนี้

เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo

คำถามที่พบบ่อย

Meteoswiss MCP ปลอดภัยไหม?

จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น

ต้องใช้กุญแจหรือรหัสอะไรบ้าง?

registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก

ตัวนี้รันบนเครื่องหรือบนคลาวด์?

รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)

ยังมีคนดูแลอยู่ไหม?

repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.7.0) เข้า registry 43 วันที่ผ่านมา

ใช้กับโปรแกรมไหนได้บ้าง?

โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย

มีตัวไหนใช้แทนได้บ้าง?

ในหมวดเดียวกันมี Agent Data Tools: Company, compliance and checks, Agent Data Tools, Lintsure

ตัวที่ใช้แทนได้

server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว

อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi

Agent Data Tools

655 agent tools: chain data, prices, sanctions, web, PDF. 25 free calls, then from $0.002.

โดย Nutshell2000เริ่มต้นอัปเดต วันนี้

รันบนคลาวด์

Lintsure

Compliance readiness checks for code: EU AI Act, GDPR, OWASP, CWE, Cyber Resilience Act. Local.

โดย lintsureยังใหม่มากอัปเดต วันนี้

รันบนเครื่อง

README จากผู้ทำ

เปิดอ่าน README

ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ

🌦️ meteoswiss-mcp

MCP server for Swiss weather and climate data from MeteoSwiss.

Connects AI models to the SwissMetNet measurement network (160+ stations, 10-minute interval), MeteoSwiss ICON-CH1/CH2-EPS forecasts and climate normals 1991–2020. Part of the swiss-public-data-mcp portfolio.

🇩🇪 Deutsche Version


Demo query (anchor example)

How suitable is next Wednesday for the sports day at Leutschenbach school?

→ meteo_school_check(location="Zürich Oerlikon", activity="Sporttag") returns a 🟢/🟡/🔴 traffic light for each day of the coming week — straight from the MeteoSwiss ICON model.

Combined with [swiss-environment-mcp](https://github.com/malkreide/swiss-environment-mcp):

How were air quality and weather at Leutschenbach school yesterday?

→ meteo_current(station='REH') + env_nabel_current(station='ZUE') = a complete environmental picture. → More use cases by audience →


Tools (6)

ToolDescriptionData source
meteo_stationsList SwissMetNet stations (filterable by canton)Embedded
meteo_currentCurrent 10-min observations for a stationBGDI STAC API
meteo_forecast1–16 day forecast for a place or coordinatesOpen-Meteo / MeteoSwiss ICON
meteo_school_check🟢/🟡/🔴 traffic light for outdoor school eventsOpen-Meteo / MeteoSwiss ICON
meteo_climate_normalsMonthly climate normals 1991–2020Embedded (KLO, SMA, BER, LUG, GVE)
meteo_warningsActive official weather warnings (storm, thunderstorm, heat, forest fire, …) — nationwide, by canton, or by PLZMeteoSwiss App-API + opendata.swiss
Tool annotations (MCP hints)

All tools carry explicit MCP annotations — relevant for the client approval UI and for the LLM's safety decisions.

ToolreadOnlyHintdestructiveHintidempotentHintopenWorldHint
meteo_stations✅✗✅✗ (curated list)
meteo_current✅✗✗ (live data)✅ (upstream STAC)
meteo_forecast✅✗✗ (live data)✅ (upstream Open-Meteo)
meteo_school_check✅✗✗ (live data)✅ (geocoding + forecast)
meteo_climate_normals✅✗✅✗ (embedded normals)
meteo_warnings✅✗✗ (live data)✅ (MeteoSwiss App-API)

Read rules: all 6 tools are readOnly + non-destructive — the server fundamentally cannot write or delete anything. idempotentHint=False marks tools that return different values depending on when they are called.

MCP protocol version
AspectValue
Tested spec versions2024-11-05, 2025-03-26, 2025-06-18 (via the mcp[cli] SDK)
MCP SDK versionsee pyproject.toml → mcp[cli]>=2.0.0,<3 (the MCPServer API from mcp.server.mcpserver)
Update policyDependabot watches mcp[cli]; spec bumps are documented in the CHANGELOG with a "Tool Definition Changes" marker

→ Full roadmap & update strategy: docs/roadmap.md


Quick start

Claude Desktop
{

"mcpServers": { "meteoswiss": { "command": "uvx", "args": ["meteoswiss-mcp"] } } }

Claude Desktop (local development)
{

"mcpServers": { "meteoswiss": { "command": "uv", "args": ["run", "--directory", "/path/to/meteoswiss-mcp", "meteoswiss-mcp"] } } }

Cloud / Render.com (Streamable HTTP)

Configuration via ENV variables (the CLI flags --http / --port N still work as an override):

VariableDefaultMeaning
MCP_TRANSPORTstdiostdio or streamable-http
MCP_HOST127.0.0.1Bind address — never change locally
MCP_PORT8000Port
MCP_ALLOW_ANY_HOST_unset_Must be set to 1 to allow the server to bind to 0.0.0.0 (containers/cloud only)
MCP_LOG_LEVELINFODEBUG / INFO / WARNING / ERROR — structured JSON logs on stderr
MCP_ALLOWED_ORIGINS_unset_Comma-separated list of allowed origins for CORS. Empty = CORS disabled (same-origin only). Mcp-Session-Id is exposed automatically.
MCP_API_KEY_unset_If set: every request except /health requires X-API-Key: or Authorization: Bearer . Constant-time comparison.
MCP_STATELESS_HTTP01 enables the SDK's stateless mode → each HTTP request opens a new session. Prerequisite for multi-replica deploys without sticky sessions (SCALE-002/003).
OTEL_EXPORTER_OTLP_ENDPOINT_unset_If set + pip install meteoswiss-mcp[otel]: OpenTelemetry spans per tool call + automatic httpx instrumentation are sent as OTLP-HTTP to the collector.
OTEL_SERVICE_NAMEmeteoswiss_mcpService name in the OTel resources
MCP_CACHE_ENABLED10 disables the TTL cache entirely (e.g. for end-to-end tests)
MCP_CACHE_TTL_STAC300TTL in seconds for STAC SMN observations (default 5 min)
MCP_CACHE_TTL_OPEN_METEO600TTL for ICON forecasts (default 10 min)
MCP_CACHE_TTL_GEOCODING3600TTL for geocoding lookups (default 1 h)
MCP_CACHE_TTL_OPENDATA3600TTL for the opendata.swiss catalogue (default 1 h)
MCP_CACHE_TTL_WARNINGS300TTL for warnings (MeteoSwiss App-API / structured override; default 5 min)
MCP_CLIMATE_NORMALS_PATH_unset_Path to a JSON file with additional climate normals — see data/climate-normals.example.json
MCP_WARNINGS_API_URL_unset_Override for the default MeteoSwiss App-API source: URL of a structured MeteoSwiss warnings API (e.g. the future OGD warnings REST endpoint). The host must be on the egress allow-list. Schema-tolerant (GeoJSON features, a warnings array or items). Unset → live App-API.
MCP_CLIMATE_NORMALS_URL_TEMPLATE_unset_URL template for runtime lookup of climate normals (for stations without embedded or JSON values). Tokens: {station} (lowercase), {STATION} (uppercase), {param} (MeteoSwiss code tre200m0/rre150m0/sre000m0). Example: https://data.geo.admin.ch/.../{station}/{param}.txt. The host must be on the egress allow-list.
# Local test (safe, loopback only)

MCP_TRANSPORT=streamable-http meteoswiss-mcp

Container / Render

MCP_TRANSPORT=streamable-http MCP_HOST=0.0.0.0 MCP_ALLOW_ANY_HOST=1 meteoswiss-mcp

Docker / Render

The repo includes a production-ready multi-stage Dockerfile (non-root user, HEALTHCHECK) and a `render.yaml` blueprint:

# Build + test locally

docker build -t meteoswiss-mcp . docker run --rm -p 8000:8000 meteoswiss-mcp curl http://127.0.0.1:8000/health # → {"status":"ok","service":"meteoswiss-mcp"}

On Render: "New → Blueprint" → select the repo. Defaults (plan starter, Frankfurt, single instance) are set in render.yaml.

Important: numInstances: 1 is set deliberately — sticky-session routing for multi-replica (audit SCALE-002/003) is not yet implemented.

Structured logging

All tool invocations, upstream failures and egress blocks are emitted as JSON events on stderr (stdio-transport safe). Example:

{"tool": "meteo_forecast", "days": 7, "has_coords": false, "event": "tool_invoked", "level": "info", "timestamp": "2026-05-20T07:00:00Z"}

{"tool": "meteo_forecast", "endpoint": "geocoding", "error_type": "HTTPStatusError", "event": "upstream_failed", "level": "warning", "timestamp": "..."} {"url": "https://evil.example.com/", "method": "GET", "reason": "host not in allow-list", "event": "egress_blocked", "level": "warning", "timestamp": "..."}

HTTP-mode security
  • MCP_HOST deliberately defaults to 127.0.0.1 so that --http on a dev laptop is not accidentally exposed to the local subnet (audit finding SEC-016).
  • All outgoing HTTP calls (including redirect follows) are validated against an allow-list: data.geo.admin.ch, api.open-meteo.com, geocoding-api.open-meteo.com, opendata.swiss. Other hosts and IP literals (in particular 169.254.169.254, RFC1918) are rejected with EgressBlocked (SEC-004 / SEC-021).
  • CORS: disabled by default (same-origin only). Browser clients (e.g. claude.ai web) need MCP_ALLOWED_ORIGINS= — the Mcp-Session-Id header is then automatically in Access-Control-Expose-Headers (SDK-004).
  • API-key auth: disabled by default. In a production HTTP setup, always set MCP_API_KEY= — requests without a valid X-API-Key or Authorization: Bearer … are rejected with 401 (SEC-009 / SEC-013). /health stays open for container health probes.
Example: production HTTP stack
# 32 bytes of randomness as the auth key

export MCP_API_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")

MCP_TRANSPORT=streamable-http \ MCP_HOST=0.0.0.0 \ MCP_ALLOW_ANY_HOST=1 \ MCP_ALLOWED_ORIGINS=https://app.example.com \ MCP_API_KEY="$MCP_API_KEY" \ meteoswiss-mcp


Example queries

School planning
Which days next week are suitable for a sports day in Zürich?

→ meteo_school_check(location="Zürich", activity="Sporttag")

What will the weather be at Leutschenbach school on Friday? → meteo_forecast(location="Zürich Oerlikon", days=5)

Show me current readings from the nearest MeteoSwiss station to Zürich-Schwamendingen. → meteo_current(station="REH")

Climate comparison
How much rain normally falls in June in Zürich?

→ meteo_climate_normals(station="KLO")

Is Lugano really much sunnier than Zürich? Show me the annual values. → meteo_climate_normals(station="LUG") + meteo_climate_normals(station="SMA")

Infrastructure & environment
Are there currently any weather warnings for the canton of Zürich?

→ meteo_warnings(canton="ZH")

Show me a 10-day forecast for the Heerenschürli sports facility with hourly values. → meteo_forecast(location="Sportanlage Heerenschürli Zürich", days=10, hourly=True)


Architecture

Claude Desktop / AI agent

│ │ MCP (stdio / Streamable HTTP) ▼ meteoswiss-mcp (MCPServer) │ ├── meteo_stations ──────────────── [embedded: ~20 SMN stations] │ ├── meteo_current ───────────────── BGDI STAC API │ data.geo.admin.ch/api/stac/v1 │ Collection: ch.meteoschweiz.ogd-smn │ ├── meteo_forecast ──────────────── Open-Meteo ├── meteo_school_check ──────────── api.open-meteo.com/v1/meteoswiss │ (MeteoSwiss ICON-CH1/CH2-EPS, 1–2 km) │ ├── meteo_climate_normals ───────── [embedded: normals 1991–2020] │ └── meteo_warnings ──────────────── app-prod-ws.meteoswiss-app.ch (MeteoSwiss App-API) + opendata.swiss

Data sources
SourceURLLicense
BGDI STAC API (MeteoSwiss OGD)data.geo.admin.ch/api/stac/v1CC BY 4.0
Open-Meteo (MeteoSwiss ICON)api.open-meteo.com/v1/meteoswissCC BY 4.0

| Open-Meteo

ตัดมาแค่ช่วงต้น อ่านต่อใน repo

ถาม PopNx