天气查询代理

一个基于FastAPI和OpenAI SDK构建的天气查询代理,使用MCP服务器获取天气数据。

  • by andrew-mclachlan
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 andrew-mclachlan/weather-agent-mcp

使用说明

带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+和 紫外线.

  1. 安装依赖项:

    uv sync --all-groups
    
  2. 创建一个 .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())

运作原理

  1. MCP服务器 (mcp_server/server.py):提供 get_weather 返回城市天气数据的工具
  2. 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获得许可。看 许可证 了解详情。