MCP协议支持的七大AI框架和使用代码案例

【AI工具界的"乐高大师":MCP协议拯救手忙脚乱的程序员】

——当你的AI代理开始抱怨"工具太多,我选择摆烂"时…

场景一
凌晨3点,程序员老王盯着屏幕上的AI代理崩溃日志,第108次尝试让DeepSeek自动订外卖:

“亲爱的用户,我理解您想订老乡鸡,但我的知识截止到2023年,而且——说真的,您觉得我一个语言模型会有饿了么账号吗?😅”

场景二
新来的实习生小李兴奋地展示他的"全能AI助理":

“看!它能查天气、读邮件、分析股票…(突然程序报错)等等,这个’工具依赖地狱’错误是什么意思?”

这时,MCP协议像超级英雄一样从天而降——不过它穿的不是披风,而是一件印满API接口的紧身衣! 🦸♂️


🤖 AI代理们的"工具焦虑症"现状

  • 症状1:你的AI助手比瑞士军刀功能还多,但调用API时比第一次约会还紧张
  • 症状2:每加一个新工具就要重写300行代码,程序员发际线以光速后退
  • 症状3:工具之间互相打架:“日历API说周二有空,但邮件API显示那天要开追悼会”

(此时办公室饮水机旁传来AI的碎碎念:“要不你们人类自己来?”)


🎩 MCP协议:不是魔法,但比魔法更靠谱

想象一下:

如果AI工具界也有"插座标准",MCP就是那个让中美欧插头都能用的万能转换器!

它的简历亮点

  • 🧠 脑容量升级:从"我知道的"进化到"我能查到我知道的"
  • 🔌 即插即用:像乐高一样拼接工具,再也不用担心GitHub仓库变成"工具坟场"
  • 🕺 社交达人:让高冷的LLM和话痨的Slack机器人快乐牵手

(某AI代理感动落泪:“终于不用在’对不起,我做不到’和’404 Error’之间反复横跳了!”)


🚀 前方高能预告

在接下来的冒险中,你将看到:

  1. Git仓库变身话痨:用MCP让代码自己写commit message(终于不用编"修复bug"了)
  2. Airbnb客服AI:一边查房源一边讲冷笑话(“这套房不错,就是鬼故事多了点”)
  3. 黑客帝国既视感:2000+工具同时在线,键盘侠看了都直呼专业

温馨提示:阅读时请勿喝水,否则看到"用MCP让Excel表格和量子计算机聊天"时可能会喷屏!

为什么为AI代理和基于LLM的应用采用MCP?

MCP正在成为一种标准,帮助开发者构建能够有效与其他外部应用通信的AI系统。微软最近宣布在其Copilot Studio中集成MCP,以简化AI应用和代理访问工具的方式。此外,OpenAI也宣布在其产品中支持MCP,例如Agents SDK和ChatGPT桌面应用。直接为AI助手配备工具并没有错,但对于一个由多个代理组成的AI代理系统来说,管理多个任务(如阅读和回复邮件、网页抓取、财务分析、获取实时天气信息等)会变得非常繁琐。

带有工具集成的AI代理

在这里插入图片描述

在上图中,三个外部工具连接到LLM。如果工具数量增加到100多个,管理和保护它们将变得非常困难。改进的方法是通过MCP注册表访问这些工具,如下一节所示。

带有MCP集成的AI代理

在这里插入图片描述

在这张图中,我们将代理系统所需的工具组合在一起,并通过MCP服务器访问它们,以提供更一致的用户体验。MCP方法使得通过中心位置管理和保护这些工具变得更加容易。

使用MCP相比传统工具集成的优势

MCP相比传统工具集成方式有多个关键优势。例如,没有MCP的工具集成可靠性存疑,因为在调用多个外部应用的API时可能会因不兼容的AI基础设施而出现错误。在MCP之前,每个需要添加到代理的工具都必须通过自定义代码实现,这可能需要数周时间。

  • 架构:与预建的AI代理工具规范不同,MCP具有清晰灵活的架构,用于与工具和API交互。
  • 改进的外部工具访问和管理:它通过标准化接口为AI模型提供工具访问,弥合了LLM与第三方系统之间的通信鸿沟。
  • 解决独立工具实现的限制:MCP工具既适用于单用户场景,也适用于团队。
  • 社区驱动:MCP拥有许多开源服务器和开发者生态系统,广泛应用于开发者社区的多种用例。
  • 认证:它具有强大的内置认证和权限系统,用于控制工具访问。例如,使用Composio提供的MCP工具时,可以通过Google Sheets或Gmail认证用户。
  • 工具搜索:与传统的安装、配置和集成工具到AI聊天机器人的方法不同,MCP使得搜索和发现外部工具更加容易。
  • 可扩展性:MCP可以轻松扩展到大量用户和应用。
  • 行业标准:虽然可以通过硬编码工具为AI应用提供上下文,但MCP提供了一种行业标准,为代理和LLM提供所需的上下文。

MCP服务器的种类

在这里插入图片描述
Anthropic的MCP规范有两种服务器形式,用于为代理和AI项目添加工具。这些MCP服务器连接类型包括:

  • 服务器发送事件(SSE):通过HTTP连接到远程服务。
  • STDIO:允许执行本地命令并通过标准I/O进行通信。

你选择的构建AI应用的框架将提供连接这些服务器所需的类。

访问MCP注册表/服务器生态系统

有许多开源库提供了托管的MCP工具,用于增强LLM和代理,确保它们生成的响应可靠。这些托管的MCP工具库被称为注册表,提供了精选的服务集合。你可以使用它们的工具将AI应用连接到以下注册表。此外,你可以使用不同类型的服务器,例如uvx(基于Python的工具,无需安装),还有基于Docker的MCP工具运行选项,以及需要安装Node.js的npx服务器。

  • GitHub上的MCP服务器:社区构建的服务器集合,包含额外的MCP资源。
  • Glama注册表:为开发者提供的生产就绪的开源MCP服务器。
  • Smithery注册表:通过Smithery,开发者可以访问2000多个MCP服务器,增强AI代理和LLM的能力。
  • OpenToolsOpenTools为MCP工具使用提供生成式API。你可以访问数百个现成的MCP工具,用于AI项目。通过OpenTools API,开发者可以扩展LLM的网页搜索能力、获取实时位置数据和网页抓取。API支持Curl、Python和TypeScript。访问OpenTools的快速入门指南以使用API。
from openai import OpenAI

client = OpenAI(
    base_url="https://api.opentools.com",
    api_key="<OPENTOOLS_API_KEY>"
)

completion = client.chat.completions.create(
    model="anthropic/claude-3.7-sonnet",
    messages=[
        {
   
    "role": "user", "content": "Compare specs of top 5 EVs on caranddriver.com" }
    ],
    tools=[{
   
    "type": "mcp", "ref": "firecrawl" }]
)
  • PulseMCP注册表:通过PulseMCP,你可以浏览托管的MCP工具和用例,用于AI项目。查看PulseMCP新闻了解最近热门的MCP服务器和应用。
  • mcp.run:该注册表为开发者提供了数百个MCP应用,用于业务。
  • Composio注册表:Composio的基于SSE的MCP服务器允许轻松集成工具与不同的AI框架,以构建应用。
  • guMCP:Gumloop的guMCP提供免费、开源且完全托管的MCP服务器,可与任何AI应用无缝集成。

为LLM和代理添加MCP的七大客户端框架

尽管MCP最近成为了热门话题,开发者社区都在讨论它,但很难知道应该使用哪些MCP客户端框架来与AI应用和代理集成。我们经过研究,发现了以下领先的MCP客户端平台,适用于基于Python和TypeScript的代理工作流和AI助手。

注意:以下部分展示了在构建AI解决方案的框架中实现MCP的示例,而非与Cursor或Windsurf等AI代码编辑器的MCP集成。

1. 使用OpenAI Agents SDK构建Git MCP代理

在这里插入图片描述
当使用OpenAI Agents SDK构建代理时,你可以通过SDK的MCPServerStdioMCPServerSse类连接到这些社区构建的MCP服务器。以下MCP代理实现访问本地Git仓库的根目录,并回答用户关于仓库的查询。

import asyncio
import shutil
import streamlit as st
from agents import Agent, Runner, trace
from agents.mcp import MCPServer, MCPServerStdio

async def query_git_repo(mcp_server: MCPServer, directory_path: str, query: str):
    agent = Agent(
        name="Assistant",
        instructions=f"Answer questions about the localgit repository at {
     
     directory_path}, use that for repo_path",
        mcp_servers=[mcp_server],
    )

    with st.spinner(f"Running query: {
     
     query}"):
        result = await Runner.run(starting_agent=agent, input=query)
        return result.final_output

async def run_streamlit_app():
    st.title("Local Git Repo Explorer")
    st.write("This app allows you to query information about a local git repository.")

    directory_path = st.text_input("Enter the path to the git repository:")

    if directory_path:
        # Common queries as buttons
        col1, col2 = st.columns(2)
        with col1:
            if st.button("Most frequent contributor"):
                query = "Who's the most frequent contributor?"
                run_query(directory_path, query)

        with col2:
            if st.button("Last change summary"):
                query = "Summarize the last change in the repository."
                run_query(directory_path, query
<think>好的,我现在需要帮助用户了解如何在Langchain框架中集成使用MCP协议进行工具开发。首先,我需要回顾用户提供的引用内容,尤其是引用[3]中的示例代码,这可能直接相关。 用户的问题涉及LangchainMCP协议的集成,但引用中提到的示例是使用uv工具创建工程,并通过Python脚本配置StdioServerParameters来连接MCP服务器。因此,可能需要将类似的配置方法应用到Langchain的环境中。 首先,我应该确认Langchain是否支持MCP协议,或者需要自定义工具来实现。根据引用[2],MCP是专为控制大型语言模型设计的协议,可能在Langchain中需要通过自定义接口或适配器来集成。 接下来,步骤可能包括安装MCP库,配置服务器参数,创建工具类,并将工具集成到Langchain的流程中。需要参考引用[3]中的代码示例,比如设置StdioServerParameters,并在Langchain中调用这些配置。 此外,用户可能需要具体的代码示例,所以需要构造一个简单的例子,比如创建一个数学计算工具,通过MCP协议与服务器通信。同时,需要确保代码符合用户提到的格式要求,比如使用$...$$$...$$的数学表达式,以及正确的中文回答。 还需要考虑可能的相关问题,比如调试技巧、性能优化应用场景,这些都可以在相关问题部分提出。同时,确保引用标记正确添加,如引用[3]在代码示例部分。 最后,验证整个流程的逻辑是否正确,代码示例是否能实际运行,或者至少结构正确,符合用户提供的引用内容。确保回答清晰,逐步引导用户完成集成过程。</think>在Langchain框架中集成MCP协议需要结合MCP的通信协议与Langchain的工具调用机制。以下是分步实现方法及示例代码: ### 一、环境搭建 1. 安装MCP库(参考引用[3]): ```bash uv add mcp ``` ### 二、基础配置 ```python from mcp import StdioServerParameters # 配置MCP服务端连接(如引用[3]示例) server_params = StdioServerParameters( command="python", args=['/path/to/your/server.py'], env={'MCP_VERBOSE': '1'} ) ``` ### 三、工具类开发 假设要创建数学公式处理工具: ```python from langchain.tools import BaseTool from mcp import ModelClient class MathTool(BaseTool): name = "mcp_math_processor" description = "通过MCP协议执行高级数学运算" def _run(self, expression: str) -> str: client = ModelClient(server_params) response = client.execute( task_type="math_processing", input_data={"expression": expression} ) return response['result'] async def _arun(self, *args, **kwargs): raise NotImplementedError("异步暂不支持MCP协议") ``` ### 四、Langchain集成 ```python from langchain.agents import initialize_agent from langchain.llms import OpenAI llm = OpenAI(temperature=0) tools = [MathTool()] agent = initialize_agent(tools, llm, agent="zero-shot-react-description") # 示例调用 result = agent.run("计算积分$\int_{0}^{1} x^2 dx$") print(result) # 输出应包含$\frac{1}{3}$的LaTeX表达式 ``` ### 五、协议交互原理 数学表达式通过MCP协议传输时,会保持LaTeX格式: $$ \int_{a}^{b} f(x)dx \Rightarrow \text{MCP序列化} \Rightarrow JSON+LaTeX $$ 该过程满足引用[2]中MCP协议对结构化数据交换的要求。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI仙人掌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值