来源:互联网 更新时间:2026-07-22 14:59
大型语言模型(LLM)再强大,如果无法与外部数据源和工具沟通,始终是个信息孤岛。MCP协议的出现,就是要打破这堵墙——让AI智能体真正“接”上外部世界。下面直接切入核心:
核心内容:
1. MCP协议的起源和目标:标准化LLM与多种系统间的连接
2. MCP协议的架构和优势:客户端-服务器模型、开源特性及社区支持
3. 实操指南:如何将MCP服务器连接到LangGraph智能体并使用MCP工具
说到底,MCP的诞生直指一个顽疾:LLM应用无法与外部数据源和工具进行沟通,形成了隔离运行的局面。在基于LLM的应用中,数据如何送达模型供其推理使用,始终是核心命题——这正是RAG、微调,以及MCP协议试图回答的问题。而MCP的核心目的,就是把LLM应用与各种系统之间的连接方式标准化,正如下面这张图所示:

搭建AI智能体时,最头疼的问题之一就是:怎么把数据喂给智能体?说白了,就是如何让智能体/LLM应用与外部数据源实现顺畅对接。为了解决这个问题,业界尝试过各种手段——图形界面、网页浏览器、网页搜索能力等,各有优劣,但都带着明显的局限性,始终无法做到真正“无缝”。
MCP有望成为一个通用接口,你可以把它看作是AI领域中虚拟/软件版本的USB-C。它能让LLM/AI智能体与外部资源之间,实现无缝、安全且可扩展的数据交换。MCP采用客户端-服务器架构,其中MCP主机(AI应用)与MCP服务器(数据/工具提供方)通过标准协议通信。开发者可以用MCP构建可复用、模块化的连接器,同时主流平台已有预设服务器,社区驱动的生态正在成形。开源特性鼓励创新,细粒度权限控制等机制又能保障安全。最终,MCP的目标是让AI智能体从孤立的聊天机器人,转变为具备上下文感知能力、可互操作的系统,并与数字环境深度集成。
? 延伸阅读:
AI Agents Are Much More Vulnerable Than LLM-Based Applications[1]
研究显示,相比于独立的 LLM,AI 智能体更容易受到攻击……
Anthropic的Model Context Protocol(MCP)是一个
,用于将LLM与上下文、工具和提示词连接起来。它支持越来越多的开源协议
,用于连接各种工具或数据源。服务器
下面演示如何将
在你的电脑上打开

在终端窗口中,
接下来我们将在这两个终端中分别启动所需组件,并一步步连接它们。

安装和运行代码前,
MCP_Demo的虚拟环境:
python3 -m venv MCP_Demo
然后运行以下命令以激活(进入)该虚拟环境:
source MCP_Demo/bin/activate
你会看到命令提示符前出现 (MCP_Demo),表示已成功进入虚拟环境。依次运行以下命令:
pip install langchain-mcp-adapters pip install langchain-mcp-adapters export OPENAI_API_KEY=
请将 your_api_key 替换为你自己的 OpenAI API 密钥,例如:
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxx
在其中一个终端标签页中,创建一个名为 vim server.py 的文本文件。然后将以下 Python 代码粘贴到文件中:
# math_server.py
from mcp.server.fastmcp import FastMCP
# 初始化一个 MCP 服务器,命名为 "Math"
mcp = FastMCP("Math")
# 定义一个 MCP 工具:加法
@mcp.tool()
def add(a: int, b: int) -> int:
"""两个数字相加"""
return a + b
# 定义另一个 MCP 工具:乘法
@mcp.tool()
def multiply(a: int, b: int) -> int:
"""两个数字相乘"""
return a * b
# 启动服务器,使用 stdio 作为通信方式
if __name__ == "__main__":
mcp.run(transport="stdio")
关闭文件后,使用以下命令启动并运行服务器:
python3 math_server.py
你不会看到任何输出,终端窗口看起来将如下所示:

当 MCP 服务器正在一个终端标签页中运行时,
vim client.py。将以下代码粘贴到文件中:
# 创建 stdio 连接的服务器参数
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain_mcp_adapters.tools import load_mcp_tools
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
import asyncio
# 初始化 OpenAI 模型(这里使用 gpt-4o)
model = ChatOpenAI(model="gpt-4o")
# 设置 MCP Server 参数(通过标准输入输出进行通信)
server_params = StdioServerParameters(
command="python",
# 请将此处路径替换为你 math_server.py 文件的绝对路径
args=["math_server.py"],
)
# 定义运行智能体的异步函数
async def run_agent():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
# 初始化连接
await session.initialize()
# 加载 MCP 工具
tools = await load_mcp_tools(session)
# 创建并运行智能体
agent = create_react_agent(model, tools)
agent_response = await agent.ainvoke({"messages": "what's (3 + 5) x 12?"})
return agent_response
# 执行异步函数
if __name__ == "__main__":
result = asyncio.run(run_agent())
print(result)
在第二个终端标签页中运行客户端命令:python3 client.py。该客户端会执行一次,然后结束,输出如下内容(示例):
{'messages':
[HumanMessage(content="(3+5) x 12等于多少?",
additional_kwargs={}, response_metadata={},
id='87a8b6b6-9add-4da7-aea5-1b197c0fc0f5'),
AIMessage(content='',
additional_kwargs={'tool_calls':[{'id':'call_1eyRzR7WpKzhMXG4ZFQAJtUD',
'function':
{'arguments':'{"a": 3, "b": 5}','name':'add'},
'type':'function'},
{'id':'call_q82CX807NC3T6nHMrhoHT46E',
'function':
{'arguments':'{"a": 8, "b": 12}','name':'multiply'},
'type':'function'}],
'refusal':None},
response_metadata={'token_usage':
{'completion_tokens':51,
'prompt_tokens':77,
'total_tokens':128,
'completion_tokens_details':
{'accepted_prediction_tokens':0,
'audio_tokens':0,
'reasoning_tokens':0,
'rejected_prediction_tokens':0},
'prompt_tokens_details':
{'audio_tokens':0,
'cached_tokens':0}},
'model_name':'gpt-4o-2024-08-06',
'system_fingerprint':'fp_eb9dce56a8',
'finish_reason':'tool_calls',
'logprobs':None},
id='run-13c01640-f92b-48b7-9340-c2ad983eb1c8-0',
tool_calls=[{'name':'add','args':{'a':3,'b':5},
'id':'call_1eyRzR7WpKzhMXG4ZFQAJtUD',
'type':'tool_call'},{'name':'multiply',
'args':{'a':8,'b':12},
'id':'call_q82CX807NC3T6nHMrhoHT46E',
'type':'tool_call'}],
usage_metadata={'input_tokens':77,
'output_tokens':51,
'total_tokens':128,
'input_token_details':{'audio':0,
'cache_read':0},
'output_token_details':{'audio':0,
'reasoning':0}}),
ToolMessage(content='8',
name='add',
id='f8e0aba5-7a62-44c6-92a3-5fe3b07c9bd5',
tool_call_id='call_1eyRzR7WpKzhMXG4ZFQAJtUD'),
ToolMessage(content='96',
name='multiply',
id='66b9bbd9-b99a-402f-b26c-df83f5a69fa3',
tool_call_id='call_q82CX807NC3T6nHMrhoHT46E'),
AIMessage(content='The result of \((3 + 5) \times 12\) is 96.',
additional_kwargs={'refusal':None},
response_metadata={'token_usage':{'completion_tokens':22,
'prompt_tokens':143,
'total_tokens':165,
'completion_tokens_details':{'accepted_prediction_tokens':0,
'audio_tokens':0,
'reasoning_tokens':0,
'rejected_prediction_tokens':0},
'prompt_tokens_details':{'audio_tokens':0,
'cached_tokens':0}},
'model_name':'gpt-4o-2024-08-06',
'system_fingerprint':'fp_eb9dce56a8',
'finish_reason':'stop',
'logprobs':None},
id='run-6c00a336-7d52-4917-9186-b282a5984b10-0',
usage_metadata={'input_tokens':143,
'output_tokens':22,
'total_tokens':165,
'input_token_details':{'audio':0,'cache_read':0},
'output_token_details':{'audio':0,
'reasoning':0}})}
? 你已完成一个完整的 LangChain + MCP + LangGraph 智能体原型搭建!
MCP 提供了一种便捷的方式,将 AI 智能体与提供上下文和记忆能力的信息与服务集成起来。从打通数据壁垒到实际编码跑通,这套协议正在成为 AI 应用连接外部世界的标准接口。
七麦数据官网网页地址 七麦数据官方入口在线首页
问卷星官方网站入口地址 问卷星网页版在线使用
币安Binance官方中文网站 币安App最新版下载及新手注册指南
闲鱼的严选验货在哪里看?闲鱼严选和验货宝哪个可靠
PokePay加密卡2026完整指南:申请开卡全攻略+多场景应用技巧
淘宝直播如何看回放在哪里看?怎么查看淘宝直播回放
摩托车活塞环性能如何
为何比特币BTC价格跌破7.3万美元?一文拆解影响近期比特币行情的五大原因
豆包AI专业版使用教程【新手必看】
索尼限时赠送PS Plus Premium七日会员,需手
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
迷你网名古风男生霸气(精选100个)
文雅简易网名男生可爱(精选100个)
GPT5.6惨遭切脑,Fable 5回归要变弱鸡版?
《梦幻西游》特殊鬼怪怎么抓-隐藏变异鬼应对要点
币圈十大实用工具:从实时行情监控到数据分析、资产管理
王者荣耀「西行封妖记」【孙权-仙扇使者】6月25日上线!
闲鱼严选和验货宝哪个可靠?闲鱼的验货宝怎么样,,
币安杀入美股市场,重头戏bStocks还没来
陈姓和杨姓网名大全男生(精选100个)
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc