一个简单的 MCP 服务器,通过 OpenWeatherMap API 获取天气信息,并使用 OpenAI 的 GPT-4o-mini 作为交互界面。
# 创建虚拟环境
python3 -m venv venv
# 激活虚拟环境
# 在 macOS/Linux 上:
source venv/bin/activate
# 在 Windows 上:
venv\Scripts\activate
# 安装依赖
pip3 install -r requirements.txt
在项目根目录创建 .env 文件:
# OpenWeatherMap API 密钥(免费)
# 获取地址:https://openweathermap.org/api
OPENWEATHER_API_KEY=你的密钥在这里
# OpenAI API 密钥
# 获取地址:https://platform.openai.com/api-keys
OPENAI_API_KEY=你的密钥在这里
如何获取密钥:
OpenWeatherMap:
OpenAI:
# 直接运行客户端
python3 client.py
启动后,可以使用自然语言询问天气:
👤 你:莫斯科现在的天气怎么样?
🤖 助手:[显示莫斯科当前天气]
👤 你:圣彼得堡未来五天的天气预测是怎样的?
🤖 助手:[显示五天天气预测]
👤 你:今天在伦敦应该穿什么?
🤖 助手:[检查天气并给出建议]
如果想不带客户端测试服务器:
# 使用 MCP Inspector
uv run mcp dev server.py
# 或者安装到 Claude Desktop
uv run mcp install server.py --name "Weather Service"
weather-mcp-server/
├── server.py # 包含天气工具的 MCP 服务器
├── client.py # 使用 OpenAI 和 mcp-use 的客户端
├── .env # API 密钥(不要提交到 Git!)
├── requirements.txt # Python 依赖
└── README.md # 此文档
get_current_weather获取指定城市的当前天气
参数:
city (必需):城市名称units (可选):"metric" 或 "imperial"get_forecast获取指定城市的未来几天天气预报
参数:
city (必需):城市名称days (可选):天数(1-5)units (可选):"metric" 或 "imperial"print() - 这会破坏 STDIO 传输.env - 添加到 .gitignore错误:“未找到 OPENWEATHER_API_KEY”
.env 文件是否已创建且包含密钥错误:“无法获取天气”
服务器无法启动