随着大语言模型(LLM)的广泛应用,AI 系统在处理复杂任务时,常常需要与外部数据源和工具进行交互。然而,传统的集成方式存在接口碎片化、上下文封闭、安全隐患和复用性差等问题。
为了解决这些问题,Anthropic 于 2024 年提出并开源了模型上下文协议(MCP),旨在为 AI 系统与外部资源之间的交互提供统一、标准化的解决方案。
随着大语言模型(LLM)如 ChatGPT、Claude、Gemini、DeepSeek 等的广泛落地,我们正处于从“AI 聊天”走向“AI 工具化”的关键转折点。然而,开发者在实际集成过程中发现,大模型虽然具备强大的自然语言理解与生成能力,却在面对真实系统中的工具协同、数据访问、安全控制等方面存在诸多挑战:
为了解决这些问题,Anthropic 于 2024 年发布了一个重量级协议——Model Context Protocol(MCP)。这不仅是技术协议的创新,更是 AI 应用范式的彻底变革。
MCP 的核心目标是为语言模型与外部工具之间的通信提供一个通用、统一、安全、可组合的协议,就像 USB-C 接口之于硬件连接。
MCP 通过定义标准的工具描述格式、请求调用协议和通信机制,让语言模型可以像调用内部函数一样使用外部资源,实现模型“外部世界感知”能力的飞跃。
MCP 的架构借鉴了语言服务器协议(LSP)的设计,基于客户端-服务器模型进行构建:
通信协议基于 JSON-RPC 2.0,支持双向通信、命名空间隔离、参数校验、调用链追踪等特性。
每一个 MCP 工具都需要声明自己的接口格式,类似于一个 OpenAPI 文档:
{
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": { "type": "string", "description": "城市名称" }
},
"required": ["city"]
}
}
这种声明方式可以被模型读取,从而推理出调用方法。
一次完整的调用过程如下:
get_weather
;每次工具调用均支持附加上下文对象(如会话 ID、权限信息、前置状态),让模型具备“带记忆的工具使用能力”。
LangChain 是一个为大语言模型打造的编排框架,它天然支持:
LangChain 团队在 2024 年正式推出langchain_mcp_adapters
模块,让 MCP 工具可以无缝注册为 LangChain 的工具链成员。
这样,我们就可以使用 LangChain 创建一个本地 AI 助手,具备以下特性:
虚拟环境
python3 -m venv mcp_env
source mcp_env/bin/activate
安装依赖
pip install langchain langchain-mcp-adapters langgraph mcp openai
新建mcp_server.py
:
from mcp.server.fastmcp import FastMCP
import requests
mcp = FastMCP("UtilityTools")
@mcp.tool()
def add(a: int, b: int) -> int:
return a + b
@mcp.tool()
def get_weather(city: str) -> str:
api_key = "your_api_key"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}&units=metric"
res = requests.get(url)
if res.status_code == 200:
data = res.json()
return f"{city} 当前 {data['weather'][0]['description']},气温 {data['main']['temp']}°C"
return "无法获取天气信息"
if __name__ == "__main__":
mcp.run(transport="stdio")
新建client.py
:
import asyncio
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
from langchain.chat_models import ChatOpenAI
from langchain.agents import initialize_agent
from langchain_mcp_adapters.tools import load_mcp_tools
async def main():
server_params = StdioServerParameters(command="python", args=["mcp_server.py"])
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await load_mcp_tools(session)
llm = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0)
agent = initialize_agent(tools, llm, agent="zero-shot-react-description", verbose=True)
print("AI 助手已启动(输入 exit 退出)")
while True:
q = input("你:")
if q.strip().lower() in ("exit", "quit"):
break
a = agent.run(q)
print(f"助手:{a}")
if __name__ == "__main__":
asyncio.run(main())
运行:
python client.py
你现在可以问它:
随着多模态大模型的兴起(如GPT-4o、Claude 3.5),MCP 正在扩展支持图像、音频、视频等输入输出,打通多模态工具调用。
通过 MCP + LangGraph,可自动推理调用顺序,构建多步骤 Agent,实现:
越来越多的企业开始将 MCP Server 作为“AI 总线”,连接 CRM、ERP、BI 工具等系统,让 AI 成为智能前台与自动后端之间的桥梁。
结合上述资源,开发者可以构建一个具备以下功能的本地 AI 助手:
通过 LangChain 的 Agent 机制,AI 助手可以根据用户的自然语言指令,智能选择并调用相应的工具,完成复杂的任务。
随着 MCP 生态的不断发展,未来可能出现以下趋势:
MCP 的诞生是 AI 系统进入“平台化、集成化、系统化”阶段的重要标志。它不仅仅是技术协议,更是连接 LLM 与现实世界的关键桥梁。
通过 MCP + LangChain,我们可以:
建议开发者:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。