MCP 深度实践:集成 LangChain 与 Semantic Kernel,打造多工具智能体

目录

🚀 MCP 深度实践:集成 LangChain 与 Semantic Kernel,打造多工具智能体

✨ 为什么要集成 LangChain / Semantic Kernel?

🏗️ 整体架构图

🛠️ MCP 与 LangChain 集成实践

1. 环境准备

2. 自定义 LangChain 工具调用 MCP

3. 在 LangChain 中注册 MCP 工具

🛠️ MCP 与 Semantic Kernel 集成实践

1. 环境准备

2. 封装 MCP 连接器

3. 注册到 Kernel

🧠 小结

🎯 预告:下一步挑战


🚀 MCP 深度实践:集成 LangChain 与 Semantic Kernel,打造多工具智能体

在上篇教程中,我们从零搭建了一个完整的 MCP Server 和 Client,并实现了 AI 模型与本地工具的调用。
今天,我们更进一步,教你如何将 MCP 与 LangChain、Semantic Kernel 等主流 AI 框架集成,构建功能丰富的智能体系统!


✨ 为什么要集成 LangChain / Semantic Kernel?

随着 AI 应用需求不断提升,仅靠单一的 MCP Server 无法满足复杂的业务逻辑。
通过集成 LangChain、Semantic Kernel,可以实现:

  • 🌟 统一管理多工具、多数据源

  • 🌟 支持链式调用、工作流编排

  • 🌟 增强上下文记忆、智能规划执行

  • 🌟 大幅提升 AI 交互智能化水平

MCP 相当于 "工具接口",LangChain / Semantic Kernel 则是 "智能大脑"。
二者结合,才是真正的智能体(Agent)架构!


🏗️ 整体架构图

用户提问
    ↓
LangChain / Semantic Kernel
    ↓
MCP Client
    ↓
MCP Server(托管各种 Tools)
    ↓
工具实际执行任务
    ↓
执行结果反馈回 LangChain / Semantic Kernel
    ↓
生成最终回复

🛠️ MCP 与 LangChain 集成实践

1. 环境准备

安装依赖:

pip install langchain openai
pip install mcp-sdk

(假设你的 Server 端已经按照上一篇教程搭建完成)

2. 自定义 LangChain 工具调用 MCP

在 LangChain 中,每个工具(Tool)需要实现 Tool 类。
这里我们封装一个 MCPTool。

from langchain.tools import BaseTool
from mcp.client import MCPClient

class MCPTool(BaseTool):
    def __init__(self, tool_name: str, server_url: str):
        super().__init__(name=tool_name, description=f"调用 MCP 工具 {tool_name}")
        self.tool_name = tool_name
        self.client = MCPClient(server_address=server_url)
        self.client.connect()

    def _run(self, query: str) -> str:
        """同步调用 MCP 工具"""
        params = {"directory": "."}  # 示例传参,可以根据需要解析 query
        result = self.client.call_tool(self.tool_name, params)
        return str(result)

    async def _arun(self, query: str) -> str:
        raise NotImplementedError("暂不支持异步调用")

3. 在 LangChain 中注册 MCP 工具

from langchain.agents import initialize_agent
from langchain.llms import OpenAI

# 初始化 MCP 工具
mcp_tool = MCPTool(tool_name="list_txt_files", server_url="http://localhost:8000")

# 初始化 Agent
agent = initialize_agent(
    tools=[mcp_tool],
    llm=OpenAI(temperature=0),
    agent="zero-shot-react-description",
    verbose=True,
)

# 测试提问
response = agent.run("请帮我列出当前目录下所有 txt 文件。")
print(response)

如果一切顺利,LangChain 代理就可以通过 MCP 调用工具,并得到真实结果!


🛠️ MCP 与 Semantic Kernel 集成实践

Semantic Kernel 作为微软开源的智能体框架,也可以轻松集成 MCP。

1. 环境准备

安装依赖:

pip install semantic-kernel
pip install mcp-sdk

2. 封装 MCP 连接器

from semantic_kernel.orchestration.sk_function import SKFunction
from mcp.client import MCPClient

class MCP_SK_Function(SKFunction):
    def __init__(self, tool_name: str, server_url: str):
        self.tool_name = tool_name
        self.client = MCPClient(server_address=server_url)
        self.client.connect()

    def invoke(self, input):
        params = {"directory": "."}
        result = self.client.call_tool(self.tool_name, params)
        return str(result)

3. 注册到 Kernel

from semantic_kernel.kernel import Kernel

kernel = Kernel()

# 创建 MCP 工具封装
mcp_function = MCP_SK_Function(tool_name="list_txt_files", server_url="http://localhost:8000")

# 将 MCP Function 注册到 Kernel
kernel.skills.add_function("FileTools", "ListTxtFiles", mcp_function)

# 测试调用
result = kernel.skills.get_function("FileTools", "ListTxtFiles").invoke("")
print(result)

这样,Semantic Kernel 也可以通过统一的方式调用 MCP Server 上的所有工具了!


🧠 小结

通过今天的实战,我们完成了:

  • ✅ MCP 工具在 LangChain 中作为 Tool 接入

  • ✅ MCP 工具在 Semantic Kernel 中作为 Skill Function 接入

  • ✅ 打通了 "大模型 → 智能体 → 外部工具" 的闭环

MCP + LangChain / Semantic Kernel,让你的 AI 系统不仅能"对话",还能真正"动手"!

未来还可以探索:

  • 多工具组合任务

  • 动态选择工具策略

  • 上下文记忆增强

  • 大规模 Agent 集群编排


🎯 预告:下一步挑战

下一篇博客将继续实战:

  • 如何设计 多工具协作链路

  • 如何实现 MCP Server 自动发现与动态注册

  • 如何做 长任务、多轮任务调度

敬请期待!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值