当前位置: 首页 > news >正文

写一个天气查询Mcp Server

上篇文章,我们聊到了 MCP 的基本概念,带大家快速入门了 MCP。

说入门应该毫不夸张,对于科普性质的文章,只需要知道这件事情的诞生背景以及有什么作用就可以了。

但是,如果要开发给大模型调用的 Mcp Server,就不得不学习更深入的知识了。

今天,就带大家快速开发一个简易版的天气查询 Mcp Server。

文章目录

  • 1. Mcp Server的设计思路
  • 2. 使用什么技术实现?
  • 3. 一步步实现天气查询 Mcp Server
  • 4. 幕后工作
  • 5. 小结

1. Mcp Server的设计思路

在开发之前,很有必要提前分析一下设计思路。

对于天气查询 Mcp Server,可能要问下面的这些问题:

  1. 用户的输入是什么?查询城市、查询日期?
  2. 用户的输入是什么格式的?文本。当然,如果是有界面的,用户更希望通过控件输入日期。
  3. 输出有哪些?最基本的:最低和最高温度,几级风。

但,上面这些问题都是本着我们的工作经验提出来的。如果问一下大模型,它会是怎么思考的?

我问 DeepSeek:

剩下的内容我就不贴出来了,原因是看到 DeepSeek 回答的第三点就让人懵圈了。

因为我们是 Mcp 的新手,很多概念还不清楚,对于一个 Demo 程序,也不需要考虑那么多因素。

这里你会发现人的学习方式,还是和 AI 有很大的不同。

人面对新事物,一次只能了解很少的概念,多了就记不住,感觉好像没听过一样。但是,AI 的学习是通过数据、模型和算力。比学习速度,人永远也比不上AI。

现在我的 MCP Server 需求很简单:用户可以输入城市和日期,查询制定日期的天气,返回的输出可以只包含温度和风力大小。

2. 使用什么技术实现?

下面才需要考虑用什么技术实现一个 Mcp Server。这里选择使用 Python 编程语言实现。

使用 Python 实现一个 Mcp Server 有哪些方式呢?有下面几种:

  • FastMcp库:适合快速原型开发
  • McpServer库:官方 SDK,适合用来学习深入理解协议细节
  • FastAPI:适合企业级集成
  • SSE:适合实时天气警报。

因此,这里我选择了 FastMCP。

什么是FastMCP?

FastMCP是一个高效构建Model Context Protocol(MCP)服务器的Python框架。通过简洁的装饰器语法让开发者快速为大型语言模型(LLM)提供上下文数据和工具支持。它简化了MCP协议实现,支持工具(Tools)、资源(Resources)和提示(Prompts)三大核心功能,能以极简代码实现AI与外部系统的安全交互,显著提升LLM应用开发效率。

3. 一步步实现天气查询 Mcp Server

Step1: 使用 uv Python 包管理器创建一个 Python 虚拟环境。

uv venv venv

这样创建了一个名为 venv 的 Python 虚拟环境。当然,你也可以指定 Python 的版本。用法问一下大模型就好了。

当然,需要先使用 pip install uv 安装 uv。

然后,记得在命令行激活这个虚拟环境。

之后在虚拟环境安装 Python 包都必须使用 uv pip install packages。大模型也可能没有意识到这点。

Step2: 在高德控制台注册一个账号,并创建一个用于 Web 服务的 key。

官网有教程,就不再赘述了。

Step3:让大模型使用 FastMCP 创建一个天气查询 MCP Server。

写提示词的时候,一定要明确输入和输出。不然,大模型就要开始自行发挥了。

限于篇幅,这篇文章不会详细讲解如何使用 FastMCP。

在与大模型战斗三百回合后,你的 MCP Server 基本功能终于开发完成了。

这里展示一个核心函数:

代码较长,不贴代码了,大模型生成的。

Step4:测试 MCP Server

然后,你肯定想测试一下 MCP Server 能否正常工作。

那么,测试 MCP Server 有哪几种方法呢?

  • MCP Inspector:MCP Inspector是官方提供的专业调试工具,推荐。
  • 集成开发环境测试:Claude Desktop 或者 cline 插件。使用有难度。
  • MCP 客户端程序:写一个访问 MCP Server 的客户端程序。新手不推荐,难度颇大。

我真的没想到大模型 Claude Sonnet 4 上来就给我选择了写一个 MCP 客户端程序,结果调试半天原来是客户端程序写错了。

最后,大模型终于回到了简易模式,开始尝试用 MCP Inspector 调试:

在激活了虚拟环境的终端输入以下命令:
npx @modelcontextprotocol/inspector python fastmcp_server.py

安装之后,浏览器自动打开如下的界面:

恭喜你,成功了一半。

如果能连接上 Mcp Server,就快大功告成了。

连接成功之后,点击【Tools】按钮,可以看到服务端注册的、可供大模型访问的工具。

查询广州城市的天气预报试试:

可以查询到今天以及未来几天的天气:

大功告成,基本的功能具备了。尽管,距离一个企业级的 Mcp Server 还很遥远,但这是一个很好的开始。看下时间,这多少个 10 分钟过去了。

4. 幕后工作

刚开始,我是打算通过 Gradio 库来构建 Mcp Server的。

但是,在实现的过程中遇到了很多问题,大模型还是没有解决。所以,暂时放弃了。

有时候,大模型真的很聪明,有时候也真的很傻X。

大模型自作主张帮我创建了几个 markdown 文档:API配置文章、API测试总结报告等。

其实,我根本就没有给大模型指令创建这些文档,它竟然自己生成了它们。我真的不知道这是好事情,还是坏事情。

当它生成的程序满足我们的要求时,文档也是正确的,这很好。但如果生成的程序功能不正确时,我们是不是还要回过头来改文档?

5. 小结

这篇文章带你使用 FastMCP 实现了一个查询天气 Mcp Server。核心思路如下:

  • 这个天气查询 Mcp Server 需要具备哪些功能、输入和输出是什么?

  • 使用什么技术实现?

  • 怎么测试?

你觉得整个过程下来,10分钟能够实现一个简易版的 Mcp Server 吗?

现在你还觉得 AI 会替代 90% 的程序员吗?

我是一梵AI编程,聚焦AI编程、AI变现,用 AI 打败 AI。

http://www.dtcms.com/a/354030.html

相关文章:

  • 2025年9月计算机二级C++语言程序设计——选择题打卡Day8
  • urdf文件可以使用的一些工具(urdf检查和可视化)
  • 【leetcode】100.相同的树
  • Elasticsearch核心配置详解与优化
  • SAP 怎么知道物料的自动过账流程
  • DFT、CHORD
  • “上门经济”的胜利:深度解析家政O2O如何用“用户体验”重塑传统行业
  • 【双指针- LeetCode】15.三数之和
  • CPLD和FPGA的区别
  • LeetCode 560. 和为 K 的子数组
  • Linux827 测试
  • Linux MDIO 深入分析
  • 电子电气架构 --- 软件项目复杂性的驾驭思路
  • [Sync_ai_vid] UNet模型 | 音频特征提取器(Whisper)
  • FPGA实现Aurora 64B66B图像视频传输,基于GTY高速收发器,提供2套工程源码和技术支持
  • 第三阶段数据库-10:存储过程,事务,异常,视图,自定义函数,触发器,N关键字
  • synchronized和Lock有什么区别?
  • Vue3》》基础
  • Ubuntu 20.04.6交叉编译得到Ubuntu 16.04.6的可执行文件
  • 5GNR CSI反馈 TypeI码本
  • Shader开发(十七)着色器中的纹理采样与渲染
  • OpenCV4.X库功能全解---个人笔记
  • 基于51单片机温度控制系统报警器恒温箱水温设计
  • Oh My Zsh + Tabby 终端配置指南
  • CB1-2-基础启航
  • 工业 DCS 全面科普:从入门到 AI 赋能的未来
  • 大视码垛机器人:以技术优势撬动工业码垛升级
  • 【datawhale组队学习】RAG技术 -TASK05 向量数据库实践(第三章3、4节)
  • Scala面试题及详细答案100道(21-30)-- 面向对象编程
  • 丝杆支撑座如何助力自动化设备精准定位?