上篇文章,我们聊到了 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.pswp.cn/pingmian/94495.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/94495.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/94495.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leecode-三数之和

思路 我的思路先顺序遍历一个变量,然后使用首尾双指针去遍历&#xff0c;根据结果去更新另外两个变量&#xff0c;如何和为零&#xff0c;将结果加入集合&#xff0c;但是这里要注意去重。 class Solution {public List<List<Integer>> threeSum(int[] nums) {// 排…

【数学建模】灰色关联分析的核心步骤

文章目录步骤一&#xff1a;读数据步骤二&#xff1a;指标正向化步骤三&#xff1a;数据标准化步骤三&#xff1a;数据标准化步骤四&#xff1a;结果处理步骤一&#xff1a;读数据 步骤一&#xff1a;读数据 X xlsread(‘blind date.xlsx’); % 读取Excel文件中的相亲数据 详…

基于高德地图的怀化旅发精品路线智能规划导航之旅

目录 前言 一、2025湖南旅发 1、关于旅发 2、精品路线发布 二、高德技术赋能 1、地理编码服务简介 2、地理编码服务参数介绍 3、自驾路径规划 4、自驾路径规划参数介绍 三、Java集成高德地图服务 1、业务调用时序 2、Java地理编码服务 3、Java路径规划 4、整体集成…

OpenCV实战1.信用卡数字识别

1. 任务说明 有如下几张信用卡&#xff0c;我们需要根据模板匹配出其中的数字&#xff0c;进行卡号的识别2. Debug源码 cursor的debug&#xff1a;launch.json&#xff1a; {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息&#xff0c;请…

Spring Security 深度学习(一): 基础入门与默认行为分析

目录1. 引言&#xff1a;为何选择Spring Security&#xff1f;2. 核心概念&#xff1a;认证 (Authentication) 与 授权 (Authorization)2.1 什么是认证 (Authentication)&#xff1f;2.2 什么是授权 (Authorization)&#xff1f;2.3 安全性上下文 (SecurityContext)3. Spring B…

数学建模--模糊综合评价法

一、概念 模糊综合评价法是一种基于模糊数学的综合评价方法。它针对评价过程中存在的模糊性&#xff08;如 “好”“较好”“差” 等模糊概念&#xff09;&#xff0c;通过建立模糊集合&#xff0c;将定性评价转化为定量评价&#xff0c;从而对具有多种属性的评价对象做出全面、…

科普 | 5G支持的WWC架构是个啥(2)?

为解决有线固定宽带与无线移动宽带融合问题&#xff0c;3GPP在5G中推出了WWC系统架构。它将两种接入类型统一融合到5G核心网络。这有助于运营商简化控制、简化管理并为终端用户提供一致服务&#xff1b;其中&#xff1a;一、5G核心组件包括&#xff1a;AMF(接入和移动性管理功能…

达梦数据库配置文件-COMPATIBLE_MODE

达梦数据库配置文件-COMPATIBLE_MODE 获取系统参数 SQL 语句: select distinct para_type from v$dm_ini;这句的意思是:从达梦数据库的参数视图 v$dm_ini 中,查询所有不同类型的参数分类(去重)。 ✅ 输出结果解析 行号 PARA_TYPE ---------- --------- 1 RE…

能源行业数据库远程运维安全合规实践:Web化平台的落地经验

背景&#xff1a;远程运维下的数据管理挑战在能源行业&#xff0c;企业通常在全国范围内部署分布式设施。每个电站或运维中心都有独立数据库&#xff0c;用于&#xff1a;记录设备状态、传感器数据和维护日志&#xff1b;存储实时生产指标和能耗统计&#xff1b;生成定期运维报…

数据结构Java--8

二叉搜索树像上图这样满足&#xff0c;任意一棵子树的左子树小于该子树的根结点&#xff0c;右子树大于该子树的根结点&#xff0c;满足这样的条件&#xff0c;则这种树就被称为二叉搜索树。public class BinarySearchTree {static class TreeNode {public int val;public Tree…

使用Spring Boot和EasyExcel导出Excel文件,并在前端使用Axios进行请求

在现代企业应用中&#xff0c;Excel文件的导出是一项常见且重要的功能。Spring Boot作为Java开发中的热门框架&#xff0c;结合EasyExcel这样的高效库&#xff0c;能够轻松实现Excel的导出功能。而在前端&#xff0c;使用Axios进行HTTP请求&#xff0c;可以方便地与后端进行数据…

图论水题5

cf796D 题意 n个点n-1条边&#xff0c;k个特殊点以及整数d&#xff0c;要求删除最多的边保证每个点都可以在d步之内到达一个特殊点&#xff0c;输入保证每个点都可以在d步内到达特殊点 思路 考虑什么时候可以删除一条边&#xff0c;即这条边连接的两个点可以在d步内到达两个不同…

像WPS Office 一样处理pdf页面尺寸

1. 修改页面尺寸import os import shutil import fitz # PyMuPDFdef cm_to_px(cm):# 厘米转换成像素"""doc fitz.open(input_file)page0 doc[0]width_px page0.mediabox.widthheight page0.mediabox.heightprint(fwidth_px&#xff1a;{width_px} height&a…

Linux 基础开发工具

在 Linux 环境下进行开发&#xff0c;熟练掌握基础工具是提升效率、解决问题的核心前提。无论是软件安装、代码编辑&#xff0c;还是编译调试、版本管理&#xff0c;一套 “趁手” 的工具链能让开发过程事半功倍。本文将从 Linux 开发最核心的七大工具模块入手&#xff0c;一步…

TapData vs Kafka ETL Pipeline:竞争?共存?——企业实时数据策略的正确打开方式

【引言】企业实时数据流转&#xff0c;迎来“集成计算”新范式 企业 IT 架构的演进&#xff0c;从最初的数据孤岛&#xff0c;到集中式数据仓库&#xff0c;再到如今的实时数据驱动架构。在这一过程中&#xff0c;数据的集成&#xff08;数据源→目标&#xff09;与数据的计算&…

十九、云原生分布式存储 CubeFS

十九、云原生分布式存储 CubeFS 文章目录十九、云原生分布式存储 CubeFS1、分布式存储初识1.1 分布式存储主要特性1.2 为什么要在K8s上落地存储平台1.3 云原生存储平台CubeFS介绍1.4 分布式存储平台落地架构1.4.1 混合部署1.4.2 独立部署-基础设施集群1.5 资源分配建议1.6 硬件…

如何拯救一家濒临破产的科技公司?

从谷底爬起&#xff1a;Medium 的生死重生之路 2022年的 Medium&#xff0c;正坠入一个深不见底的深渊。 每月亏损260万美元&#xff0c;订阅用户持续流失——这不是增长&#xff0c;而是在消耗资本。更致命的是内容质量&#xff1a;平台充斥着“快速致富学”等空洞内容&#x…

数据结构-算法(一)

一、已知无向图的邻接矩阵&#xff0c;求无向图的邻接表。 &#xff08;1&#xff09;提示&#xff1a;无向图如下图(a)所示&#xff0c;已知邻接矩阵如图(b)所示&#xff0c;求对应的邻接表(c)。&#xff08;2&#xff09;请定义void adjMatrix_2_adjList(int b[4][4], AdjLis…

2025年嵌入式通信电源系统品牌有哪些?

现在科技跑得飞快&#xff0c;嵌入式通信电源系统可是越来越吃香了&#xff0c;尤其是在5G、物联网、智能家居这些热门地方。这玩意儿不光能让设备稳稳当当干活儿&#xff0c;还特省电、贼聪明&#xff0c;优势杠杠的&#xff01;既然大家伙儿都这么需要它&#xff0c;那到了20…