上篇文章,我们聊到了 MCP 的基本概念,带大家快速入门了 MCP。
说入门应该毫不夸张,对于科普性质的文章,只需要知道这件事情的诞生背景以及有什么作用就可以了。
但是,如果要开发给大模型调用的 Mcp Server,就不得不学习更深入的知识了。
今天,就带大家快速开发一个简易版的天气查询 Mcp Server。
文章目录
- 1. Mcp Server的设计思路
- 2. 使用什么技术实现?
- 3. 一步步实现天气查询 Mcp Server
- 4. 幕后工作
- 5. 小结
1. Mcp Server的设计思路
在开发之前,很有必要提前分析一下设计思路。
对于天气查询 Mcp Server,可能要问下面的这些问题:
- 用户的输入是什么?查询城市、查询日期?
- 用户的输入是什么格式的?文本。当然,如果是有界面的,用户更希望通过控件输入日期。
- 输出有哪些?最基本的:最低和最高温度,几级风。
但,上面这些问题都是本着我们的工作经验提出来的。如果问一下大模型,它会是怎么思考的?
我问 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。