Skip to main content
Glama
limars874
by limars874

Coordination MCP

Coordination MCP — это лёгкий сервис общего рабочего состояния для нескольких ИИ-участников. Через MCP он предоставляет персистентные Ticket, неизменяемые Update и текстовые Artifact, позволяя ChatGPT, локальным ИИ и кодинг-агентам в одном Scope обмениваться, инкрементально синхронизировать и восстанавливать рабочий контекст.

Возможности V0.1

  • Ticket: сохраняет текущее состояние работы; можно обновлять title, status, artifact_ids и meta.

  • Update: сохраняет уже произошедшие факты, находки, решения или результаты; в рамках каждого Scope назначается монотонно возрастающий seq.

  • Artifact: хранит неизменяемое общее текстовое содержимое, например Markdown, логи или длинные документы.

  • Все объекты получают глобально уникальный ID, назначаемый сервером.

  • Ссылки на Ticket и Artifact должны принадлежать одному и тому же Scope.

V0.1 не включает аутентификацию, движок рабочих процессов, подтверждение очереди, граф связей, wake-up-уведомления и поддержку бинарных артефактов.

Related MCP server: AgentDrive MCP Server

Рекомендуемые сценарии использования

  • Ticket представляет текущее изменяемое состояние постоянной работы; это не журнал событий.

  • Update представляет неизменяемые события, которые уже произошли в хронологии работы: например, запрос, вывод, решение или результат.

  • Artifact представляет неизменяемое длинное текстовое содержимое; длинные ревью, спецификации или логи кладите в Artifact, а не упаковывайте в Update; связь задаётся через artifact_ids.

  • Поле created_by должно содержать стабильную метку участника, не меняющуюся между запусками и между агентами, например chatgpt или pi-local-agent. Не используйте каждый раз случайные или изменяющиеся имена — так принадлежность записей на таймлайн-панели остаётся понятной. Поле используется для определения provenance, а не для authentication.

Типичный цикл ревью выглядит так: локальный агент через Update запрашивает ревью → ChatGPT сохраняет полный ревью в Artifact и через Update возвращает краткое резюме и artifact_ids → локальный агент исправляет код и добавляет итоговый Update → ChatGPT делает повторное ревью.

Быстрый старт

Требования: Node.js 24+.

cd /path/to/coordination-mcp
npm install
npm run build
node dist/main.js

Сервис по умолчанию слушает:

http://127.0.0.1:3000/mcp

Также можно запустить dev-версию напрямую:

npm run dev

Сервис привязывается только к 127.0.0.1. Если нужен доступ для удалённого ChatGPT, открывайте MCP endpoint через безопасный туннель и не выставляйте Node.js-сервис напрямую в публичный интернет. В V0.1 аутентификации пока нет.

Конфигурация

Приоритет конфигурации (от низкого к высокому):

代码默认值 < config/default.yml < ~/.coordination-mcp/config.yml < --profile < 环境变量

Пользовательская конфигурация

Создайте пользовательскую конфигурацию:

mkdir -p ~/.coordination-mcp
$EDITOR ~/.coordination-mcp/config.yml

Пример:

port: 43721
allowedHosts:
  - 127.0.0.1
  - localhost
# dataDirectory: /absolute/path/to/coordination-data

~/.coordination-mcp/config.yml необязателен и не создаётся сервисом автоматически. Если dataDirectory не задан, по умолчанию используется:

~/.coordination-mcp/data

Рекомендуется указывать dataDirectory абсолютным путём. Относительный путь будет резолвиться относительно current working directory на момент запуска процесса.

Profile

Путь профиля резолвится относительно current working directory; после указания файл должен существовать:

node dist/main.js --profile config/local.yml
node dist/main.js --profile=/absolute/path/to/local.yml

Профиль перекрывает только те поля, которые в нём объявлены; не объявленные в нём поля продолжают наследоваться из предыдущей конфигурации.

Переменные окружения

PORT=43721 \
COORDINATION_DATA_DIR=/absolute/path/to/data \
COORDINATION_ALLOWED_HOSTS=127.0.0.1,localhost \
node dist/main.js

Поддерживаемые переменные окружения:

Переменная

Описание

PORT

HTTP-порт, диапазон от 0 до 65535

COORDINATION_DATA_DIR

Каталог данных

COORDINATION_ALLOWED_HOSTS

Разрешённые Host, через запятую

Конфигурационный файл считывается только при запуске сервиса; после его изменения нужно перезапустить main.js.

MCP Tools

Сервис предоставляет следующие 8 tools через POST /mcp:

Tool

Назначение

list_tickets

список Tickets в Scope

get_ticket

чтение одного Ticket

create_ticket

создание Ticket

update_ticket

обновление изменяемых полей Ticket

list_updates

инкрементальное чтение Updates по seq

add_update

добавить неизменяемый Update

create_artifact

создать неизменяемый текстовый Artifact

get_artifact

чтение одного Artifact

Пример инициализации MCP

curl -N \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  -H 'mcp-protocol-version: 2025-03-26' \
  -X POST http://127.0.0.1:3000/mcp \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": {
        "name": "manual-client",
        "version": "0.1.0"
      }
    }
  }'

Пример создания Ticket

Пример параметров для tools/call:

{
  "name": "create_ticket",
  "arguments": {
    "scope": "coordination-mcp",
    "title": "Review the MCP integration",
    "created_by": "local-ai",
    "status": "open",
    "meta": {
      "priority": "high"
    }
  }
}

Хранение данных

Каталог данных по умолчанию создаётся по требованию; только старт сервиса или выполнение операций чтения каталог данных не создают. При первой записи Ticket, Update или Artifact создаётся структура, похожая на следующую:

~/.coordination-mcp/
├── config.yml                 # 可选用户配置
└── data/
    └── scopes/
        └── <base64url-scope>/
            ├── tickets/
            │   └── T-*.json
            ├── updates.jsonl
            └── artifacts/
                └── A-*.json
  • Для каждого Ticket и Artifact используется отдельный pretty-printed JSON-файл.

  • Updates одного Scope хранятся в файле формата JSONL с append-only записью; при чтении игнорируется последняя повреждённая хвостовая запись без перевода строки, которую невозможно разобрать, но повреждение JSON в записях, корректно завершённых переводом строки, не скрывается.

  • Новые каталоги создаются с правами 0700, новые файлы данных — с правами 0600.

  • V0.1 использует мьютекс на Scope внутри одного процесса; межпроцессные блокировки и распределённое развёртывание не поддерживаются.

Разработка и проверка

npm test
npm run check
npm run build

Документация проекта

Coordination MCP — это лёгкий сервис общего рабочего состояния для нескольких ИИ-участников. Через MCP он предоставляет персистентные Ticket, неизменяемые Update и текстовые Artifact, позволяя ChatGPT, локальным ИИ и кодинг-агентам в одном Scope делиться, инкрементально синхронизировать и восстанавливать рабочий контекст.

Возможности V0.1

  • Ticket: сохраняет текущее состояние работы; можно обновлять title, status, artifact_ids и meta.

  • Update: сохраняет уже произошедшие факты, находки, решения или результаты; в рамках каждого Scope им назначается монотонно возрастающий seq.

  • Artifact: хранит неизменяемое общее текстовое содержимое, например Markdown, логи или длинные документы.

  • Все объекты получают глобально уникальный ID, назначаемый сервером.

  • Ссылки на Ticket и Artifact должны принадлежать одному и тому же Scope.

V0.1 не включает аутентификацию, движок рабочих процессов, подтверждение очереди, граф связей, wake-up-уведомления и поддержку бинарных артефактов.

Рекомендуемые сценарии использования

  • Ticket представляет текущее изменяемое состояние текущей работы; это не журнал событий.

  • Update представляет неизменяемые события, которые уже произошли в хронологии работы: например, request, finding, decision или result.

  • Artifact представляет неизменяемое длинное текстовое содержимое; длинные review, спецификации или логи следует помещать в Artifact, а не втискивать в Update; связь задаётся через artifact_ids.

  • В created_by следует использовать стабильную метку участника, которая не меняется между запусками и между агентами, например chatgpt или pi-local-agent, а не случайные или изменяющиеся имена — это сохраняет ясную принадлежность записей в хронологии. Поле используется для определения provenance, а не для authentication.

Типичный цикл review: локальный ИИ-агент запрашивает review через Update → ChatGPT сохраняет полный review как Artifact и возвращает через Update краткое резюме и artifact_ids → локальный ИИ-агент исправляет код и добавляет итоговый Update → ChatGPT повторно делает review.

Быстрый старт

Требования: Node.js 24+.

cd /path/to/coordination-mcp
npm install
npm run build
node dist/main.js

Сервис по умолчанию слушает:

http://127.0.0.1:3000/mcp

Также можно запустить dev-версию напрямую:

npm run dev

Сервис привязывается только к 127.0.0.1. Если нужен доступ для удалённого ChatGPT, следует открывать MCP endpoint через безопасный туннель и не выставлять Node.js service напрямую в публичную сеть. В V0.1 аутентификация пока не предусмотрена.

Конфигурация

Приоритет конфигурации (от низкого к высокому):

代码默认值 < config/default.yml < ~/.coordination-mcp/config.yml < --profile < 环境变量

Пользовательская конфигурация

Создайте пользовательскую конфигурацию:

mkdir -p ~/.coordination-mcp
$EDITOR ~/.coordination-mcp/config.yml

Пример:

port: 43721
allowedHosts:
  - 127.0.0.1
  - localhost
# dataDirectory: /absolute/path/to/coordination-data

~/.intro-config.yml является необязательным и не создаётся сервисом автоматически. Если dataDirectory не задан, по умолчанию используется:

~/.coordination-mcp/data

Рекомендуется указывать dataDirectory в виде абсолютного пути. Относительный путь будет разрешаться относительно current working directory на момент запуска процесса.

Profile

Путь к профилю разрешается относительно current working directory; при указании файл должен существовать:

node dist/main.js --profile config/local.yml
node dist/main.js --profile=/absolute/path/to/local.yml

Профиль переопределяет только те поля, которые в нём объявлены; не объявленные поля продолжают наследовать из предыдущей конфигурации.

Переменные окружения

PORT=43721 \
COORDINATION_DATA_DIR=/absolute/path/to/data \
COORDINATION_ALLOWED_HOSTS=127.0.0.1,localhost \
node dist/main.js

Поддерживаемые переменные окружения:

Переменная

Описание

PORT

HTTP-порт, диапазон от 0 до 65535

COORDINATION_DATA_DIR

Каталог данных

COORDINATION_ALLOWED_HOSTS

Разрешённые Host, через запятую

Конфигурационный файл считывается только при запуске сервиса; после изменения его нужно перезапускать main.js.

MCP Tools

Сервис предоставляет следующие 8 tools через POST /mcp:

Tool

Назначение

list_tickets

список Tickets в указанном Scope

get_ticket

чтение одного Ticket

create_ticket

создание Ticket

update_ticket

обновление изменяемых полей Ticket

list_updates

инкрементальное чтение Updates по seq

add_update

добавление неизменяемого Update

create_artifact

создание неизменяемого текстового Artifact

get_artifact

чтение одного Artifact

Пример инициализации MCP

curl -N \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Content-Type: application/json' \
  -H 'mcp-protocol-version: 2025-03-26' \
  -X POST http://127.0.0.1:3000/mcp \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2025-03-26",
      "capabilities": {},
      "clientInfo": {
        "name": "manual-client",
        "version": "0.1.0"
      }
    }
  }'

Пример создания Ticket

Пример параметров для tools/call:

{
  "name": "create_ticket",
  "arguments": {
    "scope": "coordination-mcp",
    "title": "Review the MCP integration",
    "created_by": "local-ai",
    "status": "open",
    "meta": {
      "priority": "high"
    }
  }
}

Хранение данных

Каталог данных по умолчанию создаётся по требованию; только запуск сервиса или выполнение операций чтения не создают каталог данных. При первой записи Ticket, Update или Artifact создаётся структура, подобная следующему формату:

~/.coordination-mcp/
├── config.yml                 # 可选用户配置
└── data/
    └── scopes/
        └── <base64url-scope>/
            ├── tickets/
            │   └── T-*.json
            ├── updates.jsonl
            └── artifacts/
                └── A-*.json
  • Ticket и Artifact хранятся в отдельных pretty-printed JSON-файлах.

  • Updates одного Scope хранятся в append-only JSONL-файле; при чтении игнорируется последняя повреждённая запись без перевода строки, которую невозможно разобрать, но повреждение JSON в записях, завершённых полным переводом строки, не скрывается.

  • Новые каталоги создаются с правами 0700, новые файлы данных — с правами 0600.

  • V0.1 использует мьютекс на Scope в рамках одного процесса; не поддерживаются межпроцессные блокировки или распределённое развёртывание.

Разработка и проверка

npm test
npm run check
npm run build

Документация проекта

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers