使用说明
天气MCP服务器-示例实现
华硕和OEM合作伙伴的参考实施
一个简单的、生产就绪的MCP服务器,演示如何使用模型上下文协议将外部服务与AI PC集成。
🎯 目的
此示例MCP服务器演示了:
- ✅ 如何从头开始创建MCP服务器
- ✅ 如何向AI客户端公开工具(功能)
- ✅ 如何集成外部API(OpenWeather API)
- ✅ 生产就绪错误处理
- ✅ 干净、文档齐全的代码
非常适合:OEM合作伙伴构建AI PC功能,开发人员学习MCP,概念验证项目
🌟 特性
可用工具
-
get_current_weather-获取任何城市的实时天气- 温度、条件、湿度、风速
- 支持摄氏和华氏温度
-
get_weather_forecast-获取5天预报- 每日高温/低温
- 每日天气状况
🚀 快速开始
先决条件
- Node.js>=18.0.0
- OpenWeather API密钥(可用的免费层)
安装
# Clone or download this repository
cd weather-mcp-server
# Install dependencies
npm install
# Configure API key
cp .env.example .env
# Edit .env and add your OpenWeather API key
获取API密钥
- 访问 OpenWeather API
- 注册免费帐户
- 生成API密钥
- 增添
.env文件
运行服务器
# Start the server
npm start
# Or with auto-reload during development
npm run dev
📖 用法示例
在Claude桌面中配置
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"weather": {
"command": "node",
"args": ["/absolute/path/to/weather-mcp-server/index.js"],
"env": {
"OPENWEATHER_API_KEY": "your_api_key_here"
}
}
}
}
使用AI客户端进行测试
配置后,您可以询问您的AI助手:
"What's the weather like in Taipei?"
"Give me a 5-day forecast for Tokyo"
"What's the temperature in New York in Fahrenheit?"
AI将自动调用相应的MCP工具!
🏗️ 建筑
┌─────────────────┐
│ AI Client │ (Claude, ChatGPT, etc.)
│ (Claude Desktop)│
└────────┬────────┘
│ MCP Protocol (stdio)
↓
┌─────────────────┐
│ Weather MCP │ ← This server
│ Server │
└────────┬────────┘
│ HTTPS
↓
┌─────────────────┐
│ OpenWeather API │
└─────────────────┘
关键组件
index.js-主服务器实现@modelcontextprotocol/sdk-官方MCP SDKStdioServerTransport-通过stdin/stdout进行通信OpenWeather API-外部天气数据源
📁 项目结构
weather-mcp-server/
├── package.json # Dependencies and scripts
├── index.js # Main MCP server code
├── .env.example # Environment variables template
├── .env # Your API keys (git-ignored)
├── README.md # This file
├── README.zh-TW.md # 繁體中文版
├── PARTNER-GUIDE.md # Detailed guide for OEM partners
└── examples/
└── client-example.js # Example client code
🛠️ 发展
编码结构
服务器被组织成清晰的部分:
- 配置 -API密钥、URL
- WeatherServer类 -主服务器逻辑
- 工具注册 -定义可用工具
- 工具操作员 -实现工具功能
- 错误处理 -强大的错误管理
添加新工具
// 1. Add tool definition in setupToolHandlers()
{
name: 'your_new_tool',
description: 'What this tool does',
inputSchema: {
type: 'object',
properties: {
param1: { type: 'string', description: 'Parameter description' }
},
required: ['param1']
}
}
// 2. Add handler in CallToolRequestSchema
case 'your_new_tool':
return await this.yourNewTool(args.param1);
// 3. Implement the method
async yourNewTool(param1) {
// Your logic here
return {
content: [{
type: 'text',
text: 'Result'
}]
};
}
🧪 测试
手动测试
# Test the MCP server directly
npm test
集成测试
使用随附的 examples/client-example.js 以编程方式测试工具调用。
📝 API 参考
工具: get_current_weather
参数:
city(字符串,必填)-城市名称(例如“台北”、“东京”)units(字符串,可选)-“公制”(默认)或“英制”
退货:
🌤️ Current Weather in Taipei, TW
Temperature: 25.3°C (feels like 26.1°C)
Condition: Clear - clear sky
Humidity: 65%
Wind Speed: 3.2 m/s
Pressure: 1013 hPa
Visibility: 10.0 km
Last updated: 11/14/2025, 10:30:00 AM
工具: get_weather_forecast
参数:
city(字符串,必填)-城市名称units(字符串,可选)-“公制”(默认)或“英制”
退货:
📅 5-Day Weather Forecast for Taipei, TW
11/14/2025:
High: 26.5°C | Low: 22.1°C
Condition: Clear
11/15/2025:
High: 27.2°C | Low: 23.4°C
Condition: Clouds
...
🔒 安全最佳实践
在此示例中实现:
- ✅ 存储在环境变量中的API键(不在代码中)
- ✅ 所有参数的输入验证
- ✅ 正确的错误处理(无敏感数据泄露)
- ✅ 用于外部API调用的HTTPS
- ✅ 最小依赖性(减少攻击面)
对于生产部署:
- 🔐 使用机密管理系统(AWS机密管理器、Azure密钥库)
- 🔐 实施速率限制
- 🔐 添加请求日志记录/监控
- 🔐 如果远程部署,请使用TLS进行MCP通信
🌐 本地化
此服务器通过OpenWeather API支持多种语言:
// Add language parameter to API call
const url = `${API_BASE_URL}/weather?q=${city}&units=${units}&lang=zh_tw&appid=${API_KEY}`;
支持的语言:en、zh_tw、zh_cn、ja、ko和 50+更多
🐛 故障排除
常见问题
“未找到城市”
- 检查城市名称的拼写
- 尝试包括国家代码:“Taipei,TW”
“天气API错误:未经授权”
- 在中验证您的API密钥
.env - 在openweathermap.org上检查API密钥是否处于活动状态
“找不到模块”
- 跑
npm install - 检查Node.js版本>=18.0.0
在Claude中未检测到MCP服务器
- 验证
claude_desktop_config.json路径 - 重新启动克劳德桌面
- 检查服务器日志是否有错误
📚 了解更多
MCP资源
天气API
🤝 OEM合作伙伴
看 PARTNER-GUIDE.md 为了:
- 详细的集成指南
- 部署选项
- 定制示例
- 生产检查表
- 支持信息
联系: partners@irisgo.ai
📄 许可证
MIT许可证-请参阅 许可证 文件
🙏 鸣谢
- 由...创建:IrisGo。AI团队
- MCP协议:人类学
- 天气数据:开放天气
- 对于:华硕和AI PC OEM合作伙伴
📮 支持
- 问题: GitHub问题
- 电子邮件: support@irisgo.ai
- 文档: irisgo.ai博士
最后更新: 2025-11-14 版本: 1.0.0
