使用说明
项目简介
Autono 是一个基于 ReAct 范式的自主 агентов 框架,旨在解决复杂任务。它通过集成 Model Context Protocol (MCP) 协议,支持 агентов 调用外部工具,从而扩展其能力边界,实现与外部环境的有效交互。框架核心组件 'McpAgent' 专为与 MCP 服务器协同工作而设计,能够充分利用 MCP 服务器提供的资源、工具和 Prompt 模板。
主要功能点
- MCP 协议支持: 框架原生支持 Model Context Protocol,能够作为 MCP 客户端与 MCP 服务器进行通信,实现工具和资源的动态集成。
- 外部工具调用: 通过 MCP 协议, агентов 可以安全、便捷地调用 MCP 服务器注册的各类工具,例如网页浏览、信息检索、文件操作等,极大地扩展了 агентов 的功能范围。
- 多种传输协议: 'McpAgent' 支持通过 Stdio, SSE, WebSocket 等多种传输协议连接 MCP 服务器,适应不同的部署环境和网络条件。
- 自主任务执行: 基于 ReAct 范式, агентов 能够根据用户请求,自主规划任务步骤,选择合适的 MCP 工具进行调用,最终完成复杂任务。
- 易于集成: 框架提供简洁的 API 和装饰器,例如 '@mcp_session',方便开发者快速构建基于 MCP 协议的 агентов 应用。
安装步骤
pip install autono
服务器配置
要使用 'McpAgent' 连接 MCP 服务器,您需要配置 MCP 服务器的连接信息。以下是一个使用 Stdio 传输协议的 MCP 服务器配置示例(JSON 格式):
{ "server name": "playwright-plus-server", "command": "python", "args": ["./playwright-plus-python-mcp.py"], "cwd": "./mcp_server", "comments": "配置 MCP 服务器的启动命令和参数。\ncommand: 启动服务器的命令,例如 python 或 node。\nargs: 传递给命令的参数,通常是服务器脚本的文件名。\ncwd: 服务器脚本所在的目录,确保客户端能够找到服务器脚本。" }
配置参数说明:
- 'server name': MCP 服务器的名称,用于标识服务器类型,例如 'playwright-plus-server'。
- 'command': 启动 MCP 服务器的命令,例如 'python' 或 'node',需要根据服务器的实际运行环境配置。
- 'args': 传递给 'command' 的参数列表,通常包括服务器脚本的文件名,例如 '['./playwright-plus-python-mcp.py']'。
- 'cwd': (可选) 服务器脚本所在的当前工作目录,如果服务器脚本不在当前工作目录,需要指定 'cwd',例如 ''./mcp_server''。
- 'comments': 配置参数的注释信息,方便用户理解配置项的含义。
注意: MCP 客户端只需要配置上述 JSON 格式的服务器连接信息,无需关注服务器端的具体代码实现。客户端通过配置信息即可与 MCP 服务器建立连接并进行交互。
基本使用方法
-
启动 MCP 服务器: 首先,您需要启动一个 MCP 服务器。例如,可以使用仓库 'demo/mcp_server' 目录下的 'playwright-plus-python-mcp.py' 脚本启动一个基于 Playwright 的 MCP 服务器。
cd demo/mcp_server python playwright-plus-python-mcp.py -
配置 MCP 客户端: 在您的客户端代码中,使用 'StdioMcpConfig' 或其他配置类来定义 MCP 服务器的连接信息。参考 'demo/mcp_agent.py' 中的示例:
from autono import StdioMcpConfig stdio_mcp_config = StdioMcpConfig( command='python', args=['./playwright-plus-python-mcp.py'], env=dict(), cwd='./mcp_server' ) -
创建 McpAgent: 使用 '@mcp_session' 装饰器创建一个 MCP 会话,并在会话中实例化 'McpAgent',连接到 MCP 服务器并获取其提供的工具。
from autono import mcp_session, McpAgent, get_openai_model, sync_call @sync_call @mcp_session(stdio_mcp_config) async def run(session, request: str) -> str: mcp_agent = await McpAgent(session=session, brain=get_openai_model()).fetch_abilities() # ... 使用 mcp_agent 执行任务 ... return "任务完成" -
执行任务: 使用 'McpAgent' 的 'assign()' 和 'just_do_it()' 方法,将用户请求分配给 агент,并执行任务。 агент 将自动选择合适的 MCP 工具完成任务。
result = await run(request="使用 playwright 访问 bing 搜索 'Model Context Protocol' 并截图保存为 result.png") print(result)更详细的使用方法和示例,请参考仓库中的 'demo' 目录下的脚本,例如 'demo/mcp_agent.py' 和 'demo/multi_agent.py'。
信息
分类
开发者工具