cheerio-mcp-bridges
cheerio-mcp-bridges
Четыре «узких инструмента» MCP-сервера, которые позволяют агенту-оркестратору (например, Claude, работающему в Cowork), не имеющему возможности управлять терминальным GUI, запускать четыре установленных и авторизованных локальных CLI для кодинга:
Сервер | Внутренний вызов | Внешний инструмент | Язык |
|
|
| Node.js |
|
|
| Node.js |
|
|
| Node.js |
|
|
| Node.js |
Четыре моста независимы друг от друга, устанавливать все четыре не обязательно. Сначала запустите npm run doctor, чтобы узнать, какие CLI доступны на этой машине, и включите только соответствующие мосты.
Каждый из четырёх серверов предоставляет один, узконаправленный инструмент (не универсальный run_command) — он может только «отправить prompt этому агенту». Остаточный риск заключается в том, что базовый CLI может сделать что угодно после получения prompt, поэтому по умолчанию подход консервативный.
Ключевые моменты дизайна
Рабочая директория фиксируется сервером: cwd берётся из переменных окружения (
PI_BRIDGE_CWD/AGY_BRIDGE_CWD/CODEX_BRIDGE_CWD/COPILOT_BRIDGE_CWD), вызывающая сторона не может его изменить.Детерминированное продолжение сессии:
pi: сервер сам генерирует UUID →
--session-id(pi поддерживает «создать, если не существует»), при первом вызове id возвращается; при последующих вызовах с тем же id сессия продолжается, без зависимости от неоднозначной семантики «продолжить последнюю».agy: невозможно предварительно указать id, при первом запуске
conversation_idизвлекается из--output-format stream-jsonи возвращается; при последующих вызовах используется--conversation <id>.codex: при первом запуске
thread_idизвлекается из событияthread.startedи возвращается; при последующих вызовах используетсяcodex exec resume <id>.copilot: сервер сам генерирует UUID →
--session-id, при первом вызове id возвращается; при последующих вызовах с тем же id сессия продолжается.
Нулевая инъекция в shell: во всех четырёх случаях
shell:falseдля прямого spawn, prompt передаётся как единственный элемент argv, любые специальные символы shell не интерпретируются.Консервативные флаги разрешений:
По умолчанию разрешено чтение и запись файлов (соответствует выбору пользователя), но возможности записи/опасные действия всё равно разделены по уровням.
pi по умолчанию не использует доверие к проекту
-a(approve_projectвключает его).agy по умолчанию не использует
--dangerously-skip-permissions; чтение/запись в workspace разрешены автоматически, команды shell остаются под контролем, если только не указаноdangerously_allow_all:true.codex по умолчанию использует sandbox
read-only(danger-full-accessнужно явно указать).copilot по умолчанию использует только
--allow-all-tools(необходимо для неинтерактивного режима), не использует--allow-all(включая paths + urls), последний включается только приdangerously_allow_all:true.
Аудит: каждый вызов записывает одну строку JSONL в
logs/<pi|agy|codex|copilot>-YYYYMMDD.jsonl(prompt, session/thread id, exit code, затраченное время, usage).
Пройденные грабли (получено из практики)
stdin должен быть закрыт: CLI воспринимают piped stdin как дополнительный контекст, Node spawn по умолчанию оставляет открытый stdin pipe, что заставляет CLI зависать в ожидании EOF. Решение:
stdio: ['ignore','pipe','pipe'].Расширения pi по умолчанию отключены: интерактивные расширения (например,
auto-annotate/plannotator) зависают в headless-режиме (ожидают UI, который никогда не появится). Поэтому по умолчанию используется--no-extensions, при необходимости можно включить обратно с помощьюenable_extensions:true.codex обязательно должен использовать
--skip-git-repo-check: если cwd не является git-репозиторием (например,C:/Cheerio), без этого флага произойдёт ошибка и выход.Неинтерактивный режим copilot обязательно требует
--allow-all-tools: в документации явно указано, что неинтерактивный режим должен использовать этот флаг, иначе он зависнет в ожидании подтверждения прав пользователем. Мост по умолчанию использует--allow-all-tools, но--allow-all(включая paths + urls) включается только приdangerously_allow_all:true.MCP-сервер copilot загружается очень медленно: в неинтерактивном режиме copilot всё равно загружает все MCP-серверы (playwright, notion, tavily и т.д.), только запуск занимает 10–30 секунд. Если таймаут слишком короткий, процесс будет убит на этапе загрузки MCP.
Автоматическая маршрутизация copilot по умолчанию может упереться в квоту: если не указать модель, hydra router copilot автоматически выберет модель (например,
gpt-5-mini), и если квота этой модели исчерпана, произойдёт ошибка. Рекомендуется явно указывать модель на стороне вызывающего.Copilot/Codex не могут неинтерактивно запросить оставшуюся квоту:
Copilot:
copilot billing/copilot limits— это темы справки, полезные только в интерактивном режиме UI. В неинтерактивном CLI нет команд типаcopilot usage. Мост может получить только «снимок на момент сбоя» из событияmodel.call_failure(quotaSnapshots), но не может активно запросить остаток.Codex:
codex login statusпоказывает только способ входа (Logged in using ChatGPT), без запроса использования/квоты.codex doctorвыполняет только диагностику установки.turn.completed.usageв мосте содержит только использование токенов за текущий вызов, без оставшейся квоты.
Корпоративный TLS-прокси с перехватом может привести к сбою
npm install: некоторые организации используют TLS-прокси с проверкой (например, решения для перехвата сертификатов от вендоров безопасности) для расшифровки HTTPS-трафика. Это приводит к сбою проверки TLS в Node.js,npm installвыдаёт ошибки типаUNABLE_TO_GET_ISSUER_CERT_LOCALLYилиcertificate chain incomplete. Решение: установить переменную окруженияNODE_EXTRA_CA_CERTS, указывающую на полный файл цепочки сертификатов компании (формат PEM), обратите внимание, что нужен промежуточный сертификат CA (intermediate cert), а не только leaf cert.Список разрешённых IP-адресов GitHub Copilot Enterprise может блокировать доступ CLI: если в вашей учётной записи GitHub Copilot Enterprise включён список разрешённых IP-адресов,
ask_copilotможет быть напрямую заблокирован API (сообщение об ошибке примерно такое: "enterprise has an IP allow list enabled, and your IP address is not permitted"). Это совершенно не связано с настройками bridge / MCP, необходимо обратиться к администратору GitHub Enterprise, чтобы узнать, есть ли текущий исходящий IP в белом списке, или нужно ли использовать определённый VPN / корпоративную сеть.
Установка на разных машинах (с нуля)
Четыре моста независимы друг от друга. Сначала запустите
npm run doctor, чтобы узнать, какие CLI доступны на этой машине, регистрируйте в настройках MCP-клиента только соответствующие мосты, остальные, которые не установлены, не добавляйте.
Предварительные требования
Node.js ≥ 18 (требуется поддержка
node:testи ES module)npm ≥ 9
Шаг 1: Клонирование и установка
git clone https://github.com/CheerioCorner/cheerio-mcp-bridges.git
cd cheerio-mcp-bridges
npm installШаг 2: Проверка доступных CLI
npm run doctorБудет выведена таблица, показывающая, какие из 4 CLI найдены, могут ли они нормально выполнить --version, и какие мосты рекомендуется включить.
Шаг 3: Установка необходимых CLI (если ещё не установлены)
Ниже приведены способы установки и входа для каждого CLI, пропустите те, которые не установлены, устанавливать все не обязательно:
pi (earendil-works/pi)
npm install -g @earendil-works/pi-coding-agent
pi # 首次啟動會引導登入Проверка: pi --version или pi --help
agy (Google Antigravity CLI)
# 請參考官方文件安裝,通常是一個獨立執行檔
# https://github.com/nicholasareed/antigravity
agy # 首次啟動會引導 Google 帳號授權Проверка: agy --version
codex (OpenAI Codex CLI)
# 請參考 OpenAI 官方文件安裝
# Windows 通常安裝在 %LOCALAPPDATA%/Programs/OpenAI/Codex/
codex login # 會引導 ChatGPT 帳號授權Проверка: codex --version, codex login status
copilot (GitHub Copilot CLI)
npm install -g @github/copilot-cli
copilot login # 會引導 GitHub 帳號授權Проверка: copilot --version
Шаг 4: Выборочное включение мостов
Скопируйте настройки нужных мостов из mcp-config.example.json в настройки вашего MCP-клиента (например, ~/.mcp.json или .mcp.json).
Не копируйте все четыре. Копируйте только блоки, соответствующие CLI, которые установлены и авторизованы на этой машине, затем откорректируйте пути и переменные окружения.
Например, если у вас установлены только pi и copilot, добавьте только два блока pi-bridge и copilot-bridge.
Шаг 5: Проверка нормальной работы моста
Запустите ваш MCP-клиент и отправьте небольшой prompt для тестирования с помощью соответствующего инструмента:
ask_pi:{ "prompt": "Reply only: pong" }ask_agy:{ "prompt": "Reply only: pong" }ask_codex:{ "prompt": "Reply only: pong" }ask_copilot:{ "prompt": "Reply only: pong" }
Должен прийти ответ pong и строка с метаданными моста. Если пришло сообщение об ошибке, проверьте:
Правильный ли путь к исполняемому файлу CLI (переменная окружения
*_BRIDGE_ENTRY)Авторизован ли CLI
Существует ли переменная окружения cwd (
*_BRIDGE_CWD)
Быстрый старт
cd C:/Cheerio/Claude/mcp-bridges # 或你 clone 的路徑
npm install
npm run doctor # 檢查哪些 CLI 可用
npm test # 執行 parser/arg-builder 單元測試(不花 API 額度)Регистрация в MCP-клиенте
См. mcp-config.example.json. Это меню — в зависимости от того, какие CLI реально есть на этой машине, скопируйте только соответствующие блоки в настройки вашего MCP-клиента (.mcp.json) и откорректируйте пути. Не нужно копировать все четыре.
Интерфейс инструментов
ask_pi
Параметр | Тип | По умолчанию | Описание |
| string | — | Инструкция для pi (обязательно) |
| string | Автогенерация | Передайте значение, возвращённое в прошлый раз, чтобы продолжить тот же диалог |
| boolean | false | При true разрешены только |
| string | — | Переопределить модель |
| boolean | false | Доверять локальным ресурсам проекта (pi -a) |
| boolean | false | Загружать расширения (есть риск зависания) |
| number | 300000 | Жёсткий таймаут |
Возвращает: итоговый текст pi + строка pi-bridge metadata (содержит session_id).
ask_agy
Параметр | Тип | По умолчанию | Описание |
| string | — | Инструкция для agy (обязательно) |
| string | Автоизвлечение | Передайте значение, возвращённое в прошлый раз, чтобы продолжить |
| string | — | model slug (см. |
| low|medium|high | — | Интенсивность рассуждений |
| boolean | false | Включить ограничения терминальной песочницы (--sandbox) |
| boolean | false | Опасно: автоматически разрешить все права инструментов (включая shell) |
| number | 300000 | Жёсткий таймаут (также используется как agy --print-timeout) |
Возвращает: итоговый ответ agy + строка agy-bridge metadata (содержит conversation_id, status).
ask_codex
Параметр | Тип | По умолчанию | Описание |
| string | — | Инструкция для Codex (обязательно) |
| string | Автогенерация | Передайте возвращённый thread_id, чтобы продолжить |
| string | — | Переопределить модель (например, |
| read-only|workspace-write|danger-full-access | read-only | Стратегия песочницы |
| number | 300000 | Жёсткий таймаут |
Возвращает: итоговый текст Codex + строка codex-bridge metadata (содержит thread_id, usage).
ask_copilot
Параметр | Тип | По умолчанию | Описание |
| string | — | Инструкция для Copilot (обязательно) |
| string | Автогенерация | Передайте значение, возвращённое в прошлый раз, чтобы продолжить тот же диалог |
| string | — | Переопределить модель (например, |
| none|minimal|low|medium|high|xhigh|max | — | Интенсивность рассуждений |
| number | — | Верхний предел затрат на один вызов (предохранитель) |
| boolean | false | Опасно: добавить |
| number | 300000 | Жёсткий таймаут |
Возвращает: итоговый ответ Copilot + строка copilot-bridge metadata (содержит session_id, usage, quota_snapshots).
Ограничение запроса квоты: в CLI Copilot нет неинтерактивной команды для запроса «оставшейся общей квоты».
copilot billing/copilot limitsполезны только в интерактивном режиме UI. Мост может сообщить только «сколько потрачено на этот вызов» (usage+ текущиеquotaSnapshots), но не может сообщить оставшуюся общую квоту. Аналогично для Codex,codex login statusпоказывает только статус входа, без запроса использования.
Переменные окружения
Переменная | По умолчанию |
|
|
| Глобальный путь к |
| Путь к |
|
|
|
|
| Путь к |
|
|
|
|
| Путь к |
|
|
|
|
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CheerioCorner/cheerio-mcp-bridges'
If you have feedback or need assistance with the MCP directory API, please join our Discord server