capy-fleet
An MCP server that lets AI coding assistants delegate work to Capy's cloud agents and wait for results, all within the editor.
README
capy-fleet
An MCP server for Capy. Lets Claude Code, Cursor, Codex, or any other MCP client delegate work to Capy's cloud agents and wait for the results without you leaving the editor.
Your local agent is smart, but there's only one of it. This gives it a workforce.
you: here are 8 bugs, farm them out
-> capy_delegate x8
-> capy_wait (all 8)
-> capy_diff on each
8 diffs come back, you review them in one place
Not affiliated with Capy. I built it because I wanted it.
Install
Not on npm yet. For now, clone and build:
git clone https://github.com/Takumixbt/capy-fleet.git
cd capy-fleet
npm install
npm run build
You'll need an API token from capy.ai/settings/tokens. It starts with capy_.
Claude Code
claude mcp add capy-fleet --env CAPY_API_KEY=capy_xxx -- node /absolute/path/to/capy-fleet/dist/index.js
Cursor
~/.cursor/mcp.json:
{
"mcpServers": {
"capy-fleet": {
"command": "node",
"args": ["/absolute/path/to/capy-fleet/dist/index.js"],
"env": {
"CAPY_API_KEY": "capy_xxx",
"CAPY_PROJECT_ID": "proj_xxx"
}
}
}
}
Windsurf uses the same shape in ~/.codeium/windsurf/mcp_config.json.
Codex
~/.codex/config.toml:
[mcp_servers.capy-fleet]
command = "node"
args = ["/absolute/path/to/capy-fleet/dist/index.js"]
env = { CAPY_API_KEY = "capy_xxx", CAPY_PROJECT_ID = "proj_xxx" }
Setting CAPY_PROJECT_ID is optional but saves you passing a project id on every call. Run capy_projects once to find yours.
Tools
| Tool | What it does |
|---|---|
capy_delegate |
Start an agent on a piece of work. Call it N times for N parallel agents. |
capy_wait |
Block until threads finish. Takes a list, so you can wait on the whole batch. |
capy_status |
One-shot check on a thread. |
capy_list |
See the whole fleet. Filter by status, tag, PR state, or free text. |
capy_diff |
Read the code an agent wrote. |
capy_messages |
Read the conversation, including the agent's own summary of what it did. |
capy_message |
Steer a running agent, or answer a question it asked. |
capy_open_pr |
Ask an agent to commit and open a PR. |
capy_stop |
Kill a thread that's going the wrong way. |
capy_projects |
List projects and their repos. |
capy_models |
List available models and which can act as Captain. |
capy_usage |
What your agents cost, split by LLM and VM, broken down by user and thread. |
Things that will confuse you if nobody tells you
Threads spawn tasks, and diffs belong to tasks. You delegate to a thread and get back a thread id, but capy_diff wants a task id. Task ids show up in the thread's task list, which capy_status and capy_wait both print. This mirrors how Capy's API actually works rather than papering over it.
There is no PR endpoint. Capy's API can't open a pull request directly. capy_open_pr sends the agent a message asking it to do it, which means the PR shows up a bit after the call returns, not during it. Run capy_wait after and read the URL off the result.
No streaming, no webhooks. The API is poll-only, so capy_wait polls with backoff (3s, growing to 15s). It returns early if a thread gets blocked on an auth or permission gate, because sitting there waiting on something that needs a human is useless. If it times out, nothing is lost. The agents keep running on Capy's side and you just call capy_wait again with the same ids.
Tasks are read-only over the API. Older unofficial Capy wrappers used POST /tasks endpoints that no longer work. Everything here goes through threads, which is the supported path.
Not burning your credits by accident
Delegating spends real money, and an LLM in a loop can delegate a lot.
CAPY_FLEET_MAX_DELEGATIONScaps how many threads one server process will start. Defaults to 25. Set it to 0 if you really want it uncapped.CAPY_FLEET_READONLY=1registers only the read tools. Handy if you want an agent that can watch the fleet but not spend anything.capy_difftruncates to a byte budget instead of dumping a 40k-line patch into your context. Usestats_onlyfirst, then pull specific paths.
Config reference
| Variable | Required | Default | |
|---|---|---|---|
CAPY_API_KEY |
yes | Token from capy.ai/settings/tokens | |
CAPY_PROJECT_ID |
no | Default project, so you can skip project_id |
|
CAPY_BASE_URL |
no | https://capy.ai/api |
Override the API host |
CAPY_FLEET_MAX_DELEGATIONS |
no | 25 |
Per-process delegation cap, 0 for unlimited |
CAPY_FLEET_READONLY |
no | 0 |
Set to 1 to hide the write tools |
Development
npm run build # compile
npm run watch # compile on change
npm run smoke # start the server over stdio, check every tool registers
The smoke test uses a deliberately invalid token, so the only network call it makes is one that's supposed to come back 401. It's checking that the tools register and that errors come back readable, not that your account works.
Types in src/types.ts are transcribed from Capy's published OpenAPI document. If Capy ships changes, that's the file to update first.
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。