天气数据服务

一个基于WeatherAPI.com提供天气信息的MCP服务器,支持获取当前天气和多日预报,适用于集成到Claude Desktop等MCP客户端。

  • by iruirc
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 iruirc/weatherMCP

使用说明

气象MCP服务器

使用WeatherAPI.com服务提供天气信息的模型上下文协议(MCP)服务器。

特性

  • 获取任何城市的当前天气
  • 获取长达10天的天气预报
  • 详细的天气信息,包括温度、湿度、风、压力、紫外线指数
  • 每小时和每日预报
  • 轻松集成Claude Desktop和其他MCP客户端

先决条件

  • JDK 17或更高版本
  • Gradle(包括包装)
  • Weather API密钥来自 WeatherAPI.com (免费版可用)

安装

  1. 克隆存储库

  2. 从获取免费的API密钥https://www.weatherapi.com/

  3. 配置API密钥(选择一种方法):

    选项1:使用.env文件(推荐)

    cp .env.example .env
    # Edit .env and add your API key:
    # WEATHER_API_KEY=your_api_key_here
    

    选项2:使用环境变量

    export WEATHER_API_KEY="your_api_key_here"
    

建筑

使用Gradle构建项目:

./gradlew build

这将在中创建一个可执行的JAR文件 build/libs/.

跑步

独立

./gradlew run

或

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

使用克劳德桌面

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

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

或者使用Gradle(用于开发):

{
  "mcpServers": {
    "weather": {
      "command": "./gradlew",
      "args": ["run", "--quiet", "--console=plain"],
      "cwd": "/absolute/path/to/weather",
      "env": {
        "WEATHER_API_KEY": "your_api_key_here"
      }
    }
  }
}

配置后,重新启动Claude Desktop。天气工具将在您的对话中提供。

可用工具

get_current天气

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

参数:

  • city (字符串,必填):城市名称(例如,“伦敦”、“纽约”、“东京”)

例子:

What's the current weather in London?

获取预测

获取一个城市的天气预报。

参数:

  • city (字符串,必填):城市名称
  • days (数字,可选):预测天数(1-10,默认值:3)

例子:

What's the 5-day forecast for Paris?

建筑

服务器由以下组件构建:

  • 科特林:现代JVM语言
  • 哪个客户端:API调用的HTTP客户端
  • Kotlinx序列化:JSON处理
  • Kotlin日志记录:结构化日志记录

组件

  • McpServer:使用JSON-RPC 2.0在stdio上实现MCP协议
  • WeatherService:处理与WeatherAPI.com的通信
  • models/:MCP和天气数据的数据类别

协议

实施MCP协议版本2024-11-05:

  • 服务器能力协商
  • 工具列表和发现
  • 使用结构化模式执行工具

发展

项目结构

weather/
├── build.gradle.kts
├── settings.gradle.kts
├── src/main/kotlin/com/example/mcp/weather/
│   ├── WeatherServer.kt      # Main entry point
│   ├── McpServer.kt           # MCP protocol implementation
│   ├── WeatherService.kt      # Weather API client
│   └── models/
│       ├── McpModels.kt       # MCP protocol models
│       └── WeatherModels.kt   # Weather data models
└── src/main/resources/
    └── logback.xml            # Logging configuration

建立分销

创建一个包含所有依赖项的分发:

./gradlew installDist

分发将在 build/install/weather-mcp-server/.

故障排除

API关键问题

如果您收到关于缺少API密钥的错误:

  1. 确保 WEATHER_API_KEY 环境变量已设置
  2. 检查您的API密钥是否在https://www.weatherapi.com/
  3. 验证密钥是否在Claude Desktop配置中正确配置

连接问题

  • 检查您的互联网连接
  • 验证WeatherAPI.com是否可访问
  • 检查stderr中的日志以获取详细的错误消息

日志

日志被写入stderr。查看详细日志:

./gradlew run 2>weather.log

许可证

本项目按原样提供,用于教育和发展目的。

API归因

气象数据由 WeatherAPI.com