MCP工具开发:写一个Agent能用的天气查询工具

📘 教程 2026-07-17 · 更新于 2026-08-27 约 2 分钟阅读

MCP工具开发:写一个Agent能用的天气查询工具

💡 你将学到

MCP工具开发:写一个Agent能用的天气查询工具

📜 目录

MCP工具开发:写一个Agent能用的天气查询工具

MCP(Model Context Protocol)是Anthropic推出的开放协议,解决"AI怎么调用你的工具"这个问题。协议定好后,Agent能自动学会调用:你不用写提示词、不用做编排,把工具声明出来就行。这篇用免费的天气API,从零写一个Agent能直接用的MCP工具。

一、先搞懂MCP的三个概念

概念 作用 类比
Tool(工具) Agent可调用的函数 给AI的"手"
Resource(资源) 可读取的数据/文件 给AI的"眼睛"
Prompt(提示词模板) 预置的调用模板 给AI的"话术"

本文只做Tool,最常用也最好上手。

二、准备:Python环境+免费天气API

需要Python 3.10+,装两个包:

pip install "mcp[cli]" fastmcp

天气数据用Open-Meteo:免费、无需API key、无需注册,个人项目随便用(以官网条款为准)。它提供两个接口:geocoding(城市名转坐标)和forecast(按坐标查天气)。

三、写工具:完整代码

from fastmcp import FastMCP
import httpx

mcp = FastMCP("weather")

@mcp.tool
def get_weather(city: str) -> dict:
    """查询指定城市的当前天气。city为城市名,如"北京"或"Beijing"。"""
    # 1. 城市名转经纬度
    geo = httpx.get(
        "https://geocoding-api.open-meteo.com/v1/search",
        params={"name": city, "count": 1},
        timeout=10,
    ).json()
    if not geo.get("results"):
        return {"error": f"找不到城市: {city}"}
    lat, lon = geo["results"][0]["latitude"], geo["results"][0]["longitude"]

    # 2. 按坐标查天气
    weather = httpx.get(
        "https://api.open-meteo.com/v1/forecast",
        params={"latitude": lat, "longitude": lon, "current_weather": "true"},
        timeout=10,
    ).json()

    return {
        "city": city,
        "temperature_c": weather["current_weather"]["temperature"],
        "windspeed_kmh": weather["current_weather"]["windspeed"],
    }

if __name__ == "__main__":
    mcp.run()

三处关键设计:

四、运行与接入Agent

开发调试:运行 mcp dev weather.py 打开本地调试界面,可以直接模拟Agent调用看返回。

接入Claude Desktop:在配置文件(claude_desktop_config.json)的 mcpServers 里加一条:

{"mcpServers": {"weather": {"command": "python", "args": ["/path/to/weather.py"]}}}

其他支持MCP的客户端(Cursor、自研Agent等)同样用stdio方式启动本工具。配置完成后问一句"北京现在多少度",Agent会自动调用你的工具,而不是瞎编一个温度。

五、进阶:加第二个工具

再加一个"查未来7天预报"的工具,只需要复制一个函数、改docstring和返回字段。多个工具时,工具名和描述别含糊,否则Agent会选错工具。

六、常见坑

常见问题

Q:和Function Calling有什么区别? A:本质都是"给模型注册函数"。MCP的价值是标准化:同一套工具可以接入Claude、Cursor、自研Agent等任意支持MCP的客户端,不用给每家写一套适配。

Q:必须用FastMCP吗? A:不是。官方Python SDK(mcp包)也可以,FastMCP是社区封装,代码更短。TypeScript/Java也有官方SDK。

Q:工具部署在服务器,Agent在本地,怎么连? A:除了stdio(本地进程),MCP还支持HTTP/SSE方式远程连接,把工具部署成服务,客户端配一个URL即可。

注:Open-Meteo的免费额度与使用条款以官网为准;MCP规范持续演进,接口细节以官方文档为准。

相关文章

相关文章
2026-07-19
用FastAPI搭建AI Agent API:从零到生产部署完整教程(2026)
2026-07-17
AI Agent Backup Restore:构建可靠AI Agent的必备实践
2026-07-17
AI Agent防抖策略:用户打字时别急着调API

本站文章由编辑人工撰写,收录的工具均经过实测或公开资料核验。文中链接指向工具官网或 GitHub 仓库,仅作信息参考,不构成付费推广。

💬 评论 (0)

暂无评论,来说两句吧~

登录后评论