天气查询服务

一个基于Model Context Protocol的天气查询服务,通过Claude AI处理自然语言查询,提供美国地区的天气预报和警报信息。

  • by pikooli
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 pikooli/mcp-test

使用说明

MCP天气项目

一个模型上下文协议(MCP)实现,包含一个天气服务器和一个使用TypeScript编写的客户端,该客户端利用Claude AI处理自然语言天气查询。

概述

这个项目通过实现以下内容来展示模型上下文协议:

  1. 天气MCP服务器 - 通过国家气象局API提供天气信息
  2. MCP 客户端 - 连接到MCP服务器,并使用Claude AI处理自然语言查询

用户可以使用自然语言与天气服务器进行交互,而Claude将自动调用相应的天气工具来满足您的需求。

建筑学

┌─────────────────┐      ┌──────────────┐      ┌─────────────────┐
│  MCP Client     │─────▶│  Claude AI   │─────▶│  Weather MCP    │
│  (TypeScript)   │      │  (Anthropic) │      │  Server         │
└─────────────────┘      └──────────────┘      └─────────────────┘
        │                                               │
        │                                               │
        ▼                                               ▼
  Natural Language                              NWS Weather API
  Query Processing                              (api.weather.gov)

特点/特性

天气MCP服务器

  • 获取天气预报 - 获取美国任何地点(纬度/经度)的天气预报
  • 获取警报 - 获取美国任何州的实时天气警报

MCP 客户端

  • 使用Claude AI进行自然语言查询处理
  • 交互式聊天界面
  • 自动工具发现与调用
  • 支持JavaScript和Python MCP服务器

先决条件

  • Node.js 18及以上版本
  • npm 或 yarn
  • Anthropic API密钥(用于Claude AI)

设置

1. 安装依赖项

# Install weather server dependencies
cd weather
npm install

# Install client dependencies
cd ../mcp-client-typescript
npm install

2. 配置API密钥

创建一个 .env 文件在(某个地方/文件夹中) mcp-client-typescript 目录:

ANTHROPIC_API_KEY=your_anthropic_api_key_here

3. 构建项目

# Build weather server
cd weather
npm run build

# Build client
cd ../mcp-client-typescript
npm run build

使用方法

启动客户端

从 mcp-client-typescript 目录:

node build/index.js /Users/pascalzhang/test/mcp/weather/build/index.js

或者使用您天气服务器构建文件的绝对路径。

示例查询

一旦客户端运行起来,您就可以用自然语言提问:

Query: What's the weather forecast for San Francisco?
Query: Are there any weather alerts in California?
Query: Get the forecast for latitude 40.7128, longitude -74.0060
Query: Show me weather alerts for NY

类型 quit 退出。

它是如何工作的

  1. 用户查询 - 你输入一个自然语言问题
  2. 克劳德处理(或克劳德加工,具体翻译可能根据上下文有所调整) - 客户使用可用的MCP工具将您的查询发送给Claude AI
  3. 工具选择 - 克劳德决定使用哪种天气工具
  4. MCP服务器调用 - 客户端使用适当的参数调用天气MCP服务器
  5. 回应 - 天气数据已返回,Claude将其格式化为自然的回复

项目结构

mcp/
├── weather/                    # Weather MCP Server
│   ├── src/
│   │   ├── index.ts           # Main server implementation
│   │   └── helper.ts          # NWS API helper functions
│   ├── build/                 # Compiled JavaScript
│   └── package.json
│
├── mcp-client-typescript/     # MCP Client
│   ├── index.ts               # Client implementation
│   ├── build/                 # Compiled JavaScript
│   ├── .env                   # API keys (not in git)
│   └── package.json
│
└── readme.md                  # This file

天气服务器API

天气服务器使用美国国家气象局(NWS)API,并提供:

工具

获取警报

  • 描述获取美国某州的天气警报
  • 参数:
    • state (字符串):两字母州代码(例如,“CA”,“NY”)
  • 退货为指定州提供活跃的天气警报

获取天气预报

  • 描述获取某地的天气预报
  • 参数:
    • latitude (数字):纬度(-90至90)
    • longitude (数字):经度(-180 至 180)
  • 退货该地点的详细预报时段

注仅支持美国地区(受NWS API限制)

发展

为天气服务器添加新工具

编辑 weather/src/index.ts 并使用以下方式添加新工具:

server.tool(
  'tool_name',
  'Tool description',
  { /* zod schema */ },
  async (params) => {
    // Tool implementation
  }
);

在开发模式下运行

# Watch mode for weather server
cd weather
npm run build -- --watch

# Watch mode for client
cd mcp-client-typescript
npm run build -- --watch

参考文献

故障排除

“无法连接到MCP服务器”

  • 确保天气服务器路径正确
  • 检查天气服务器是否已构建(npm run build)

“ANTHROPIC_API_KEY未设置”

  • 创建一个 .env 文件存入 mcp-client-typescript/
  • 添加您的Anthropic API密钥

“不支持的位置”

  • 美国国家气象局(NWS)API仅支持美国地区
  • 验证坐标是否位于美国本土范围内

许可证

麻省理工学院(MIT)