Skip to main content
Glama
lincw

CWA MCP Server

by lincw

CWA MCP 伺服器

一個簡單的模型內容協定 (Model Context Protocol, MCP) 伺服器,可將 Claude Desktop 連接到台灣中央氣象署 (CWA) API 以獲取氣象資料。

功能特色

  • 簡單、輕量的 Node.js 實作

  • 容易設定並與 Claude Desktop 配合使用

  • 存取所有台灣縣市的 CWA 氣象預報資料

Related MCP server: MCP Weather

快速開始

  1. 取得 CWA API 金鑰:

  2. 使安裝腳本可執行:

    chmod +x install.sh
  3. 執行安裝腳本:

    ./install.sh
  4. 編輯位於 ~/.config/claude/claude_desktop_config.json 的設定檔,加入你的 CWA API 金鑰:

    {
      "mcpServers": {
        "cwa": {
          "command": "node",
          "args": [
            "/path/to/cwa-server.js"
          ],
          "env": {
            "CWA_API_KEY": "CWA-1E740A28-FFDC-4186-BE0D-B02662F066EF"
          }
        }
      }
    }
  5. 重新啟動 Claude Desktop

  6. 開始在與 Claude 的對話中使用 CWA 氣象資料!

可用工具

get_weather_forecast

透過縣市名稱獲取台灣未來 36 小時的氣象預報。

在 Claude 中的使用範例:

台北市現在的天氣如何?

使用 Docker

你也可以使用 Docker 來執行這個 MCP 伺服器:

  1. 建立 docker-compose.yml 檔案:

    version: '3'
    services:
      cwa-mcp-server:
        container_name: cwa-mcp-server
        image: node:18
        volumes:
          - ./:/app
        working_dir: /app
        command: node cwa-server.js
        environment:
          - CWA_API_KEY=你的_CWA_API_金鑰
        restart: unless-stopped
  2. 你的_CWA_API_金鑰 替換為你實際的 CWA API 金鑰

  3. 更新你的 Claude Desktop 設定:

    {
      "mcpServers": {
        "cwa": {
          "command": "docker",
          "args": [
            "exec",
            "-i",
            "cwa-mcp-server",
            "node",
            "cwa-server.js"
          ]
        }
      }
    }
  4. 啟動 Docker 容器:

    docker-compose up -d
  5. 重新啟動 Claude Desktop

可用地區列表

支援以下縣市名稱:

  • 宜蘭縣、花蓮縣、臺東縣、澎湖縣、金門縣、連江縣

  • 臺北市、新北市、桃園市、臺中市、臺南市、高雄市

  • 基隆市、新竹縣、新竹市、苗栗縣、彰化縣、南投縣

  • 雲林縣、嘉義縣、嘉義市、屏東縣

故障排除

  • 確保已安裝 Node.js 18 或更高版本

  • 檢查你的 CWA API 金鑰是否有效並正確設定在設定檔中

  • 使用 ./test.sh 測試伺服器以確認其正常運作

  • 確保 Claude Desktop 已正確設定,並在設定變更後重新啟動

Available Tools

1 tool
get_weather_forecastA

Get Taiwan weather forecast for the next 36 hours by county/city name. Available locations: 宜蘭縣, 花蓮縣, 臺東縣, 澎湖縣, 金門縣, 連江縣, 臺北市, 新北市, 桃園市, 臺中市, 臺南市, 高雄市, 基隆市, 新竹縣, 新竹市, 苗栗縣, 彰化縣, 南投縣, 雲林縣, 嘉義縣, 嘉義市, 屏東縣

ParametersJSON Schema
NameRequiredDescriptionDefault
locationNameYesTaiwan county/city name in Traditional Chinese (e.g., 臺北市, 高雄市)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool does but lacks details on behavioral traits such as rate limits, error handling, authentication needs, or what the output format looks like. This leaves gaps in understanding how the tool behaves beyond its basic function.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core purpose and followed by essential details (time frame and locations). Every sentence earns its place by providing necessary information without redundancy, making it efficient and easy to understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema, no annotations), the description is complete enough for basic usage but lacks details on output format and behavioral aspects. It covers the what and where adequately but falls short on how the tool behaves and what results to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, with the parameter 'locationName' fully documented in the schema. The description adds value by listing all available locations, which provides semantic context beyond the schema's generic description, but does not elaborate further on parameter usage or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get Taiwan weather forecast'), resource ('weather forecast'), scope ('next 36 hours'), and geographical constraint ('by county/city name'). It distinguishes itself by specifying the exact time range and available locations, making the purpose unambiguous and comprehensive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool by specifying the geographical scope (Taiwan), time frame (next 36 hours), and available locations. However, it does not mention when not to use it or any alternatives, as there are no sibling tools provided, so explicit exclusions are not necessary but could be implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • First observedget_weather_forecast

TDQS

A3.6/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools. The tool has a single, clear purpose: retrieving weather forecasts for specific locations in Taiwan.

Naming Consistency5/5

The single tool name 'get_weather_forecast' follows a clear verb_noun pattern (get + weather_forecast). Since there's only one tool, consistency is inherently perfect with no deviations to evaluate.

Tool Count2/5

A single tool is too few for a weather server's apparent scope, which typically involves multiple operations like current conditions, forecasts, alerts, or location searches. This minimal surface suggests the server is underpowered for comprehensive weather interactions.

Completeness2/5

The server is severely incomplete for a weather domain, offering only a 36-hour forecast retrieval. It lacks essential operations such as current weather, extended forecasts, severe weather alerts, or location-based searches, which will limit agent capabilities significantly.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    F
    maintenance
    A lightweight bridge server that connects WeChat Reading (WeRead) data with Claude Desktop, allowing seamless access to reading notes and book collections through natural language interactions.
    4
    143
    575
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A TypeScript-based Model Context Protocol server that enables Claude Desktop to fetch real-time weather data via external weather APIs. It provides a simple integration for users to query current weather information through natural language interactions.
    7
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that wraps the Ambient Weather REST API. Query your personal weather stations conversationally from Claude Code, Claude.ai, or any MCP-compatible client.
    1
    MIT