使用说明
MCP天气项目
一个模型上下文协议(MCP)实现,包含一个天气服务器和一个使用TypeScript编写的客户端,该客户端利用Claude AI处理自然语言天气查询。
概述
这个项目通过实现以下内容来展示模型上下文协议:
- 天气MCP服务器 - 通过国家气象局API提供天气信息
- 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 退出。
它是如何工作的
- 用户查询 - 你输入一个自然语言问题
- 克劳德处理(或克劳德加工,具体翻译可能根据上下文有所调整) - 客户使用可用的MCP工具将您的查询发送给Claude AI
- 工具选择 - 克劳德决定使用哪种天气工具
- MCP服务器调用 - 客户端使用适当的参数调用天气MCP服务器
- 回应 - 天气数据已返回,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)