天气数据服务器

一个基于PHP的MCP服务器,通过Open-Meteo API提供天气信息,支持AI应用集成。

  • by JRomeoSalazar
  • PHP
  • 本地部署
  • 更新于
在 GitHub 查看 JRomeoSalazar/mcp-weather

使用说明

MCP气象服务器

基于PHP 模型上下文协议(MCP) 通过Open-Meteo API提供天气信息的服务器。该项目演示了如何在PHP中构建MCP服务器,并将其与Claude Code等AI应用程序集成。

什么是MCP?

MCP(模型上下文协议)是用于将AI应用程序连接到外部系统的开源标准。把它想象成AI应用程序的USB-C端口——它提供了一种将AI应用程序连接到数据源、工具和工作流程的标准化方式。

特性

  • 气象数据检索:获取任何城市的当前天气和预报
  • 地理编码支持:自动将城市名称转换为坐标
  • MCP协议:基于模型上下文协议构建,实现无缝的人工智能集成
  • 自动发现:工具通过PHP属性自动发现

先决条件

  • PHP 8.0或更高版本
  • 作曲家
  • 互联网连接(用于访问Open-Meteo API)

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd mcp-weather
    
  2. 安装依赖项:

    composer install
    

用法

运行服务器

MCP服务器使用stdio传输进行通信:

php weather.php

VS代码集成

服务器已预先配置为通过以下方式集成VS代码 .vscode/mcp.json这允许像Claude Code这样的人工智能助手自动发现和使用天气工具。

可用工具

fetch-weather

获取指定城市的天气信息。

参数:

  • city (string):城市名称(例如,“伦敦”、“纽约”、“东京”)

退货: 包含天气数据的JSON字符串,包括:

  • 当前温度和条件
  • 每小时预测
  • 天气代码和说明

例子:

// Called via MCP protocol
fetch-weather("Paris")

建筑

MCP服务器配置

服务器(weather.php)使用MCP SDK的构建器模式构建:

  • 用途 StdioTransport 用于通信
  • 自动发现工具 src/ 目录
  • 工具通过PHP属性注册(#[McpTool])

数据流

  1. 城市名称 → Open-Meteo地理编码API→ 纬度/经度
  2. 坐标 → Open-Meteo预测API→ 天气数据(JSON)

项目结构

mcp-weather/
├── src/
│   ├── Mcp/
│   │   └── Weather/
│   │       └── WeatherElements.php    # Weather tool implementation
│   └── ZodPhp/                        # Custom validation library
│       ├── Zod.php
│       ├── Schema.php
│       ├── NumberSchema.php
│       ├── StringSchema.php
│       └── BooleanSchema.php
├── weather.php                        # MCP server entry point
├── composer.json                      # Dependencies
└── CLAUDE.md                          # Claude Code instructions

发展

创建新工具

要添加新的MCP工具:

  1. 在中创建类 src/Mcp/ 或子目录
  2. 使用添加公共方法 #[McpTool] 属性:
use Mcp\Attributes\McpTool;

class MyTools {
    #[McpTool(
        name: 'my-tool',
        description: 'Description of what the tool does'
    )]
    public function myTool(string $param): string {
        // Implementation
        return "result";
    }
}
  1. 服务器启动时将自动发现该工具

ZodPhp验证

该项目包括一个受Zod(TypeScript)启发的自定义验证库:

use Jorge\McpWeather\ZodPhp\Z;

// Validate numbers
$result = Z::number()->min(0)->max(100)->safe_parse($value);

// Validate strings
$result = Z::string()->min(3)->safe_parse($value);

// Validate booleans
$result = Z::boolean()->safe_parse($value);

测试验证库:

php test-zod.php

依赖项

外部API

此项目使用以下免费API:

许可证

[您的许可证在这里]

贡献

欢迎投稿!请随时提交拉取请求。

资源