LangChain+MCP实战:Agent工具集成入门指南

在构建AI应用的浪潮中,LangChain和MCP(Model Context Protocol)正成为开发者绑不开的两个关键词。本文基于B站零基础实战教程整理,系统梳理这两者的核心概念、协作关系,以及它们如何帮助开发者把精力真正聚焦在业务上,而非纠缠于底层的大模型调用细节。
大模型的局限:为什么需要工具与框架
大模型的强项在于推理与理解。无论是与人对话,还是把一堆杂乱无序的文件整理成有逻辑的内容,都得益于它强大的推理能力。但它有一个天生的短板——它的回答只基于训练时的数据,无法感知你公司内部的实时业务。
这一局限的根源在于大模型的训练机制。GPT-4、Claude、DeepSeek等模型的训练过程需要消耗数周甚至数月时间,使用的是某个截止日期之前的互联网公开数据。大模型的训练本质上是一个参数优化过程——以GPT-4为例,其数万亿参数通过在海量文本数据上进行下一词预测任务来学习语言模式和世界知识。这个过程需要数千块GPU/TPU并行计算数周至数月,耗资数千万至上亿美元。训练完成后,模型的参数就被"冻结"了,它所掌握的知识完全取决于训练数据的范围和截止时间。这就像一本已经印刷完毕的百科全书——无论世界如何变化,书中的内容不会自动更新。这意味着模型对训练截止日期之后发生的事件一无所知,更无法访问企业内部的CRM系统、ERP数据、内部文档库等私有信息。这一局限被称为"知识截断"(Knowledge Cutoff)。
即便是RAG(检索增强生成)技术——通过将外部文档切片、向量化存储,再根据用户查询检索最相关的片段注入提示词中——也需要通过外部工具将实时数据注入模型的上下文窗口中,才能弥补这一缺陷。RAG中的向量化存储是将文本转化为高维数学向量(通常是768或1536维)的过程,使用的是专门的Embedding模型(如OpenAI的text-embedding-3或开源的BGE系列)。这些向量捕捉了文本的语义信息,语义相近的文本在向量空间中距离更近。存储这些向量的专用数据库称为向量数据库(如Pinecone、Weaviate、Milvus、ChromaDB等),它们支持高效的近似最近邻(ANN)搜索,能在毫秒级时间内从数百万条向量中找到与查询最相似的结果。上下文窗口(Context Window)是模型单次处理的文本容量上限,目前主流模型的窗口大小从8K到200K tokens不等,这直接决定了能注入多少外部信息。
这里需要解释Token的概念:Token是大模型处理文本的基本单位,但它既不是字也不是词,而是通过BPE(Byte Pair Encoding)等分词算法将文本切分后得到的子词片段。对于英文,1个token大约等于0.75个单词或4个字符;对于中文,1个汉字通常需要1-3个token。模型的上下文窗口大小以token为单位衡量,API调用费用也按输入和输出的token数量计费。理解token机制对于控制成本和优化提示词长度至关重要。
要解决这个问题,思路其实很直接:给大模型绑定工具。绑定工具之后,大模型不仅能理解你的问题,还能主动调用工具去获取企业内部的业务数据或文本内容,再依靠推理能力把结果整理成有价值的回答。
工具绑定的技术基础是Function Calling(函数调用)机制。当大模型接收到用户请求后,它会判断是否需要调用外部工具来获取信息。如果需要,模型会生成一个结构化的JSON格式调用请求,包含函数名和参数。但需要注意的是,模型本身并不执行这个函数——它只是"建议"调用。真正的执行需要由外部系统(如Agent框架)来完成。OpenAI在2023年6月首次引入这一机制,随后各大模型厂商纷纷跟进实现了类似功能。
具体来说,开发者需要在API请求中以JSON Schema的形式定义可用函数的名称、描述和参数结构。JSON Schema是一种用于描述JSON数据结构的规范语言,它定义了数据的类型、格式、约束条件等元信息。在Function Calling场景中,开发者使用JSON Schema来精确描述每个函数的输入参数结构——包括参数名称、数据类型(string/number/boolean/array/object)、是否必填、取值范围、默认值等。模型通过理解这些Schema描述来判断何时调用哪个函数、以及如何构造合法的参数。Schema的质量直接影响模型调用工具的准确率,因此编写清晰、准确的函数描述是工具开发中的关键技能。
模型会根据用户意图判断是否需要调用这些函数。如果模型决定调用,它返回的不是自然语言回答,而是一个包含function_name和arguments的结构化对象。外部系统接收到这个对象后执行实际的API调用或数据库查询,再将结果以function角色的消息注入对话历史,供模型生成最终回答。这种"模型决策+外部执行+结果回注"的三段式流程,是所有工具调用的基本范式。

问题在于,如果你从零手写大模型调用、工具管理、对话历史管理这些底层逻辑,精力会全部消耗在基础设施上,而不是业务本身。这正是框架存在的意义。
LangChain到底是什么
LangChain是一个专门用于**开发大模型应用(AI应用)**的框架。它把大模型调用、工具管理、对话内容管理等繁琐的底层工作封装好,让开发者能把注意力放回业务逻辑上。
LangChain最初由Harrison Chase于2022年10月发布,目前已发展为一个庞大的生态系统。其核心组件包括:LangChain Core(基础抽象层,定义了LLM、ChatModel、Tool、Retriever等核心接口)、LangChain Community(社区集成,提供数百种第三方服务的连接器)、LangGraph(用于构建有状态的多步骤Agent工作流,基于图结构定义节点和边来编排复杂逻辑)、LangSmith(可观测性与调试平台,可追踪每次调用的Prompt、Token消耗和延迟)。框架采用Chain(链)的设计理念——这一命名来源于将多个处理步骤"链式"串联的思想,类似函数式编程中的管道操作——将提示词模板、模型调用、输出解析等步骤串联成可复用的流水线。在最新的LCEL(LangChain Expression Language)语法中,开发者可以用|管道符直观地将各组件连接起来,例如prompt | llm | output_parser。其最大价值在于提供了统一的接口抽象——无论底层使用哪家模型API,上层代码几乎不需要改动。
需要强调的是,构建AI应用的框架不止LangChain一个,Claude SDK、OpenAI SDK等同样可以胜任。此外还有一些值得关注的替代方案,如LlamaIndex(更侧重RAG和数据索引场景)、Semantic Kernel(微软推出,深度集成Azure生态)、AutoGen(微软研究院开发,专注多Agent协作)等。但有一个明确建议:不要执着于手写框架。这些框架本身当然是从零实现的,但如果你非要自己用某个大模型API手搓一个LangChain或Claude SDK,只会把精力浪费在并发处理、状态管理、对话管理这些底层细节上。站在巨人的肩膀上应用现成框架,才是更高效的做法。

从大模型到Agent:更高层的智能体封装
除了单纯的对话与工具调用,还有一个更热门的概念——Agent(智能体)。Agent内部同样包含大模型,但它相当于在大模型之上做了更高层的封装。
这种"更高层"体现在几个方面:
- 自动管理历史对话:你与大模型对话会产生大量聊天记录,Agent能自动帮你管理起来。这涉及到对话记忆(Memory)的多种实现方式,包括完整保留所有历史消息(Buffer Memory)、只保留最近K轮对话(Window Memory)、或使用大模型对历史对话进行摘要压缩(Summary Memory),不同策略在上下文利用率和Token消耗之间做出权衡。
- 真正执行工具调用:大模型单独调用工具时,它"知道要调用",但并不会真正执行。而Agent可以真正操作工具,并把结果返回。
- 自主决策是否继续调用:Agent还能根据工具返回的结果,继续判断要不要再次调用工具,形成一个推理—执行—再推理的闭环。
Agent的这种"推理—执行—再推理"闭环在学术上被称为ReAct(Reasoning + Acting)范式,由Google和普林斯顿大学的Shunyu Yao等人于2022年在论文《ReAct: Synergizing Reasoning and Acting in Language Models》中提出。在这一范式中,Agent会交替进行思考(Thought)、行动(Action)和观察(Observation)三个步骤,形成所谓的T-A-O循环。例如,当用户询问"今天北京天气如何"时,Agent首先思考需要调用天气API(Thought),然后执行调用(Action),获取返回结果后观察数据(Observation),最终决定是否需要进一步操作(如查询穿衣建议),或直接向用户输出最终答案。这种范式相比纯推理(Chain-of-Thought)的优势在于,它允许模型在推理过程中与外部环境交互,获取真实信息来修正推理方向,而不是仅凭内部知识"幻觉式"地推导。LangGraph正是为构建这类复杂的多步骤决策流程而设计的——它将Agent的决策逻辑建模为有向图,每个节点代表一个处理步骤(如调用LLM、执行工具、条件判断),边定义了步骤间的流转条件,支持循环、分支和并行执行。
换句话说,用LangChain构建Agent应用,本质上就是构建一个能自主管理对话、自主执行工具、自主决策的智能体。这也是当下AI应用与智能体应用开发的主流范式。
MCP协议:解决工具调用的碎片化难题
理解了LangChain之后,MCP的价值就更容易看清了。
换模型就崩溃:碎片化的痛点
早期构建Agent时有一个严重问题:不同厂商的大模型,调用工具的写法各不相同。假设A模型要调用1、2、3、4四个工具,每个工具都有一套专属的API写法;换成B模型,同样这四个工具又要重写一套;换成C模型,还得再来一遍。

这带来的后果是——一旦底层更换大模型,调用工具的代码就得全部重写。对开发者而言,这是巨大的重复劳动,也让系统极其脆弱。从软件工程的角度来看,这种紧耦合设计违反了"依赖倒置原则"——高层模块不应依赖低层模块的具体实现,两者都应依赖于抽象。如果有N个模型和M个工具,在没有统一协议的情况下,理论上需要维护N×M种适配代码,复杂度呈笛卡尔积式增长。
一套协议统一工具调用标准
MCP(Model Context Protocol)正是为此而生。它是一套标准协议,规定了工具应当如何被发现、如何被调用、如何处理返回结果。
从技术架构上看,MCP协议定义了三个核心角色:Host(宿主应用,如IDE或聊天界面,负责管理用户交互和整体应用逻辑)、Client(MCP客户端,每个Server对应一个Client实例,负责维护与Server的一对一连接和协议协商)和Server(MCP服务器,暴露具体工具能力,可以是本地进程也可以是远程服务)。
通信层面,MCP支持两种传输方式:stdio(标准输入输出,适用于本地进程间通信,Server作为子进程启动,通过stdin/stdout交换消息,延迟极低)和HTTP+SSE(Server-Sent Events,适用于远程服务调用,Client通过HTTP POST发送请求,Server通过SSE流式推送响应,支持跨网络部署)。SSE是HTML5规范中定义的一种服务器向客户端单向推送数据的技术,基于HTTP长连接。与WebSocket的全双工通信不同,SSE只支持服务器到客户端的单向数据流,但优势在于更简单、自动重连、天然支持HTTP/2多路复用。在MCP的远程传输模式中,Client通过标准HTTP POST发送工具调用请求,Server通过SSE连接流式推送执行结果——这种设计特别适合工具执行时间较长的场景(如数据库查询、文件下载),Client可以实时接收进度更新而非等待超时。
协议基于JSON-RPC 2.0规范——这是一种轻量级的远程过程调用协议,设计于2010年,以极简为核心理念。与REST API相比,它不关心资源的URL结构,而是直接通过方法名来调用远程函数。每条请求消息包含四个字段:jsonrpc(协议版本,固定为"2.0")、method(方法名)、params(参数对象或数组)和id(请求标识符,用于匹配异步响应)。MCP选择JSON-RPC而非REST或gRPC作为底层通信协议,是因为它足够简单通用,且天然适合"请求-响应"和"通知"这两种交互模式,与工具调用的语义完美契合。
Server可以暴露三类能力:Tools(工具,模型可主动调用,如查询数据库、发送邮件)、Resources(资源,类似文件或数据的只读访问,如读取文档内容、获取配置信息)和Prompts(提示词模板,预定义的交互模式,如代码审查模板、翻译模板)。Client在连接建立时通过initialize方法进行能力协商,Server声明其支持的能力类型,Client则按需调用。
只要你按照MCP协议来开发工具,那么无论上层用的是OpenAI、DeepSeek、Claude,还是亚马逊、微软的模型,都能兼容适配。你只需要按照这套标准协议把工具连接、编写好一次,这套代码就能支撑上层众多模型供应商——替换模型时,再也不用重写工具调用代码。
USB接口的绝妙类比
用一个非常直观的比喻来解释MCP的架构:MCP就像电脑的USB接口。

各种工具就像U盘、硬盘、软盘等外部设备。只要这些设备兼容USB协议,插上电脑就能被识别使用。同理,MCP这一端相当于大模型,无论你换用什么大模型,只要工具是按MCP协议开发的,就都能被调用——换谁都一样。这个类比的精妙之处在于:USB协议在发明之前,每种外设(打印机、扫描仪、键盘、鼠标)都有各自不同的接口标准(串口、并口、PS/2等),用户需要为每种设备购买专用线缆。USB的出现将这种N×M的混乱局面简化为统一标准,极大降低了硬件生态的复杂度。MCP对AI工具生态的意义,正如USB对计算机外设生态的意义——通过一层标准化的抽象,将工具提供者和模型消费者解耦。
MCP的行业地位与未来展望
MCP协议由Anthropic(Claude背后的公司)在2024年11月提出。Anthropic成立于2021年,由前OpenAI研究副总裁Dario Amodei和Daniela Amodei兄妹联合创办,以AI安全研究著称。公司的核心理念是"负责任地开发前沿AI系统",其Constitutional AI(宪法AI)方法论在业界产生了深远影响。截至2024年,Anthropic已获得超过70亿美元融资,投资方包括Google、Salesforce等科技巨头。MCP协议的开源发布(Apache 2.0许可证)是其推动AI生态标准化的重要举措,也体现了其"通过开放标准促进安全AI发展"的战略意图。
值得注意的是,MCP并非第一个尝试标准化工具调用的方案——此前OpenAI的Plugin生态(2023年3月推出,同年底逐步被GPTs取代)、AutoGPT的工具注册机制、以及微软的Semantic Kernel插件系统等都做过类似尝试,但均未形成广泛的跨厂商共识。OpenAI Plugin失败的一个重要原因是其生态过于封闭,仅服务于ChatGPT平台,无法被其他模型复用。MCP之所以能快速获得行业认可,一方面得益于其设计的简洁性和通用性(协议本身足够薄,不绑定任何特定模型或平台),另一方面也因为2024年Agent应用爆发的时机恰到好处——当年涌现了Devin、Claude Computer Use、各类Coding Agent等标志性产品,行业对统一标准的需求已经非常迫切。
发布之后,几乎所有主流AI供应商——DeepSeek、通义千问、微软、百炼等——都已支持MCP。开发工具领域的响应同样迅速:Cursor、Windsurf、Continue等AI编程助手率先集成了MCP客户端能力,Replit、Zed等IDE也在跟进。在MCP Server生态方面,已有数千个开源Server覆盖了数据库访问(PostgreSQL、MongoDB)、开发工具(GitHub、GitLab)、生产力工具(Slack、Notion、Google Drive)等常见场景。这意味着,按MCP协议开发的工具,可以被绝大多数主流大模型直接调用。
这种迅速的行业共识,为AI应用开发带来了极大的便利:工具生态得以复用,模型切换成本大幅降低,开发者可以真正把精力集中到业务创新上。展望未来,MCP协议仍在快速演进中——2025年初已发布的更新增加了OAuth认证支持、流式工具调用等特性,未来可能还会纳入多模态工具交互(如图像、音频的输入输出)以及工具间的组合编排能力。
入门学习路径建议
对于想入门AI应用开发的读者,建议的学习路径是:
- 理解LangChain:掌握它作为AI应用开发框架的定位和核心能力。建议从官方教程的Quickstart开始,先理解ChatModel、PromptTemplate和OutputParser三个基础组件,然后学习LCEL语法来组装Chain。Python和TypeScript/JavaScript是LangChain支持的两种主要语言,选择自己熟悉的即可。
- 掌握Agent开发:学习智能体的自主执行、自主决策机制。可以从LangGraph的官方示例入手,先实现一个简单的单工具Agent(如计算器或搜索引擎),体会ReAct循环的完整流程,再逐步增加工具数量和决策复杂度。
- 用MCP打通工具生态:通过标准协议实现工具的一次开发、多模型复用。建议先使用现有的开源MCP Server(如文件系统Server或GitHub Server)快速体验,然后尝试按照MCP SDK开发自己的Server,将企业内部API暴露为标准MCP工具。
三者结合,才能构建出既灵活又可维护的现代AI应用。
核心要点
- 大模型的价值与局限:推理能力强大,但受限于知识截断,无法获取实时数据和企业内部信息,必须通过工具绑定来扩展能力边界
- Function Calling是基础:模型通过生成结构化JSON请求来"建议"工具调用,但实际执行依赖外部系统
- LangChain是效率杠杆:作为AI应用开发框架,它封装了模型调用、工具管理、对话记忆等底层复杂性,让开发者聚焦业务逻辑
- Agent是更高层的智能体:在大模型基础上增加了自主对话管理、自主工具执行和自主决策能力,遵循ReAct范式的T-A-O循环
- MCP解决碎片化痛点:通过统一的标准协议(JSON-RPC 2.0 + stdio/HTTP+SSE),实现工具的一次开发、多模型复用,将N×M的适配问题简化为N+M
- 行业共识已经形成:MCP获得了几乎所有主流AI供应商和开发工具的支持,正在成为AI工具生态的事实标准
相关推荐

Vibe Coding进阶:从玩具项目到企业级AI编程实战指南
深入解析Vibe Coding的天花板与突破路径,涵盖Claude Code、Codex工具选型,SuperPower插件与SDD规范驱动开发三种递进模式,助你掌握AI工程化编程方法论,真正落地企业级项目开发。

Entropic Scree:用信息熵替代方差重构PCA降维方法
Entropic Scree是一种基于信息论的降维新方法,用信息熵替代线性方差来估计数据内在维度。本文详解其核心原理、相对传统PCA的优势,以及在神经网络瓶颈层设计中的实际应用。

ResNet残差连接为何有效?深层网络退化问题实验复现
通过CIFAR-10实验复现深层网络退化问题:56层普通网络训练准确率仅84%,远低于20层的95%。深入解析ResNet跳跃连接如何解决优化困难,以及残差结构在现代深度学习中的核心地位。