MCP-Use:让 AI 智能体轻松调用任何工具的开源神器

什么是 MCP-Use?

在 AI 智能体开发中,我们经常遇到一个问题:如何让大语言模型(LLM)真正 “动起来”,不仅仅是回答问题,还能执行实际的操作?比如浏览网页、操作文件、搜索信息等。

MCP-Use 就是解决这个问题的开源利器!它是一个 Python 库,让开发者能够轻松地将任何大语言模型连接到各种 MCP 服务器,让 AI 智能体具备真正的工具调用能力。

MCP 协议:连接 AI 与工具的桥梁

MCP 协议是什么?

MCP(Model Context Protocol)是一种标准协议,专门用于连接大语言模型和外部工具。可以把它理解为 AI 智能体和各种工具之间的 “通用翻译器”。

为什么需要 MCP?

传统上,让 AI 调用工具需要为每个工具单独编写接口代码,非常繁琐。MCP 协议统一了这个过程,让 AI 能够:

  • 🌐 浏览网页和搜索信息

  • 📁 读写文件和操作数据

  • 🛒 连接外部服务(如 Airbnb、电商平台等)

  • 🎨 操作专业软件(如 Blender 3D 建模)

MCP-Use 的核心优势

1. 简单易用

一行代码就能让 AI 拥有工具调用能力,无需复杂的配置和学习成本。

2. 多模型支持

支持 OpenAI GPT、Claude、Llama 等主流大语言模型,通过 LangChain 实现无缝切换。

3. 多服务器管理

可以同时连接多个 MCP 服务器,让 AI 在一个对话中使用不同类型的工具。

4. 实时流式输出

支持异步流式处理,可以实时看到 AI 的思考和操作过程。

5. 沙箱安全执行

集成 E2B 云沙箱,让 AI 在安全隔离的环境中执行代码和操作。

实战教程:从零开始构建 AI 智能体

第一步:环境准备

安装 MCP-Use

1
2
pip install mcp-use

安装大语言模型提供商包(选择一个)

1
2
3
pip install langchain-openai      # OpenAI
pip install langchain-anthropic   # Anthropic Claude

创建 .env 文件,添加 API 密钥:

1
2
3
OPENAI_API_KEY=你的OpenAI密钥
ANTHROPIC_API_KEY=你的Anthropic密钥

第二步:创建你的第一个 AI 智能体

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import asyncio
import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from mcp_use import MCPAgent, MCPClient
async def main():
    # 加载环境变量
    load_dotenv()
    # 配置MCP服务器(以网页浏览工具为例)
    config = {
        "mcpServers": {
            "playwright": {
                "command": "npx",
                "args": ["@playwright/mcp@latest"],
                "env": {"DISPLAY": ":1"}
            }
        }
    }
    # 创建客户端和模型
    client = MCPClient.from_dict(config)
    llm = ChatOpenAI(model="gpt-4o")
    # 创建智能体
    agent = MCPAgent(llm=llm, client=client, max_steps=30)
    # 执行任务
    result = await agent.run(
        "帮我在网上搜索旧金山最好的餐厅"
    )
    print(f"结果: {result}")
if __name__ == "__main__":
    asyncio.run(main())

第三步:使用配置文件管理服务器

创建 browser_config.json 文件:

1
2
3
4
5
6
7
8
9
10
11
12
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"],
      "env": {
        "DISPLAY": ":1"
      }
    }
  }
}

简化的 Python 代码:

从配置文件创建客户端

1
2
client = MCPClient.from_config_file("browser_config.json")

第四步:实现实时流式输出

1
2
3
4
5
6
7
8
9
async def stream_example():
    load_dotenv()
    client = MCPClient.from_config_file("browser_config.json")
    llm = ChatOpenAI(model="gpt-4o")
    agent = MCPAgent(llm=llm, client=client)
    # 流式处理,实时看到AI的操作过程
    async for chunk in agent.astream("搜索NVIDIA的机器学习工程师职位"):
        print(chunk["messages"], end="", flush=True)

高级功能实战

多服务器协同工作

配置多个服务器让 AI 拥有更强大的能力:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "mcpServers": {
    "airbnb": {
      "command": "npx",
      "args": ["-y", "@openbnb/mcp-server-airbnb"]
    },
    "playwright": {
      "command": "npx", 
      "args": ["@playwright/mcp@latest"],
      "env": {"DISPLAY": ":1"}
    }
  }
}
# 启用智能服务器管理器
agent = MCPAgent(
    llm=llm,
    client=client,
    use_server_manager=True  # 自动选择合适的服务器
)
# AI可以同时使用多种工具
result = await agent.run(
    "在巴塞罗那找一个带游泳池的民宿,然后搜索附近的餐厅和景点"
)

工具权限控制

1
2
3
4
5
6
7
# 限制AI可以使用的工具类型
agent = MCPAgent(
    llm=llm,
    client=client,
    disallowed_tools=["file_system", "network"]  # 禁止文件和网络操作
)

云沙箱安全执行

1
2
3
4
# 安装E2B支持
# pip install "mcp-use[e2b]"
from mcp_use.types.sandbox import SandboxOptions

1
2
3
4
5
6
7
8
9
10
11
12
# 配置沙箱选项
sandbox_options = {
    "api_key": os.getenv("E2B_API_KEY"),
    "sandbox_template_id": "base"
}
# 在云沙箱中安全执行
client = MCPClient(
    config=server_config,
    sandbox=True,
    sandbox_options=sandbox_options
)

实际应用案例

案例 1:旅行助手

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
async def travel_assistant():
    config = {
        "mcpServers": {
            "airbnb": {
                "command": "npx",
                "args": ["-y", "@openbnb/mcp-server-airbnb"]
            }
        }
    }
    client = MCPClient.from_dict(config)
    llm = ChatOpenAI(model="gpt-4o")
    agent = MCPAgent(llm=llm, client=client)
    result = await agent.run(
        "帮我在巴塞罗那找一个适合两个人住一周的地方,"
        "要有游泳池,评分高,给我推荐前3个选项"
    )
    print(result)

案例 2:3D 建模助手

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
async def blender_assistant():
    config = {
        "mcpServers": {
            "blender": {
                "command": "uvx",
                "args": ["blender-mcp"]
            }
        }
    }
    client = MCPClient.from_dict(config)
    llm = ChatOpenAI(model="gpt-4o")
    agent = MCPAgent(llm=llm, client=client)
    result = await agent.run(
        "创建一个充气立方体,材质为软体材料,并添加一个地面平面"
    )
    print(result)

调试和优化技巧

启用调试模式

1
2
3
4
5
6
7
8
9
10
11
12
# 方法1:环境变量
DEBUG=2 python your_script.py
# 方法2:代码中设置
import mcp_use
mcp_use.set_debug(2)  # 完整调试信息
# 方法3:只调试智能体
agent = MCPAgent(
    llm=llm,
    client=client,
    verbose=True  # 只显示智能体的调试信息
)

性能优化建议

  1. 合理设置最大步数max_steps=30 避免无限循环

  2. 使用服务器管理器use_server_manager=True 提高效率

  3. 工具权限控制:限制不必要的工具访问

  4. 及时清理资源:使用 await client.close_all_sessions()

扩展开发:构建自定义智能体

1
2
3
4
5
6
7
8
9
10
11
12
13
from mcp_use.adapters.langchain_adapter import LangChainAdapter
async def custom_agent():
    client = MCPClient.from_config_file("config.json")
    llm = ChatOpenAI(model="gpt-4o")
    # 创建适配器
    adapter = LangChainAdapter()
    tools = await adapter.create_tools(client)
    # 绑定工具到模型
    llm_with_tools = llm.bind_tools(tools)
    # 自定义处理逻辑
    result = await llm_with_tools.ainvoke("你有哪些可用的工具?")
    print(result)

总结

MCP-Use 为 AI 智能体开发带来了革命性的改变,它让复杂的工具集成变得简单易用。通过本文的介绍和实战教程,你应该已经掌握了:

  • MCP 协议的基本概念和价值

  • MCP-Use 的核心功能和优势

  • 从基础到高级的完整实战流程

  • 多种实际应用场景的实现方法

  • 调试优化和自定义扩展技巧

现在就开始动手,构建属于你的 AI 智能体吧!无论是个人项目还是企业应用,MCP-Use 都能帮你快速实现 AI 与现实世界的连接。