MCP server for orchestrating multi-subagent code runs with minimized context and patch-only outputs.
Project description
agent-code-squad
Python MCP server that queues code-writing subagents with minimal context packs, isolated git worktrees, and patch-first collection. Heavy work (git worktree add + codex exec start) runs in a background worker to avoid tool-call timeouts.
Quickstart
cd mcp-tools/agent-code-squad
poetry env use python3
poetry install
poetry run agent-code-squad --transport stdio
MCP client config (example)
[mcp_servers.agent-code-squad]
command = "poetry"
args = ["run", "agent-code-squad", "--transport", "stdio"]
cwd = "/Volumes/workspace/dzrlab/k3s-test/mcp-tools/agent-code-squad"
Recommended flow
code_squad_execute: start tasks immediately, wait, collect patches, and verify in one call.- Optional manual flow:
code_squad_run: queue tasks and enqueue workers right away.code_squad_tick: optional bounded status refresh (enqueues already-queued tasks if needed).code_squad_status/code_squad_events: poll light status or stream JSONL events.code_squad_collect: write patches + touched-files under run artifacts and return them.code_squad_verify: runcompileall/pytestor customoptions.commandsarrays; results saved under artifacts.code_squad_report: emit run/task summary asreport.jsonandreport.md.code_squad_prune: clean up old runs/worktrees by retention policy.code_squad_cancel(optional): cancel a job or all tasks in a run.code_squad_cleanup: drop worktrees and optionally delete run artifacts.
Modify Multiple Modules
When the user request is “modify several modules”, prefer one task per module and enforce boundaries so parallel work stays precise.
- Put each module under a distinct directory (example:
modules/<name>/). - Use
allow_globsper task to restrict which files a task is allowed to touch. - Use
deny_globsto protect shared areas (configs, app entrypoints, shared libs) from module tasks. - If scope is violated,
code_squad_executereturnsstatus=failedand writes a scope artifact underruns/<run_id>/artifacts/scope/<slug>.json.
Example code_squad_execute input:
{
"cwd": "/path/to/repo",
"tasks": [
{
"name": "user module",
"scope_name": "modules/user",
"allow_globs": ["modules/user/**"],
"deny_globs": ["shared/**", "config/**", "app/**"],
"prompt": "Fix bug in user module: ... (patch only)"
},
{
"name": "billing module",
"scope_name": "modules/billing",
"allow_globs": ["modules/billing/**"],
"deny_globs": ["shared/**", "config/**", "app/**"],
"prompt": "Fix bug in billing module: ... (patch only)"
}
],
"options": {
"timeout_seconds": 600,
"poll_interval": 1.0,
"cleanup": true,
"keep_failed": true
}
}
Cleanup and Retention
code_squad_execute cleans up worktrees by default to avoid accumulating .codex/code-squad/worktrees/*.
options.cleanup(defaulttrue): remove worktrees after executionoptions.keep_failed(defaulttrue): keepfailedandtimeouttask worktrees for debuggingoptions.cleanup_delete_run_artifacts(defaultfalse): also delete run artifacts (use with care)
For periodic cleanup of old runs/worktrees, use code_squad_prune:
- Defaults: keep last
5runs, keep successful runs for3days, keep failed/timeout runs for1day dry_run=trueby default; setdry_run=falseto actually delete
Logs and Artifacts
Each run writes an index file to make review/debug easier:
runs/<run_id>/artifacts/index.json: run/task summary plus expected artifact pathscode_squad_executereturnsindex_pathand writesindex.jsonafter collect/verify/cleanupcode_squad_statusreturnsprogressandnext_actioncode_squad_events(include_noise=false)filters out thread/turn/heartbeat noise and command/tool-call items by default
Tools
code_squad_capabilities_get: defaults and dispatch paths.code_squad_context_pack: ripgrep-based context pack with snippet/char caps.code_squad_run: queue tasks with per-task model/sandbox/approval/extra_config (auto-enqueues workers).code_squad_execute: run -> wait -> collect -> verify in one call.code_squad_tick: optional bounded worker pump (refresh a few running).code_squad_status: summarize task states with compact last messages.code_squad_events: stream compacted JSONL events per job using cursors (supports noise filtering).code_squad_collect: emit git diffs + touched files per worktree and persist under artifacts.code_squad_verify: runcompileall/pytestor custom commands usingsys.executable, persisting results.code_squad_report: writereport.json/report.mdunder run artifacts.code_squad_prune: clean up old runs/worktrees by retention policy.code_squad_cancel: cancel a job or whole run (sets state tocancelled).code_squad_cleanup: remove worktrees and (optional) run artifacts under.codex/code-squad/.
Debug output
All tools accept options.debug=true to return a debug block (paths, timings, raw stdout/stderr/events). Default responses stay minimal and omit worktree/run/dispatch paths, trace IDs, PIDs, and full prompts.
Paths and defaults
- Run metadata:
<dispatch_base>/runs/<run_id>/run.json. - Job artifacts:
<dispatch_base>/runs/<run_id>/jobs/<job_id>/{meta.json,stdout.jsonl,stderr.log,last_message.txt}. - Worktrees:
<repo>/.codex/code-squad/worktrees/<run_id>/<task_slug>. - Dispatch base (default):
<repo>/.codex/code-squad. - Defaults: model
gpt-5.1-codex-max, sandboxworkspace-write, approval policynever. Override via CLI flags orAGENT_CODE_SQUAD_*env vars.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agent_code_squad-0.1.3.tar.gz.
File metadata
- Download URL: agent_code_squad-0.1.3.tar.gz
- Upload date:
- Size: 23.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.14.2 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3a22476eff32e2499b4f5c88a4268528b11db27be7e2b87659adb5b93cafab0c
|
|
| MD5 |
144e5c8237cfefcb7dfd06fd913706f1
|
|
| BLAKE2b-256 |
455c477a74de56d7106673c8c9f9c6436ee7f4cef0d6496bfdfadd4883a966ae
|
File details
Details for the file agent_code_squad-0.1.3-py3-none-any.whl.
File metadata
- Download URL: agent_code_squad-0.1.3-py3-none-any.whl
- Upload date:
- Size: 25.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.14.2 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8537206c3c80cb842c55c2327bb46523c0f0c4e30c3e871d08b1f743352b3b4a
|
|
| MD5 |
f0a1a54063b6b5f5fb7079b1267decf6
|
|
| BLAKE2b-256 |
6ef1d5063f8042784fcece5f19f9c3cdd10babf92a31ae3d4751e41dba212952
|