文档 · 04

SDK 与 MCP。

两个 MCP 服务器——一个在云端,一个在你的电脑上——以及两个 SDK。选择离你的智能体运行位置最近的那一个。

我需要哪一个?

你想让智能体…使用
在任何地方处理你的云端文件、线程和账户托管 MCP 服务器
在本地授权下驱动连接到你电脑的机器本地 MCP 中继,commandagi mcp
从你自己的程序中以脚本方式操作 CommandAGITypeScript 或 Python SDK

三者都以某个主体的身份进行认证。它们都不能创建或扩大授权——那始终是人的行为。

托管 MCP 服务器

https://api.commandagi.com/mcp——Streamable HTTP,无状态,JSON 响应。使用 API 密钥(cagi_…)认证,密钥在工作台账户菜单的 API 密钥中创建。

shell
claude mcp add --transport http commandagi https://api.commandagi.com/mcp \
  --header "Authorization: Bearer cagi_YOUR_KEY"

它提供一个庞大的工具目录——超过三百个——包括线程(list_threads、create_thread、send_message、get_thread)、文件(list_drive、read_drive_file、write_drive_file)、你的账户(whoami、get_credits、list_models)、代码(run_code)、托管网站(create_site、deploy_site)、交易(trade_venues、trade_order、trade_account、trade_cancel)以及已配对的主机(list_hosts、host_call)。用 search_tools 找到你需要的那个。

本地 MCP 中继

在运行主机的电脑上,commandagi mcp 是一个 stdio MCP 服务器,它把请求中继到主机自己的端点。通过环境变量或文件向它提供智能体的主机凭据——绝不要作为命令行参数传入:

shell
claude mcp add commandagi -e COMMANDAGI_CREDENTIAL=cagp_… -- commandagi mcp
# or
claude mcp add commandagi -- commandagi mcp \
  --credential-file ~/.config/claude/commandagi.credential

没有凭据时,客户端可以读取和显示内容,但不能执行操作。主机的端点只在本机回环地址上响应,并拒绝带有网页来源(origin)的请求。同样的控制工具也以普通 HTTP 的形式在 POST /control/<tool> 上响应,需携带 Authorization: Bearer <credential>。

本地工具

分组工具
项目与世界get_project、project_status、list_worlds、get_world、save_world、list_devices、get_device
文件read_file、write_file(需文件授权)、graph_query、graph_search
代码与仿真evaluate_code(沙箱运行,无网络)、sim_trials
已打开的工作台list_panes、open_file、show_world、thread_read、thread_say
控制list_grants、list_units、open_channel、arm、run_program、send_command、read_channel、stop、close_channel
其他主机list_hosts、host_call
外联outreach_apps、outreach_identify、outreach_start、outreach_send、outreach_reply、outreach_outcome、outreach_due、outreach_advance、outreach_status
市场market_venues、market_order、market_account、market_cancel

控制工具遵循智能体与长期授权中的每一条规则:每个工具都需要授权中包含对应的操作,stop 只需任意一条授权,而且每个动作在发送之前都会被记录。

TypeScript SDK

shell
npm i commandagi        # Node 22 or later
typescript
import { CommandAGI } from "commandagi";

const cagi = new CommandAGI(); // reads COMMANDAGI_API_KEY
const { threadId } = (await cagi.threads.create({
  intent: "Summarise this week's robotics news",
})) as { threadId: string };
await cagi.threads.send(threadId, "Add a link for each one.");

这个软件包还会安装 commandagi 命令:commandagi whoami、commandagi threads create --intent "…"、commandagi call <tool> --json '{…}',单独运行时则是一个交互式终端。源码:github.com/CommandAGI/commandagi-sdk-typescript。

Python SDK

shell
pip install commandagi   # Python 3.9 or later
python
from commandagi import CommandAGI

cagi = CommandAGI()  # reads COMMANDAGI_API_KEY
with cagi.launch("simulation/warehouse") as world:
    world.sim.ik(target=[0.3, 0.0, 0.4])
    jpeg = world.observe(fresh=True)

源码:github.com/CommandAGI/commandagi-sdk-python。

环境变量

变量含义
COMMANDAGI_API_KEY你的 API 密钥,cagi_…
COMMANDAGI_BASE_URLAPI 源地址,默认为 https://api.commandagi.com
COMMANDAGI_CREDENTIAL供本地中继使用的主体凭据