news 2026/5/7 9:07:43

快速构建MCP工具的开发包FastMCP

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
快速构建MCP工具的开发包FastMCP

FastMCP是一个用于快速构建MCP(Model Context Protocol)服务器的Python框架,它能帮你轻松地将自定义工具和数据源接入大型语言模型(LLM)。你的核心需求是查询天气和热点新闻,这正是FastMCP的典型应用场景。

📦 FastMCP核心概念与安装

为了高效开发,了解其核心概念很有帮助。你可以把它看作是为LLM构建“API”的专用框架。

核心概念作用简单类比
工具 (Tools)让LLM执行具体操作,如查询天气、搜索新闻。可执行的函数
资源 (Resources)向LLM提供只读数据,如配置文件、静态文档。数据文件或只读API
提示 (Prompts)为LLM定义可复用的对话模板。预设好的对话脚本

安装FastMCP非常简单,推荐使用uv进行高效的依赖管理:

# 安装uvbrewinstalluv# macOS系统# 使用uv安装FastMCPuv pipinstallfastmcp

🌦️ 实战一:构建天气查询工具

要查询天气,通常需要调用第三方天气API。这里提供一个基于美国国家气象局 (NWS) API的示例,该API免费且无需注册。

fromtypingimportAnyimporthttpxfromfastmcpimportFastMCP# 初始化FastMCP服务器mcp=FastMCP("Weather Server")# 常量NWS_API_BASE="https://api.weather.gov"USER_AGENT="weather-app/1.0"asyncdefmake_nws_request(url:str)->dict[str,Any]|None:"""辅助函数:向NWS API发起请求"""headers={"User-Agent":USER_AGENT,"Accept":"application/geo+json"}asyncwithhttpx.AsyncClient()asclient:try:response=awaitclient.get(url,headers=headers,timeout=30.0)response.raise_for_status()returnresponse.json()exceptException:returnNone@mcp.tool()asyncdefget_forecast(latitude:float,longitude:float)->str:"""获取指定经纬度的天气预报。 参数: latitude: 纬度 longitude: 经度 """# 1. 获取该坐标点的预报接口地址points_url=f"{NWS_API_BASE}/points/{latitude},{longitude}"points_data=awaitmake_nws_request(points_url)ifnotpoints_data:return"无法获取该地点的预报数据。"# 2. 获取详细的天气预报forecast_url=points_data["properties"]["forecast"]forecast_data=awaitmake_nws_request(forecast_url)ifnotforecast_data:return"无法获取详细的预报信息。"# 3. 格式化返回未来5个时段的预报periods=forecast_data["properties"]["periods"][:5]forecasts=[]forperiodinperiods:forecast=f"""{period['name']}: 温度:{period['temperature']}°{period['temperatureUnit']}风速:{period['windSpeed']}{period['windDirection']}详情:{period['detailedForecast']}"""forecasts.append(forecast)return"\n---\n".join(forecasts)if__name__=="__main__":# 启动服务器mcp.run()

⚠️注意:此工具基于美国国家气象局(NWS) API,主要覆盖美国地区。如需查询全球天气,可以改用OpenWeatherMap等商业API(通常需要注册并获取API密钥)。

📰 实战二:获取热点新闻

要获取热点新闻,我们可以通过调用聚合新闻的RSS或API来实现。下面是一个示例,它使用了News API(需要注册获取免费API密钥)。

importosimporthttpxfromfastmcpimportFastMCP# 初始化FastMCP服务器mcp=FastMCP("News Server")NEWS_API_KEY=os.getenv("NEWS_API_KEY")# 请将你的API密钥设置在环境变量中NEWS_API_BASE="https://newsapi.org/v2"@mcp.tool()asyncdefget_top_headlines(category:str="general",country:str="us")->str:"""获取指定分类和国家的头条新闻。 参数: category: 新闻分类,如 business, entertainment, general, health, science, sports, technology country: 国家代码,如 us, gb, cn """ifnotNEWS_API_KEY:return"错误:未配置NEWS_API_KEY环境变量。"url=f"{NEWS_API_BASE}/top-headlines"params={"apiKey":NEWS_API_KEY,"category":category,"country":country,"pageSize":10# 获取10条新闻}asyncwithhttpx.AsyncClient()asclient:try:response=awaitclient.get(url,params=params,timeout=30.0)response.raise_for_status()data=response.json()excepthttpx.RequestErrorase:returnf"请求出错:{e}"excepthttpx.HTTPStatusErrorase:returnf"API返回错误:{e.response.status_code}"ifdata["status"]!="ok"ordata["totalResults"]==0:return"未找到相关新闻。"articles=data["articles"]news_list=[]foridx,articleinenumerate(articles,1):news_list.append(f"{idx}.{article['title']}\n"f" 来源:{article['source']['name']}\n"f" 发布时间:{article.get('publishedAt','N/A')}\n"f" 摘要:{article.get('description','暂无描述')}\n")returnf"找到{len(articles)}条新闻:\n\n"+"\n".join(news_list)if__name__=="__main__":# 运行服务器mcp.run()

🚀 运行、调试与集成

创建好工具后,你需要运行服务器并连接到LLM客户端。

  1. 运行与调试
    最便捷的方式是使用fastmcp dev命令。这会启动一个带图形界面的MCP Inspector,你可以在其中直接测试刚编写的工具,查看参数和返回结果。

    fastmcp dev weather_news_server.py
  2. 集成到LLM客户端
    调试无误后,可以将服务器安装到支持MCP的桌面应用(如Claude Desktop)中。

    fastmcpinstallweather_news_server.py --name"我的天气新闻工具"

    安装后,在Claude等助手中,你就可以直接问:“查询纽约的天气”或“给我看看今天的科技新闻”,模型会自动调用对应的工具并返回结果。

为了让你更清晰地了解完整的开发流程,下图总结了从创建工具到集成使用的关键步骤:

flowchart TD A[定义工具函数] --> B[使用 mcp.tool 装饰器注册] B --> C[使用 fastmcp dev 调试] C --> D[使用 fastmcp install 部署到客户端] D --> E[在LLM客户端中<br>(如Claude)通过对话调用]

总的来说,FastMCP通过其简洁的Python接口,极大地降低了为大语言模型开发外部工具的门槛。除了天气和新闻,你还可以用同样的方式创建计算、文件处理、数据库查询等任何你需要的工具

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/30 22:59:54

一站式虾分发平台在应用分发与内测分发领域表现出色

一站式虾分发平台在应用分发与内测分发领域表现出色&#xff0c;其核心优势在于高效、安全、灵活且功能全面&#xff0c;能够满足开发者从内测到正式发布的全流程需求。以下是对虾分发平台的详细分析&#xff1a; 一、平台定位与核心功能 虾分发平台专注于移动应用的内测分发…

作者头像 李华
网站建设 2026/5/2 8:14:01

《自指隐》

《自指隐》一隐藏于无始 菩提影碎镜痕空 自指幽玄未示踪 不立菩提非毁镜 无痕大冶隐炉风二隐藏于万象 青山不语即说法 流水无形已演宗 一叶飘零藏宇宙 微尘旋转隐时空三隐藏于作用 剑刃光寒不显锋 弦音妙处本无宫 行云施雨皆潜化 余照山河在暗中四隐藏于相见 见面不识真面目 闻…

作者头像 李华
网站建设 2026/5/7 5:10:56

《余行论·通约篇》——东西方追寻的自指同归

引言&#xff1a;人类的双重追寻在人类精神演化的宏大图景中&#xff0c;两条追寻之路平行延展了数千年&#xff1a;东方贤哲向内探求心性本源&#xff0c;西方智者向外探索宇宙规律。表面上&#xff0c;这两条道路南辕北辙——一者重直觉体悟&#xff0c;一者重理性分析&#…

作者头像 李华
网站建设 2026/4/30 14:38:48

计算机毕设java人生感悟总结分享与遗嘱设立系统 基于Java的个人成长与人生规划管理系统 Java驱动的人生回顾与未来规划综合平台

计算机毕设java人生感悟总结分享与遗嘱设立系统7s7l69&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。随着社会的快速发展和人们生活水平的不断提高&#xff0c;越来越多的人开始…

作者头像 李华
网站建设 2026/5/3 18:20:40

Pts物理引擎实战:从零构建动态粒子世界

你是否曾想过&#xff0c;如何在网页上创造出令人惊叹的物理效果&#xff1f;当粒子在屏幕中自由飞舞、相互碰撞时&#xff0c;那种动态的美感是如何实现的&#xff1f;今天&#xff0c;就让我们一同探索Pts物理引擎的奥秘&#xff0c;亲手打造一个充满活力的粒子世界&#xff…

作者头像 李华