使用说明
气象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模式)
-
以SSE模式启动服务器:
java -jar build/libs/mcp-weather-server-1.0.0.jar sse 3000 -
从您的应用程序连接到
http://localhost:3000
通过进程(STDIO模式)
- 从您的应用程序将服务器作为子进程启动
- 使用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"
}
}
}'
许可证
麻省理工学院
