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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AI仙人掌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值