news 2026/1/10 9:10:54

MCP服务完全指南:Python实现大模型工具调用与自定义开发

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MCP服务完全指南:Python实现大模型工具调用与自定义开发

本文详细介绍了如何使用Python搭建自己的MCP服务。通过uv工具初始化项目,利用FastMCP SDK开发服务器端并创建自定义工具(如天气查询),同时介绍了使用Cherry Studio作为MCP Host加载服务的方法。最后展示了如何开发Python MCP Client连接服务并调用工具。整个过程从环境配置到实际开发,为开发者提供了完整的MCP服务构建指南。


之前介绍了如何使用别人提供的MCP服务,今天我们来看一看如何搭建自己的MCP服务。目前MCP Server 官方给出了两种语言的SDK,分别是 NodeJS 以及 Python,由于笔者自工作以来一直使用Python,因此使用该语言来开发MCP Server和Client。

前置环境准备

在着手开发之前,先要把需要的环境准备好,MCP 官方推荐使用 uv 来进行 Python 工程的管理。

我们可以到uv官网下载安装包,依据自己的开发平台找到对应的版本,windows64一般选择如下版本:uv-x86_64-pc-windows-msvc.zip。将该压缩包解压到指定目录后,会得到如下三个文件:

为了能在电脑的命令行中使用该命令,需要将解压后的目录配置在环境变量中。

然后我们打开命令行,就可以执行uv命令了,比如我们执行uv --version就可以看到其版本信息:

MCP Server

配置好uv工具后,我们就可以使用如下命令初始化一个MCP项目了。

uv init achievement --python=3.13

初始化成功后,会自动创建一个名为achievement的文件夹,里面主要包含了一个测试文件 hello.py,项目包管理文件 pyproject.toml 以及 README.md。

然后我们可以进入到achievement文件夹中,执行如下命令安装mcp包。

uv add "mcp[cli]"

此时,该目录下会创建一个.venv虚拟环境,并自动安装一堆依赖。

环境配置完成后,我们就可以正式开发一个MCP Server了。MCP Server 的 Python SDK,分为 FastMCP SDK 和 Low-Level SDK 两种。FastMCP 是在 Low-Level 的基础上又做了一层封装,不论是写代码,还是项目依赖等,操作起来都更加简单,容易上手。在achievement文件夹下新建一个server.py的文件,并在其中定义了一个查询天气的Tool,其内容如下:

import requests from mcp.server.fastmcp import FastMCP # Create an MCP server mcp = FastMCP("achievement") # Add an get score tool @mcp.tool() def get_weather(location): # 内置city代码 cities = { "北京": "101010100", "上海": "101020100", "成都": "101270101" } # api地址 url = 'http://t.weather.sojson.com/api/weather/city/' # 通过城市的中文获取城市代码 city_code = cities.get(location) # 网络请求,传入请求api+城市代码 response = requests.get(url + city_code) # 将数据以json形式返回,这个d就是返回的json数据 d = response.json() res = str(d) return res if __name__ == "__main__": mcp.run(transport='stdio')

在使用这个Tool之前,我们还要先在此项目的虚拟环境中下载requests包,在achievement文件夹下执行下列命令:

uv add requests

这个Tool能不能使用呢?我们可以执行以下命令来进行调试:

.\.venv\Scripts\mcp.exe dev server.py 或者 npx @modelcontextprotocol/inspector .\.venv\Scripts\python.exe server.py

按住ctrl点击带token的链接,就可以进入如下页面:

点击Connect后状态变为绿色,表示连接成功。

进入到Tools选项中,点击List Tools即可列出当前可用的工具列表:get_weather,选择该工具后,右侧就会出现该工具需要输入的参数,这里我输入了北京,为了能够获取输出,需要在左侧的Configuration中将Request Timeout参数更改为100000,否则会显示超时。

调试成功后,我们就可以找个MCP Host工具来加载了,之前已经介绍过Cline了,这里再介绍一个Cherry Studio。

进入到官网主页后,点击下载客户端,会得到一个exe文件,直接运行即可安装,不在此赘述。

安装完成后,为了更好地使用模型,首先进入左下角的设置界面,选择模型服务,可以照图中的一样将阿里云百炼、深度求索、硅基流动设置好。设置过程很简单,把申请的API密钥填写后点击检测,成功后将右上方的开关开启即可使用。

设置好模型后,选择MCP服务器,首先点击右上角的图标,配置好相应的工具。

若是相应的目录里有以下三个文件,就说明工具已经配置完成了。

然后点击上方的编辑按钮。

将下面的内容填入JSON即可,记得更换为自己的程序目录。

{ "mcpServers": { "achievement": { "name": "achievement", "type": "stdio", "isActive": true, "registryUrl": "", "command": "uv", "args": [ "run", "--directory", "F:\\PycharmProject\\BigModel\\DeepSeek\\achievement", "server.py" ] } } }

点击确定后,我们就可以在页面看到MCP Server已经正确连接了。

此时,再回到对话界面,选中我们已经连接的MCP Server,模型我用的是阿里云百炼的qwen-max。

我们输入问题:北京的天气怎么样,模型便可自动调用MCP Server中的工具,并将结果反馈给我们。

这里需要注意的是,要想调用MCP Server的话,还需要模型具备调用工具的能力,以及开启该能力。

MCP Client

上面我们都是用已有的MCP Host来完成对MCP Server的连接,下面我们来看看如何通过Python语言编写一个自定义的MCP Client。

由于我们的MCP Server是在本地运行的,因此Client也需要采用Stdio模式来进行连接。

from mcp import ClientSession, StdioServerParameters from mcp.client.stdio import stdio_client # Create server parameters for stdio connection server_params = StdioServerParameters( command="uv", # Executable args=[ "run", "--directory", "F:\\PycharmProject\\BigModel\\DeepSeek\\achievement", "server.py" ], # Optional command line arguments env=None # Optional environment variables ) async def run(): async with stdio_client(server_params) as (read, write): async with ClientSession(read, write) as session: # Initialize the connection await session.initialize() # List available tools tools = await session.list_tools() print("Tools:", tools) # call a tool weather = await session.call_tool(name="get_weather", arguments={"location": "北京"}) print("weather: ", weather) if __name__ == "__main__": import asyncio asyncio.run(run())

上述代码实际上就是启动一个stdio的client,维持一个会话,等到初始化完成后,就执行工具列表查询,以及调用工具的功能。

首先我们在命令行窗口中通过以下命令把MCP Server运行起来。

uv run server.py

然后再打开一个命令行窗口,执行下列命令,就可以把Client运行起来了。

uv run client.py

总结

此篇文章主要介绍了如何在本地环境下开发一个MCP Server和MCP Client,实际上通过Fast MCP接口,可以很方便地创建。此外还介绍了Cherry Stduio的使用,它是一个时下非常流行的AI桌面客户端,功能非常强大,非常建议大家去使用起来。

​最后

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。

我整理出这套 AI 大模型突围资料包:

  • ✅AI大模型学习路线图
  • ✅Agent行业报告
  • ✅100集大模型视频教程
  • ✅大模型书籍PDF
  • ✅DeepSeek教程
  • ✅AI产品经理入门资料

完整的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
​​

为什么说现在普通人就业/升职加薪的首选是AI大模型?

人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。


智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200%,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。

​​

资料包有什么?

①从入门到精通的全套视频教程⑤⑥

包含提示词工程、RAG、Agent等技术点

② AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线

③学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的

④各大厂大模型面试题目详解

⑤ 这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

​​​​

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**

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

38、调试与性能分析全攻略

调试与性能分析全攻略 GDB 常用命令 在调试二进制文件时,GDB 提供了一系列实用的命令,以下是一些常用命令及其功能: | 命令 | 功能 | | — | — | | file | 设置正在调试的二进制文件的文件名,调试符号会从该文件加载。 | | dir | 向应用程序源代码文件的搜索路径中添…

作者头像 李华
网站建设 2025/12/31 7:35:14

LeetCode热题100(搜索插入位置)

题目描述给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。请必须使用时间复杂度为 O(log n) 的算法。代码:class Solution {public int searchInsert(in…

作者头像 李华
网站建设 2026/1/7 8:20:38

2025终极网盘下载加速方案:直链解析工具完全指南

在当前网盘限速普遍存在的环境下,如何快速获取文件真实下载地址成为用户的核心需求。网盘直链下载助手作为一款基于JavaScript开发的免费开源工具,能够帮助用户轻松绕过繁琐的下载流程,直接获取八大主流网盘的真实下载链接。 【免费下载链接】…

作者头像 李华
网站建设 2026/1/3 19:46:38

如何彻底解决OBS-NDI插件运行时缺失问题:完整修复方案

如何彻底解决OBS-NDI插件运行时缺失问题:完整修复方案 【免费下载链接】obs-ndi NewTek NDI integration for OBS Studio 项目地址: https://gitcode.com/gh_mirrors/ob/obs-ndi 当你在Windows系统中安装OBS-NDI插件后启动OBS Studio时,如果遇到&…

作者头像 李华
网站建设 2026/1/7 16:19:53

如何快速掌握Live2D AI智能助手:零基础完整指南

如何快速掌握Live2D AI智能助手:零基础完整指南 【免费下载链接】live2d_ai 基于live2d.js实现的动画小人ai,拥有聊天功能,还有图片识别功能,可以嵌入到网页里 项目地址: https://gitcode.com/gh_mirrors/li/live2d_ai 想要…

作者头像 李华
网站建设 2025/12/16 0:24:54

开源3D建模终极指南:三步搞定照片转模型实战技巧

还在为复杂的3D建模软件头疼吗?想要把手机里的照片变成精美的三维模型吗?开源3D建模技术正在彻底改变我们创建三维内容的方式,让每个人都能轻松上手。无论你是设计师、开发者,还是普通爱好者,这篇指南将带你从零开始掌…

作者头像 李华