带MCP服务器的天气专家代理
一个使用FastAPI和OpenAI SDK构建的简单天气专家代理,使用带有快速MCP的MCP服务器获取天气数据。
项目结构
weather-agent-mcp/
├── .github/
│ └── workflows/
│ ├── code-quality.yml # CI checks (ruff, black, pyright)
│ └── scanoss.yml # SCANOSS license/security scanning
├── agent/
│ └── main.py # FastAPI agent with OpenAI SDK
├── mcp_server/
│ └── server.py # MCP server with weather tool
├── .env # Environment variables
├── .gitignore
├── LICENSE # Apache License 2.0
├── pyproject.toml # Project config and dependencies
├── test.sh # Manual test script
└── uv.lock # Locked dependencies设置
需要Python 3.10+和 紫外线.
- 安装依赖项:
uv sync --all-groups- 创建一个
.env使用您的OpenAI API密钥文件:
echo 'OPENAI_API_KEY=your-api-key-here' > .env运行代理
启动FastAPI代理:
uv run python agent/main.py代理人将在 http://localhost:8000
使用代理
交互式API文档
访问 http://localhost:8000/docs 用于交互式API文档。
示例请求
curl -X POST "http://localhost:8000/ask" \
-H "Content-Type: application/json" \
-d '{"question": "What is the weather like in London?"}'Python示例
import requests
response = requests.post(
"http://localhost:8000/ask",
json={"question": "What is the weather like in Paris?"}
)
print(response.json())运作原理
- MCP服务器 (
mcp_server/server.py):提供get_weather返回城市天气数据的工具 - FastAPI代理 (
agent/main.py):
- 接收用户的问题 - 使用OpenAI SDK处理问题 - 需要时调用天气工具 - 返回自然语言响应
代码质量
CI通过以下方式对pull请求运行ruff、black和pyright code-quality.yml 工作流程。一个单独的 scanoss.yml 工作流运行SCANOSS进行许可证合规性和安全扫描。
在本地运行质量检查:
uv run ruff check .
uv run black --check .
uv run pyright agent/ mcp_server/ --pythonversion 3.13示例问题
- “东京的天气怎么样?”
- “西雅图在下雨吗?”
- “跟我说说纽约的天气吧”
- “悉尼的气温是多少?”
许可证
此项目根据Apache许可证2.0获得许可。看 许可证 了解详情。
