天气信息服务器

一个独立的MCP服务器,通过OpenWeather API提供天气信息,支持多种传输模式和温度单位。

  • by 522jack
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 522jack/mcp-weather-server

使用说明

气象MCP服务器

从OpenWeather API提供天气信息的独立MCP(模型上下文协议)服务器。

特性

  • ✅ 符合MCP协议2024-11-05
  • ✅ 两种传输模式:STDIO和SSE(服务器发送事件)
  • ✅ 气象工具:
    • get_current_weather -获取任何城市的当前天气
    • get_weather_forecast -获取5天天气预报
  • ✅ 支持多种温度单位(摄氏度、华氏度、开尔文)

建筑

构建服务器JAR:

./gradlew fatJar

JAR将在以下位置创建: build/libs/mcp-weather-server-1.0.0.jar

跑步

STDIO模式(适用于Claude Desktop等MCP客户端)

java -jar build/libs/mcp-weather-server-1.0.0.jar stdio

或者使用Gradle:

./gradlew run

SSE模式(HTTP服务器)

java -jar build/libs/mcp-weather-server-1.0.0.jar sse 3000

服务器将在端口3000上启动,并具有以下端点:

  • GET /sse -SSE连接端点
  • POST /message -发送MCP消息
  • GET /health -健康检查
  • GET /sessions -列出活动会话

配置

OpenWeather API密钥

将API键设置为环境变量:

export OPENWEATHER_API_KEY=your_api_key_here
java -jar build/libs/mcp-weather-server-1.0.0.jar stdio

如果未设置,服务器将使用演示密钥(功能有限)。

连接到克劳德桌面

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "weather": {
      "command": "java",
      "args": [
        "-jar",
        "/absolute/path/to/mcp-weather-server-1.0.0.jar",
        "stdio"
      ],
      "env": {
        "OPENWEATHER_API_KEY": "your_api_key_here"
      }
    }
  }
}

从您的应用程序连接

通过HTTP(SSE模式)

  1. 以SSE模式启动服务器:

    java -jar build/libs/mcp-weather-server-1.0.0.jar sse 3000
    
  2. 从您的应用程序连接到 http://localhost:3000

通过进程(STDIO模式)

  1. 从您的应用程序将服务器作为子进程启动
  2. 使用JSON-RPC通过stdin/stdout进行通信

可用工具

get_current天气

获取城市的当前天气状况。

参数:

  • city (必填):城市名称(例如“伦敦”、“纽约”、“莫斯科”)
  • units (可选):“公制”(默认)、“英制”或“标准”

例子:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_current_weather",
    "arguments": {
      "city": "London",
      "units": "metric"
    }
  }
}

get_weather_forecast

获取未来几天的天气预报。

参数:

  • city (必填):城市名称
  • units (可选):“公制”(默认)、“英制”或“标准”
  • days (可选):天数(1-5,默认值:3)

例子:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_weather_forecast",
    "arguments": {
      "city": "Paris",
      "units": "metric",
      "days": 3
    }
  }
}

发展

项目结构

./
├── src/main/kotlin/com/claude/mcp/weather/
│   ├── Main.kt                      # Entry point
│   ├── McpServerHandler.kt          # MCP protocol handler
│   ├── protocol/
│   │   └── McpProtocol.kt           # MCP protocol models
│   ├── services/
│   │   └── WeatherService.kt        # Weather API service
│   └── transport/
│       ├── StdioTransport.kt        # STDIO transport
│       └── SseTransport.kt          # SSE transport
└── build.gradle.kts

在发展中奔跑

# STDIO mode
./gradlew run

# SSE mode
./gradlew run --args="sse 3000"

测试

使用curl(SSE模式)手动测试服务器:

# Start server
java -jar build/libs/mcp-weather-server-1.0.0.jar sse 3000

# In another terminal, connect to SSE
curl -N http://localhost:3000/sse

# In another terminal, send a message
curl -X POST http://localhost:3000/message \
  -H "Content-Type: application/json" \
  -H "X-Session-Id: YOUR_SESSION_ID" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": {
        "name": "test-client",
        "version": "1.0.0"
      }
    }
  }'

许可证

麻省理工学院