agent-bridge-mcp
agent-bridge-mcp
Сервер MCP и HTTP-шлюз, который распределяет задачи кодирования между сеансами Claude Code,
Codex и Antigravity (agy) CLI, отслеживает эти сеансы
и при необходимости запускает цикл реализация → рецензирование → проверка в реальном репозитории.
Статус: экспериментальный. Изначально это был личный оркестрационный инструмент, и он публикуется в надежде, что части маршрутизации сеансов и шлюза проверки окажутся полезными другим. Интерфейсы будут меняться.
Что он делает
Маршрутизация сеансов — запускает и возобновляет сеансы Claude Code / Codex для каждого проекта и темы, так что последующие запросы попадают в тот же контекст.
Отслеживание задач — каждое отправление становится задачей с состоянием, выводом и кодом выхода.
Шлюз проверки — выполняет указанные вами тестовые команды в репозитории и сообщает, подтверждено ли изменение проходящими тестами, прежде чем вы его примете.
Цикл рецензирования — поочередно отправляет агента-исполнителя и агента-рецензента до заданного лимита правок, с проверкой через шлюз проверки.
Шлюз — те же возможности через HTTP + WebSocket, так что удаленный клиент (например, телефон) может отправлять задачи и получать потоковый вывод.
Related MCP server: agent-intern
Установка
npm install -g @yukinuma/agent-bridge-mcpТребуется Node.js 20+, а также установленные и аутентифицированные CLI-агенты, которые вы собираетесь использовать
(claude, codex и/или agy).
Замечание об агенте antigravity
agy запускает внутренний языковой сервер и ожидает реальный терминал. При запуске из обычного
канала он завершается до того, как ответит, что со стороны вызывающего кода неотличимо от зависания.
Поэтому на Windows этот адаптер запускает его под winpty (входит в состав Git for Windows) и держит stdin открытым на время вызова.
Два важных следствия:
winptyпрерывается на собственном утверждении при завершении, поэтому его код выхода не отражает то, что сделалagy. При работе через pty адаптер оценивает успех по тому, пришел ли ответ, а не по коду выхода, и отфильтровывает текст утверждения из захваченного вывода.При тайм-ауте дерево процессов убивается по PID. Убийство по имени образа могло бы затронуть любые интерактивные сеансы
agy, открытые в другом месте, поэтому это намеренно не делается.
Установите WINPTY_PATH или AGY_PATH, если какой-либо из бинарников находится в нестандартном месте. На
платформах, отличных от Windows, agy запускается напрямую, что не тестировалось.
Использование в качестве MCP-сервера
{
"mcpServers": {
"agent-bridge": {
"command": "agent-bridge-mcp",
"env": {
"AGENT_BRIDGE_WORKSPACE": "/path/to/your/projects"
}
}
}
}Доступные инструменты: agent_send, agent_status, agent_sessions, agent_cancel.
Использование в качестве шлюза
export ABC_AUTH_TOKEN="$(openssl rand -hex 24)"
export AGENT_BRIDGE_WORKSPACE="/path/to/your/projects"
agent-bridge-gatewayШлюз отказывается запускаться без ABC_AUTH_TOKEN. Токена по умолчанию нет.
Переменная | По умолчанию | Значение |
| (обязательно) | Общий секрет для аутентификации REST и WebSocket |
|
| Порт прослушивания |
|
| Адрес привязки |
|
| Базовая директория, относительно которой разрешаются имена |
|
| Куда записываются файлы состояния сеансов и задач |
| только localhost | Разделенный запятыми список разрешенных CORS-источников |
Конечные точки
Метод | Путь | Примечания |
|
| Сводка по шлюзу и выполняющимся задачам |
|
| Директории, найденные в рабочей области |
|
| Список сеансов |
|
| Список / просмотр задач |
|
| Отправить задачу агенту |
|
| Отменить выполняющуюся задачу |
|
| Запустить шлюз проверки |
|
| Зафиксировать и отправить изменения в репозиторий |
|
| Запустить цикл реализации/рецензирования |
|
| События вывода задач и жизненного цикла |
/api/dispatch, /api/git/commit-push и /api/review-loop требуют явной цели
— либо cwd, либо project, который разрешается внутри рабочей области. Они возвращают
400, а не используют директорию по умолчанию, и значения project, выходящие за пределы рабочей области, отклоняются.
Безопасность
Этот сервис запускает агентов кодирования с отключенными подсказками безопасности. Именно это делает возможной автоматическую отправку — агент, который останавливается для запроса одобрения, просто зависает, когда за клавиатурой никого нет, но это означает, что любой, кто может получить доступ к API, может выполнить произвольный код от имени пользователя, запустившего шлюз.
В частности, адаптеры CLI передают:
Агент | Флаг | Отказ от участия |
Codex |
|
|
Antigravity |
|
|
Оба по умолчанию обходят проверки. Отказы от участия — это опции на уровне адаптера; они пока не проведены через инструменты MCP или REST API, поэтому через HTTP обход в настоящее время безусловен.
Относитесь к этому как к привилегированному локальному демону:
Он привязывается к
127.0.0.1по умолчанию. УстановкаAGENT_BRIDGE_HOSTна что-либо другое открывает отправку задач, выполнение кода без песочницы и git push в вашу сеть.Токен аутентификации — это один общий секрет, передаваемый в заголовке Bearer или параметре запроса
token. Параметры запроса попадают в журналы — предпочитайте заголовок, где это возможно. Компрометация этого единственного токена равносильна передаче оболочки.Между проектами нет изоляции, кроме проверки пути рабочей области.
/api/git/commit-pushотправляет изменения в тот удаленный репозиторий, который настроен в целевом репозитории. Он не спрашивает повторно перед отправкой.
Не открывайте доступ к этому сервису из ненадежной сети и не запускайте его от имени пользователя с большими правами, чем необходимо для работы.
Разработка
npm install
npm run typecheck
npm run buildЛицензия
MIT
Available Tools
6 toolsagent_cancelC
Cancel a currently running agent task.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It doesn't explain whether cancellation is immediate or graceful, if it can be undone, what happens to results, or any side effects. This is a significant gap for a cancellation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that directly states the action. It is appropriately sized but could be slightly more informative without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's destructive nature, lack of annotations, and no output schema, the description should provide more detail on what happens after cancellation (e.g., state changes, resource cleanup, return codes). It is incomplete for a safe agent decision.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes taskId as 'Task ID to cancel'. The description adds no extra meaning beyond this, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Cancel' and the resource 'currently running agent task', which differentiates it from siblings like agent_send or agent_status. However, it doesn't explicitly mention that the task must be running versus already completed, which is a minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to cancel a task vs. waiting for completion, or when alternatives like agent_review_loop might be more appropriate. The description gives no context on prerequisites or consequences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_evidence_checkA
Run Evidence Gate validation: inspect git status/diff and execute test/typecheck/lint commands to produce empirical evidence report.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Target workspace directory (default: current directory) | |
| timeoutMs | No | Timeout per test command in ms (default: 60000ms) | |
| testCommands | No | List of test commands to run (e.g. ['npm test', 'npx tsc --noEmit']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the tool runs local commands (git, test, lint) but doesn't disclose potential side effects (e.g., modifying git state, consuming user resources, or requiring network access). The description is clear on intended behavior but lacks depth on risks or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that effectively conveys the tool's purpose and primary actions. It is appropriately front-loaded and contains no unnecessary words. However, given 3 parameters and no output schema, it could have included more context without being verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is moderately complex (runs multiple commands, outputs a report) with no output schema. The description gives the big picture but lacks detail on what the report contains, error handling, or how timeoutMs affects operations. It's minimally complete for a 3-param tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no additional parameter meaning beyond the schema; it just summarizes the tool's action. The schema already adequately describes the three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (Run, inspect, execute) and identifies the resource (Evidence Gate validation) with concrete actions: git status/diff and test/typecheck/lint commands. It clearly distinguishes from sibling tools which are about sending, canceling, status, sessions, and review loops.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is used for evidence gathering before code changes, but provides no explicit guidance on when to use it vs alternatives. It doesn't mention prerequisites (e.g., the workspace having git and test commands) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_review_loopA
Execute full autonomous development loop: Codex implements -> Evidence Gate validates -> Claude reviews -> Auto-revision (up to max 2 revisions limit).
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Target workspace directory (default: current directory) | |
| topic | No | Topic or feature name (e.g. 'auth-fix') | |
| engine | No | Engine to use: 'cli' (default) or 'sdk' | |
| prompt | Yes | The feature specification or bugfix task description | |
| project | No | Directory name of the project inside the workspace | |
| timeoutMs | No | Timeout per turn in ms (default: 180000ms) | |
| maxRevisions | No | Maximum auto-revision retries (default: 2) | |
| testCommands | No | Test commands for Evidence Gate (e.g. ['npm test']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the multi-step pipeline (Codex implements -> Evidence Gate validates -> Claude reviews -> auto-revision) and the auto-revision limit of 2. This gives the agent a good understanding of what the tool does and its boundaries, though it does not discuss side effects or what gets modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the key action ('Execute full autonomous development loop') and then lists the sequential steps. Every element earns its place, no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multi-step process, no output schema), the description is reasonably complete. It explains the loop stages and constraints (max 2 revisions). However, it omits details like what 'Evidence Gate validates' entails or what the output/return value looks like, which would be helpful for an agent to determine success or failure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter has a description in the schema. The tool description itself does not add parameter-level detail, but given full coverage, a baseline of 3 is appropriate. An extra point is earned because the description effectively frames the purpose of the 'prompt' and 'maxRevisions' parameters in the context of the loop, adding semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('executes', 'validates', 'reviews') and clearly identifies the resource (a full development loop with multiple stages). It distinguishes itself from sibling tools like 'agent_send' or 'agent_evidence_check' by describing a multi-step autonomous process, not a single action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (autonomous development with revisions) and mentions a max revision limit, but does not explicitly say when to use this tool versus alternatives like 'agent_send' or 'agent_evidence_check'. There is no guidance on prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_sendB
Send an instruction to Claude Code or Codex CLI/SDK. Executes asynchronously in background and returns task_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Working directory for execution (default: current directory) | |
| agent | Yes | Target agent: 'claude', 'codex', or 'antigravity' (agy CLI) | |
| model | No | Specific model name (e.g. 'sonnet', 'opus' for Claude; 'o3' for Codex) | |
| topic | No | Topic or feature name (e.g. 'presence', 'auth') | |
| engine | No | Execution engine: 'cli' (default) or 'sdk' | |
| prompt | Yes | Instruction or prompt text for the agent | |
| project | No | Directory name of the project inside the workspace | |
| taskType | No | Role or nature of task | |
| sessionId | No | Specific internal session ID to resume | |
| timeoutMs | No | Execution timeout in milliseconds (default: 180000ms / 3min) | |
| forceNewSession | No | Set true to force create a new session instead of reusing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that execution is asynchronous and returns a task_id, which is useful. However, it does not disclose what happens on failure, whether the task can be cancelled, rate limits, or authentication needs. The description is adequate but not comprehensive for a tool with 11 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and directly states the purpose and key behavior. It is front-loaded and efficient. However, it could include a brief example or usage note without becoming too long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, 2 required, no output schema), the description is somewhat minimal. It does not explain return values (though no output schema exists), error handling, or how to poll for results (e.g., using agent_status). The description is functional but leaves gaps for an agent to fill from context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description does not add any additional meaning beyond what the schema provides. Baseline 3 is appropriate; the description adds no value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Send an instruction'), the target ('Claude Code or Codex CLI/SDK'), and the key behavior ('asynchronously in background'). It returns a task_id, which distinguishes it from synchronous tools. However, it could be slightly more specific about the 'antigravity' agent and the sibling tools, but overall it's clear and informative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for sending instructions to agents, but it does not provide guidance on when to use this tool versus alternatives like 'agent_review_loop' or 'agent_evidence_check'. No explicit when-not-to-use or alternative suggestions are given, leaving the agent to infer from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_sessionsC
List active or archived sessions tracked by Agent Bridge.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | Filter by agent type | |
| topic | No | Filter by topic | |
| status | No | Filter by status | |
| project | No | Filter by project |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only states that the tool lists sessions (a read operation), but fails to mention whether results are paginated, what permissions are needed, any rate limits, or what happens with no filters. For a listing tool with no annotation safety hints, this omission is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of six words. It is efficient and immediately communicates the tool's purpose. However, it is slightly underspecified, trading completeness for brevity. Still, it earns its place without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the four optional parameters and no output schema or annotations, the description is insufficient. It does not explain how filters interact, what the response structure looks like, or how to distinguish this tool from siblings. The agent cannot fully judge when or how to invoke the tool based on this description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% because all four parameters have descriptions in the JSON schema. The description adds no additional semantics beyond the schema, merely echoing the status filter. Baseline 3 is appropriate; no extra value is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists sessions tracked by Agent Bridge, with an explicit mention of filtering by status (active/archived). However, it does not differentiate from the sibling tool agent_status, which might also provide session-level status information. The purpose is clear but lacks unique positioning relative to similar tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like agent_status or agent_send. It does not mention prerequisites, exclusions, or typical use cases. The agent is left to infer usage solely from the vague action description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_statusB
Check the status, output, or error of a background task dispatched via agent_send.
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | Task ID returned from agent_send (e.g. 'task_claude_12345') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It only says 'Check,' which hints at a read-only operation, but it does not confirm idempotency, authorization requirements, or whether the tool can be called multiple times safely. The lack of behavioral details is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that immediately states the tool's purpose. No extraneous information is present, making it efficient. However, it could include brief behavioral notes without bloating the text, keeping it from a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations), the description covers the basic purpose and parameter context. However, it lacks any indication of what the tool returns (e.g., format of status/output/error), which would help an agent invoke it correctly without relying on trial and error.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—the taskId parameter already includes a clear description (e.g., 'Task ID returned from agent_send'). The tool description adds no new semantic value beyond what the schema provides, hitting the baseline score for high coverage without additional benefit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Check' and the resource 'status, output, or error of a background task dispatched via agent_send.' This clearly defines the tool's function and differentiates it from siblings like agent_send (dispatch), agent_cancel, and agent_evidence_check, which serve distinct roles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after agent_send by referencing 'task dispatched via agent_send,' but it does not explicitly state when to use this tool versus alternatives (e.g., 'use after sending a task to poll for completion'). No guidance on when not to use it is provided, leaving room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.2.0- First observed
agent_cancel - First observed
agent_evidence_check - First observed
agent_review_loop - First observed
agent_send - First observed
agent_sessions - First observed
agent_status
TDQS
Scored across 6 tools
Each tool targets a distinct action: send, cancel, check evidence, check status, list sessions, and run a full review loop. The only minor overlap is between agent_send and agent_review_loop, as both can dispatch work, but the latter is a higher-level workflow clearly distinguished by name and description.
All tool names consistently follow the agent_verb or agent_verb_noun pattern (e.g., agent_send, agent_evidence_check, agent_review_loop). The naming is predictable and readable across the set.
With 6 tools, the surface is appropriately scoped for an agent orchestration and review bridge. Each tool provides a distinct function without overwhelming users or leaving the set feeling thin.
The set covers the core workflow: dispatch, status, cancel, and an integrated review loop. Evidence check and session listing add useful supporting operations. A minor gap is the lack of an explicit tool to modify or configure review loop parameters, but the overall surface is solid.
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server that spawns autonomous Claude Code agents in GitHub repos, enabling task delegation with persistent state, multi-step workflows, and job monitoring.47159 npm2Apache 2.0
- AlicenseAqualityAmaintenanceAn MCP server that bridges Claude Code with Antigravity CLI using a Swarm Agent architecture to optimize local development workflows and minimize LLM token costs. Includes a web UI for monitoring agent workflows.29235 PyPI27MIT
- AlicenseNot gradedqualityCmaintenanceA local-first MCP orchestration server that uses Codex as lead planner and Antigravity as host to delegate and review bounded tasks with Git integration and persistent SQLite state.Apache 2.0
- AlicenseNot gradedqualityAmaintenanceAn MCP server that bridges CLI coding agents like Claude Code, Codex, opencode, and Antigravity into any MCP client, enabling synchronous and asynchronous task execution, follow-up input, and a structured code review tool.99 npm2MIT