Swissknife A2A 服务器使用说明
项目简介
Swissknife A2A 服务器是 Swissknife 项目的一个组件,它将 Swissknife 的多代理系统能力通过 Agent-to-Agent (A2A) 协议以服务器的形式对外提供。该服务器允许远程客户端通过网络连接,利用 Swissknife 强大的 AI 代理功能,包括多代理架构、工具生态系统和上下文管理。虽然项目主要以 A2A 命名,但其架构和功能与 Model Context Protocol (MCP) 服务器的概念高度契合,特别是它提供了工具注册、执行和上下文信息访问等核心能力。
主要功能点
- 多代理服务: 以服务形式提供 Swissknife 中配置的各种 AI 代理,客户端可以调用这些代理执行特定任务。
- 工具扩展: 支持通过 MCP 协议扩展工具生态系统,允许 AI 代理调用外部功能。虽然仓库本身侧重于作为 A2A 服务器 提供 服务,但它通过集成了 MCP 客户端功能,间接支持了工具的扩展和注册,符合 MCP 服务器在工具管理方面的职责。
- 上下文管理: 服务器端管理会话和上下文,为客户端提供有状态的交互体验。
- 远程访问: 通过 HTTP 和 JSON-RPC 协议提供服务接口,支持客户端远程调用。
- 流式响应: 支持 SSE (Server-Sent Events) 流式响应,允许客户端实时接收代理的思考过程和输出结果。
安装步骤
由于 Swissknife A2A 服务器是 Swissknife 项目的一部分,其安装步骤与 Swissknife 客户端基本一致。请参考 Swissknife 客户端的安装步骤进行安装。
-
克隆仓库:
git clone https://github.com/daltonnyx/swissknife.git cd swissknife -
安装依赖:
uv sync -
安装工具:
uv tool install . -
配置 API 密钥: 确保设置了 'ANTHROPIC_API_KEY', 'OPENAI_API_KEY', 'GOOGLE_API_KEY', 或 'GROQ_API_KEY' 等环境变量,以便服务器可以使用相应的 LLM 提供商。
ANTHROPIC_API_KEY=your_anthropic_api_key OPENAI_API_KEY=your_openai_api_key GROQ_API_KEY=your_groq_api_key GOOGLE_API_KEY=your_google_api_key
服务器配置
Swissknife A2A 服务器的配置主要通过命令行参数进行。以下是一个典型的启动命令和参数配置示例,用于配置一个基于 Google Gemini 模型的 A2A 服务器:
uv run swissknife/main.py a2a-server --provider google --agent-config ~/.swissknife/agents.toml --port 41241
关键参数说明:
- '--provider': 指定服务器使用的 LLM 提供商,例如 'google', 'openai', 'claude', 'groq', 'deepinfra'。
- '--agent-config': 指定代理配置文件的路径,用于定义服务器提供的 AI 代理及其能力。 例如 '~/.swissknife/agents.toml'。
- '--port': 指定服务器监听的端口号,例如 '41241'。
- '--host': 指定服务器绑定的主机地址,默认为 '0.0.0.0' 监听所有可用网络接口。
- '--base-url': 可选参数,用于指定服务器的根 URL,默认为根据 host 和 port 自动生成。
MCP 客户端配置 (示例):
MCP 客户端需要配置 MCP 服务器的启动命令 (command) 及其参数 (args) 才能与 Swissknife A2A 服务器建立连接。 以下是一个 'mcp_servers.json' 配置示例,展示了如何配置连接到 Swissknife A2A 服务器:
{ "swissknife_a2a_server": { "name": "Swissknife A2A Server", "command": "uv", "args": ["run", "swissknife/main.py", "a2a-server", "--provider", "google", "--agent-config", "~/.swissknife/agents.toml", "--port", "41241"], "env": {}, "enabledForAgents": ["default", "coding"] } }
配置参数注释:
- 'server_id': 'swissknife_a2a_server' - 服务器的唯一标识符,客户端使用此 ID 来引用服务器。
- 'name': 'Swissknife A2A Server' - 服务器的名称,用于在配置中识别服务器。
- 'command': 'uv' - 启动服务器的命令,这里使用 'uv run' 来运行 Swissknife A2A 服务器的 Python 脚本。
- 'args': '["run", "swissknife/main.py", "a2a-server", "--provider", "google", "--agent-config", "~/.swissknife/agents.toml", "--port", "41241"]' - 启动服务器命令的参数列表,与上面 uv run swissknife/main.py a2a-server ... 命令行的参数一一对应。
- 'env': '{}' - 服务器运行所需的环境变量,这里为空,表示不需要额外的环境变量。
- 'enabledForAgents': '["default", "coding"]' - 允许访问此 MCP 服务器工具的代理名称列表。
注意: MCP 客户端 无需 配置 'server_id' 以外的任何代码或参数,只需将上述 JSON 配置添加到客户端的 'mcp_servers.json' 文件中,并根据实际情况修改 'command' 和 'args' 即可。
基本使用方法
-
启动服务器: 根据上述服务器配置,运行 'uv run swissknife/main.py a2a-server ...' 命令启动 Swissknife A2A 服务器。
-
客户端连接: 配置 MCP 客户端,使其连接到运行中的 Swissknife A2A 服务器。客户端需要提供服务器的地址(例如 'http://localhost:41241',如果使用 Google A2A 协议)或配置 'mcp_servers.json' 文件(如果使用 MCP 协议)。
-
调用代理和工具: 客户端可以通过 A2A 或 MCP 协议,向服务器发送请求,调用已注册的 AI 代理和工具,进行对话交互、任务执行等操作。具体调用方法请参考 A2A 或 MCP 客户端的文档。
提示: Swissknife A2A 服务器主要通过命令行进行配置和启动,用户需要熟悉命令行操作。 详细的 API 调用和协议细节,请参考 Swissknife 项目的源代码和相关文档。
信息
分类
AI与计算