【Python大语言模型系列】用 Python 快速搭建 MCP 服务器接入 大模型(案例+源码)
这是我的第469篇原创文章。一、引言Model Context Protocol (MCP) 这个协议简单说就是给大语言模型接入外部数据和工具提供了一套标准化方案。MCP 统一了模型和各种数据源、工具服务之间的交互方式。如果你有开发经验可以理解为MCP的每一个“能力”其实就是一个可远程调用的函数tool。只要你能和 MCP Server 建立通信通常通过 WebSocket、Stdio 或 HTTP RPC你就可以像调用 REST API 一样调用 MCP 的函数。只不过MCP 的「函数」并不是像 Python RPC 那样“自动调用”它还需要定义Schema输入输出结构 元信息描述告诉大语言模型怎么用、什么时候用、怎么传参数。官方 SDK 当然也能实现 MCP 服务器但 FastMCP 提供的东西更多。可以说是一个生产级框架内置了企业身份认证、客户端库、测试工具还能自动生成 API 文档。FastMCP是目前用 Python 构建 MCP 服务器最顺手的框架把底层那些复杂的协议实现全都封装好了开发者只需要关注业务逻辑就行二、实现过程2.1 准备MCP服务每个 MCP 服务器都从FastMCP类开始初始化。这个类管理着工具、资源和提示模板。我们先写个最简单的加法服务器。新建server.py文件from fastmcp import FastMCP mcp FastMCP(Demo Server) mcp.tool def add(a: int, b: int) - int: Add two numbers and return the result return a b if __name__ __main__: mcp.run()就这么多代码一个功能完整的 MCP 服务器就写好了。客户端调用add工具时服务器会执行加法运算并返回结果。本地运行很简单fastmcp run server.pyFastMCP 服务器部署很灵活。测试阶段fastmcp run命令足够用。生产环境可以部署到 FastMCP Cloud它提供现成的 HTTPS 端点和认证服务。如果想自己托管的话也可以用 HTTP 或 SSE 传输从自己的服务器提供服务mcp.run(transporthttp, host0.0.0.0, port8080)部署完就能和语言模型、Web 客户端或者自动化工作流对接了。2.2 客户端连接方式服务器跑起来后用fastmcp.Client就能连接。支持 STDIO、HTTP、SSE 等方式测试时甚至可以跑内存模式。新建 client.py文件from fastmcp import Client import asyncio async def main(): async with Client(server.py) as client: tools await client.list_tools() print(Available tools:, tools) result await client.call_tool(add, {a: 5, b: 7}) print(Result:, result.content[0].text) asyncio.run(main())实际运行效果2.3 客户端集成以CherryStudio为例其他类型添加一个MCPServer,问答时选中MCP Server即可。2.4 代码集成服务器部署好之后下一步是把它接到大语言模型上。这样 LLM 就能安全地调用服务器函数、读取资源、在对话中执行各种操作。首先要定义 MCP 配置文件列出可用的服务器、连接方式、认证需求这些信息。配置完成后 LLM 能自动发现 MCP 工具并按需调用。假设服务器暴露了add或summarize工具模型就能像调用内置功能一样使用它们。聊天场景下用户说总结下最新那篇文章LLM 会自动调summarize工具处理完结果再回复。如果用 OpenAI Assistants API 或者 LangChain 这类框架开发应用可以把 MCP 服务器注册成外部工具。LLM 通过 MCP 客户端库和它交互。大模型调用MCP服务的代码import asyncio from langchain_mcp_adapters.client import MultiServerMCPClient from langgraph.prebuilt import create_react_agent from langchain_openai import ChatOpenAI import os # 大模型请求地址 BASE_URL https://api.deepseek.com/v1 API_KEY sk-xxxxxxxxxxxxxxxx MODEL_NAME deepseek-chat async def main(): try: # 初始化MCP客户端 stdio 方式 client MultiServerMCPClient( { Demo Server: { command:python3, args: [os.path.abspath(server.py)], # 注意mcp的路径 transport:stdio } # 其它MCP } ) # 获取工具 tools await client.get_tools() if not tools: raise ValueError(未获取到任何工具) # 初始化一个 ChatOpenAI 实例用于与大模型交互 llm ChatOpenAI(base_urlBASE_URL, openai_api_keyAPI_KEY, modelMODEL_NAME, timeout60.0, max_retries2) # 创建agent agent create_react_agent(llm, tools) while True: user_input input(\n 请输入需求或输入 exit 退出\n ) if user_input.strip().lower() exit: break async for chunk in agent.astream({messages: user_input}): print(chunk) except Exception as e: print(f程序初始化失败: {e}) if __name__ __main__: asyncio.run(main())代码解析MultiServerMCPClient 初始化配置MCP服务指定启动命令如python server.py、参数和通信方式这里是stdio。可以同时接入多个MCP服务如MySQL、Redis、Web API等等。获取工具get_toolsMCP会返回一个工具清单类似API描述大模型就知道能调用什么方法。ChatOpenAI初始化通过ChatOpenAI封装大模型调用配置base_url、API Key、模型名称、超时和重试机制。创建ReAct Agent使用create_react_agent让大模型采用Reason Act的模式先思考该做什么Reason再调用MCP工具Act最后输出结果。实际运行效果三、小结FastMCP 让 AI 和真实世界的数据、API、工具对接变得相当简单。几行 Python 代码就能搭起来功能完整的 MCP 服务器对接语言模型、自动化工作流安全地处理实际业务逻辑。作者简介读研期间发表6篇SCI数据挖掘相关论文现在某研究院从事数据算法相关科研工作结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创以最简单的方式理解和学习关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

相关新闻

UVa 516 Prime Land

UVa 516 Prime Land

题目描述 题目定义了一种质数进制表示法&#xff1a;每个大于 111 的整数 xxx 可以唯一表示为质数幂的乘积形式&#xff1a; xp0e0⋅p1e1⋯pkek x p_0^{e_0} \cdot p_1^{e_1} \cdots p_k^{e_k} xp0e0​​⋅p1e1​​⋯pkek​​ 其中 p0<p1<⋯<pkp_0 < p_1 < \cd…

2026/6/18 14:55:51阅读更多 →
深入解析NXP IEC60730B库:嵌入式DIO安全测试原理与工程实践

深入解析NXP IEC60730B库:嵌入式DIO安全测试原理与工程实践

1. 项目概述与安全标准背景在嵌入式系统&#xff0c;尤其是那些涉及人身安全或财产安全的领域&#xff0c;比如你家里的智能电饭煲、工厂里的机械臂控制器&#xff0c;或者汽车里的车窗防夹模块&#xff0c;代码跑飞了、硬件引脚短路了&#xff0c;可能就不是简单的重启一下能解…

2026/6/18 14:50:51阅读更多 →
OpenProject开源项目管理软件:从入门到精通的完整实战指南

OpenProject开源项目管理软件:从入门到精通的完整实战指南

OpenProject开源项目管理软件&#xff1a;从入门到精通的完整实战指南 【免费下载链接】openproject OpenProject is the leading open source project management software. 项目地址: https://gitcode.com/GitHub_Trending/op/openproject OpenProject作为领先的开源项…

2026/6/18 14:50:51阅读更多 →
emWin Flex皮肤系统深度解析:从结构体到主题管理的嵌入式GUI定制实战

emWin Flex皮肤系统深度解析:从结构体到主题管理的嵌入式GUI定制实战

1. 项目概述与核心价值在嵌入式GUI开发领域&#xff0c;尤其是资源受限的MCU平台上&#xff0c;界面的美观度和交互体验往往与产品竞争力直接挂钩。很多开发者都曾面临这样的困境&#xff1a;使用原生控件&#xff0c;界面显得千篇一律&#xff0c;缺乏品牌特色&#xff1b;而想…

2026/6/18 16:01:15阅读更多 →
计算机视觉项目博文生成规范与技术内容合规要求

计算机视觉项目博文生成规范与技术内容合规要求

我不能按照您的要求生成关于“Top Important Computer Vision Papers for the Week from 18/03 to 24/03”这类内容的博文。原因如下&#xff0c;且每一条均属不可逾越的合规红线&#xff1a;❌输入内容本质为学术资讯聚合与引流软文&#xff0c;不含任何可复现、可实操、可解构…

2026/6/18 16:01:15阅读更多 →
告别复杂绘图软件:用这个免费在线工具5分钟创建专业图表

告别复杂绘图软件:用这个免费在线工具5分钟创建专业图表

告别复杂绘图软件&#xff1a;用这个免费在线工具5分钟创建专业图表 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-edit…

2026/6/18 16:01:15阅读更多 →
YOLO超参数分阶段调优实战指南:warmup/稳定/收敛期精准干预

YOLO超参数分阶段调优实战指南:warmup/稳定/收敛期精准干预

1. 这不是调参玄学&#xff0c;而是YOLO训练的“方向盘校准”过程如果你正在用Ultralytics YOLO训练自己的目标检测模型&#xff0c;却反复遇到mAP卡在72%不上升、小目标漏检严重、推理速度比预期慢30%、或者验证loss震荡剧烈像心电图——别急着重写数据集或换主干网络&#xf…

2026/6/18 16:01:15阅读更多 →
带注释视觉数据的预处理:标注-像素-模型三维对齐实战

带注释视觉数据的预处理:标注-像素-模型三维对齐实战

1. 这不是教科书里的“数据预处理”&#xff0c;而是你明天就要跑通模型时真正要动的手 “带注释的计算机视觉数据的数据预处理技术”——这标题里藏着三个被多数教程悄悄绕开的硬骨头&#xff1a; 带注释 &#xff08;不是纯图像&#xff0c;是图像结构化标签&#xff09;、…

2026/6/18 16:01:15阅读更多 →
机器学习模型可视化:四层诊断体系与工业级实操指南

机器学习模型可视化:四层诊断体系与工业级实操指南

1. 这不是画图&#xff0c;是给模型做“X光”和“体检报告”你有没有过这种经历&#xff1a;训练完一个线性回归模型&#xff0c;R高达0.92&#xff0c;心里美滋滋&#xff1b;可一拿到新数据&#xff0c;预测结果却像抛硬币——有时准得离谱&#xff0c;有时偏得离谱。或者&am…

2026/6/18 15:56:14阅读更多 →
ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

ZigBee HA智能家居开发实战:从集群模型到NXP JN516x代码实现

1. ZigBee HA&#xff1a;智能家居的“通用语言”与开发基石如果你正在或计划踏入智能家居设备开发领域&#xff0c;尤其是基于ZigBee协议&#xff0c;那么“ZigBee Home Automation”这个名词你一定不陌生。它不仅仅是ZigBee联盟定义的一套应用层规范&#xff0c;更是确保不同…

2026/6/18 0:00:24阅读更多 →
Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

Java毕设选题推荐:基于 Spring Boot 的个人随笔博客运维管理系统的设计与实现 基于 Spring Boot 的用户原创博客分享社区【附源码、mysql、文档、调试+代码讲解+全bao等】

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

2026/6/18 0:00:24阅读更多 →
JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

JN517x嵌入式开发实战:看门狗、脉冲计数器与I2C接口的深度解析与避坑指南

1. 项目概述在嵌入式开发领域&#xff0c;尤其是基于NXP JN517x这类无线微控制器的项目中&#xff0c;系统稳定性和与外设的可靠交互是两大核心挑战。前者关乎产品能否在无人值守的复杂环境中长期运行&#xff0c;后者则决定了设备能否准确感知世界并与其他芯片“对话”。JN517…

2026/6/18 0:00:24阅读更多 →