【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阅读更多 →
Windows 11系统优化终极指南:用Win11Debloat让电脑重获新生

Windows 11系统优化终极指南:用Win11Debloat让电脑重获新生

Windows 11系统优化终极指南&#xff1a;用Win11Debloat让电脑重获新生 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter a…

2026/6/18 16:11:18阅读更多 →
热成像+Monk实现足球运动员快速检测实战指南

热成像+Monk实现足球运动员快速检测实战指南

1. 项目概述&#xff1a;为什么用热成像Monk做足球运动员检测&#xff0c;而不是常规方案&#xff1f; 去年在帮一个高校体育实验室做运动行为分析系统时&#xff0c;我第一次接触到热成像视频数据——不是为了炫技&#xff0c;而是被现实逼出来的选择。他们想统计室内五人制足…

2026/6/18 16:11:18阅读更多 →
汇编语言工程实践:标签系统与伪指令在嵌入式开发中的核心应用

汇编语言工程实践:标签系统与伪指令在嵌入式开发中的核心应用

1. 汇编语言工程实践&#xff1a;从符号到内存的精确控制如果你曾经尝试过直接编写机器码&#xff0c;就会立刻明白汇编语言存在的意义——它是在二进制指令的荒漠中&#xff0c;建立起的第一座人类可读的绿洲。汇编语言的核心&#xff0c;远不止是将MOV、ADD这些助记符翻译成0…

2026/6/18 16:11:18阅读更多 →
MPC801时钟与电源管理:从锁相环到低功耗模式的嵌入式实战

MPC801时钟与电源管理:从锁相环到低功耗模式的嵌入式实战

1. 项目概述与核心价值 在嵌入式系统开发中&#xff0c;时钟与电源管理模块的设计&#xff0c;往往是决定产品成败的关键“内功”。它不像外设驱动那样直观&#xff0c;也不像算法那样引人注目&#xff0c;但却是整个系统稳定、高效、可靠运行的基石。一个设计不当的时钟树&…

2026/6/18 16:11:18阅读更多 →
多维PTE问题与组合设计的数学结构解析

多维PTE问题与组合设计的数学结构解析

1. 多维PTE问题与组合设计的交汇 在数论与组合数学的交汇处&#xff0c;存在一个引人入胜的问题——多维PTE&#xff08;Prouhet-Tarry-Escott&#xff09;问题。这个问题看似简单&#xff0c;却蕴含着深刻的数学结构&#xff1a;给定正整数r,m,n&#xff0c;寻找Zr中两个不相交…

2026/6/18 16:11:18阅读更多 →
HarmonyOS 6.1.1 网络加速与企业数据防护:Network Boost 和 DataGuard 怎么设计?

HarmonyOS 6.1.1 网络加速与企业数据防护:Network Boost 和 DataGuard 怎么设计?

摘要本文围绕 HarmonyOS 6.1.1(API 24) 中的 Network Boost Kit 与 Enterprise DataGuard Kit&#xff0c;讨论企业级应用如何同时做好网络体验和数据安全。文章以医护移动查房和企业办公为例&#xff0c;讲解网络策略分级、弱网队列、企业数据分类、放通列表、HDC 鉴权、日志脱…

2026/6/18 16:06:17阅读更多 →
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阅读更多 →