当前位置: 首页 » MCP Server » 支持MCP的七大顶级AI框架

支持MCP的七大顶级AI框架

使用Python和Typescript框架创建AI应用,通过MCP服务器为LLM提供上下文。

MCP支持的人工智能框架

AI代理工具包为开发者提供了各种API,使AI解决方案能够执行任务并确保用户满意的准确结果。然而将这些工具集成到AI应用中并进行管理可能十分复杂。本文介绍使用模型上下文协议(Model Context Protocol,MCP)为LLM和代理提供上下文的行业标准。

LLM上下文提供方法与规范

默认情况下,若不给LLM和AI聊天机器人提供适当上下文,它们无法获取实时信息、执行代码、调用外部工具和API,甚至无法代替用户使用浏览器。开发者可采用以下方法突破LLM和代理的这种限制:

  • Composio:提供规范工具库和集成AI代理与LLM的解决方案。除现成工具库外,其最新推出的Composio MCP支持连接100+个IDE的MCP服务器。
  • Agents.json:基于OpenAI标准的规范,增强AI代理与API和外部工具的交互。
  • MCP:为LLM和AI助手提供上下文数据的最佳方式。例如可构建MCP文档服务器,通过llms.txt文件形式为IDE和代理框架提供完整文档访问。

什么是MCP?

MCP可视为LLM的第三次进化:

  1. 第一代LLM依赖训练数据回答问题
  2. 第二代LLM获得非直观的额外上下文工具
  3. 第三代通过MCP基础设施轻松访问外部应用
进化示意图

在企业场景中,MCP作为Anthropic开源的协议,可将企业数据连接到AI系统。它标准化了内容仓库(GitHub、Notion)、开发环境、网络和商业工具与辅助AI技术的连接。典型用例包括AI辅助编程,已有数百个MCP集成支持CursorWindsurf等开发环境。

MCP工作原理

当用户向代理发送查询时,代理决定调用哪个MCP服务器和工具来获取相关信息。例如让ChatGPT在Slack频道安排会议,MCP可实现这一操作流程:

工作原理示意图

为何采用MCP?

微软已宣布在Copilot Studio集成MCP,OpenAI也在Agents SDK和ChatGPT桌面应用中支持MCP。传统工具集成方式在管理多代理系统时存在维护困难,而MCP通过中央注册表统一管理:

传统工具集成
MCP集成

MCP优势

  • 灵活的架构设计
  • 改进的工具访问管理
  • 解决独立工具局限性
  • 社区驱动生态
  • 强大的身份验证系统
  • 工具搜索便捷化
  • 高度可扩展
  • 行业标准支持

MCP服务器类型

Anthropic规范定义两种服务器连接方式:

  • SSE:通过HTTP连接远程服务
  • STDIO:本地命令执行和标准I/O通信

MCP注册中心

开源MCP工具注册中心包括:

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" }]
)

七大MCP客户端框架

1. OpenAI Agents SDK构建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

# 完整代码见原文...
Git代理演示

2. Praison AI集成Airbnb

import streamlit as st
from praisonaiagents import Agent, MCP

@st.cache_resource
def get_agent():
    return Agent(
        instructions="""You help book apartments on Airbnb.""",
        llm="gpt-4o-mini",
        tools=MCP("npx -y @openbnb/mcp-server-airbnb --ignore-robots-txt")
    )

# 完整代码见原文...
Airbnb代理演示

3. LangChain集成文件系统

async def main(prompt: str) -> None:
    server_params = StdioServerParameters(
        command="npx",
        args=["-y", "@modelcontextprotocol/server-filesystem", str(pathlib.Path(__file__).parent.parent)],
    )
    async with stdio_client(server_params) as (read, write):
        async with ClientSession(read, write) as session:
            toolkit = MCPToolkit(session=session)
            await toolkit.initialize()
            response = await run(toolkit.get_tools(), prompt)
            print(response)
文件系统集成

4. Chainlit集成Linear

@cl.on_mcp_connect
async def on_mcp_connect(connection, session: ClientSession):
    """建立MCP连接时调用"""

@cl.on_mcp_disconnect
async def on_mcp_disconnect(name: str, session: ClientSession):
    """断开MCP连接时调用"""
Linear集成演示

5. Agno多代理协作

async with contextlib.AsyncExitStack() as stack:
    airbnb_client, _ = await stack.enter_async_context(stdio_client(airbnb_server_params))
    maps_client, _ = await stack.enter_async_context(stdio_client(maps_server_params))

    airbnb_agent = Agent(
        name="Airbnb",
        role="Airbnb Agent",
        model=OpenAIChat("gpt-4o"),
        tools=[airbnb_client],
        instructions=dedent("""\
            You are an agent that can find Airbnb listings for a given location.\
        """),
        add_datetime_to_instructions=True,
    )
多代理协作

6. Upsonic集成HackerNews

class HackerNewsMCP:
    command = "uvx"
    args = ["mcp-hn"]

task = Task(
    "Analyze the top 5 HackerNews stories...",
    tools=[HackerNewsMCP, Search]
)

agent = Agent(
    "Tech News Analyst",
    company_url="https://news.ycombinator.com/",
    company_objective="To provide insightful analysis of tech industry news"
)
HackerNews集成

7. Mastra TypeScript集成

import { MCPConfiguration } from "@mastra/mcp";

const mcp = new MCPConfiguration({
  servers: {
    stockPrice: {
      command: "npx",
      args: ["tsx", "stock-price.ts"],
      env: { API_KEY: "your-api-key" }
    },
    weather: { url: new URL("http://localhost:8080/sse") }
  }
});

const agent = new Agent({
  name: "Multi-tool Agent",
  model: openai("gpt-4"),
  tools: await mcp.getTools()
});

挑战与展望

当前MCP面临工具质量验证、搜索标准化等挑战。社区正在讨论标准化方案,未来可能实现类似Python的pip install安装方式。PulseMCP等平台正致力于改进MCP工具发现体验。


滚动至顶部