Skip to main content
Glama

Oboe MCP

Структурированные рабочие процессы «один за другим» (one-by-one) для агентов-кодировщиков.

MCP-сервер для долговечных рабочих процессов обзора «один за другим» с приоритетным состоянием сессии для агентов-кодировщиков.

Предоставляет 16 инструментов для создания, навигации и решения задач в файлах сессий с приоритетной оценкой, включая обработку заблокированных элементов, первоклассные обновления утверждений и вложенные дочерние сессии, чтобы рабочие процессы /obo могли использовать операции MCP вместо прямого редактирования JSON.

Лицензировано под AGPL-3.0-or-later, доступно коммерческое лицензирование. Полные условия см. в файле LICENSE.

Пакет PyPI

Установите или запустите Oboe MCP напрямую из PyPI, используя один из этих вариантов:

  • Запуск без установки: uvx oboe-mcp

  • Установка в текущую среду: pip install oboe-mcp

Установка oboe-mcp также устанавливает команду oboe-cli:

# After pip install oboe-mcp
oboe-cli --help

# From PyPI 
uvx --from oboe-mcp oboe-cli --help

# From a local checkout (no install needed)
uvx --from /path/to/oboe-mcp oboe-cli --help

Справочник CLI (oboe-cli)

Установка oboe-mcp также устанавливает oboe-cli, удобный для человека компаньон командной строки для тех же файлов сессий, с которыми работают инструменты MCP.

oboe-cli [--session SESSION] [--base-dir DIR] COMMAND [ARGS...]

Глобальные опции:

Опция

Описание

--session SESSION, -s

Имя файла сессии (например, session_20260411_120000.json) или абсолютный путь

--base-dir DIR, -b

Корневой каталог проекта, содержащий .github/obo_sessions/ (по умолчанию определяется автоматически из текущей рабочей директории)

Автоматическое определение base-dir: если --base-dir не указан, oboe-cli использует текущую рабочую директорию, если она содержит папку .github/obo_sessions/, в противном случае он использует рабочую директорию как есть.

Команды

Команда

Описание

sessions

Список всех сессий (поддерживает --status active|paused|completed|incomplete)

status

Показать сводную статистику сессии

create

Создать новую сессию из файла элементов JSON

merge

Добавить новые элементы в существующую сессию

complete-session

Отметить всю сессию как завершенную

list

Список элементов, отсортированный по приоритету (поддерживает фильтр --status)

next

Показать следующий доступный для выполнения элемент

show ITEM_ID

Показать полную информацию об одном элементе

complete ITEM_ID RESOLUTION...

Отметить элемент как завершенный

skip ITEM_ID [REASON...]

Отметить элемент как пропущенный

in-progress ITEM_ID

Отметить элемент как находящийся в работе

block ITEM_ID BLOCKER...

Отметить элемент как заблокированный

approve ITEM_ID approved|denied|unreviewed

Установить метаданные утверждения

update ITEM_ID FIELD VALUE

Обновить одно поле элемента

create-child --child-session FILE

Создать дочернюю сессию и приостановить родительскую

complete-child [RESOLUTION...]

Завершить дочернюю сессию и возобновить родительскую

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

# Create a session from a JSON items file
oboe-cli --base-dir /path/to/project create \
    --title "Code review findings" \
    --input-file findings.json

# List sessions
oboe-cli --base-dir /path/to/project sessions

# Work through items
oboe-cli --base-dir /path/to/project --session session_20260411_120000.json next
oboe-cli --base-dir /path/to/project --session session_20260411_120000.json \
    in-progress 1
oboe-cli --base-dir /path/to/project --session session_20260411_120000.json \
    complete 1 "Fixed the validation bug"

Примечание: скрипт obo_helper.py, поставлявшийся в предыдущих версиях, теперь является тонкой прослойкой для устаревания, которая делегирует выполнение oboe-cli.

Инструмент

Описание

obo_create

Создание файла сессии + атомарное обновление index.json

obo_list_sessions

Список сессий из index.json

obo_session_status

Сводная статистика по сессии

obo_next

Следующий элемент: сначала in_progress, затем самый приоритетный ожидающий, затем отложенный

obo_list_items

Все элементы, отсортированные по priority_score desc

obo_get_item

Полная информация об одном элементе

obo_mark_blocked

Отметить элемент как заблокированный и сохранить информацию о блокировщике

obo_mark_complete

Отметить элемент как завершенный с текстом решения

obo_mark_in_progress

Отметить элемент как находящийся в работе

obo_mark_skip

Отметить элемент как пропущенный

obo_set_approval

Установить метаданные утверждения и опциональное состояние жизненного цикла

obo_complete_session

Отметить сессию как завершенную, когда не осталось активных элементов

obo_create_child_session

Создать дочернюю сессию, приостановить родительскую и перейти в дочернюю

obo_complete_child_session

Завершить дочернюю сессию и возобновить родительскую

obo_merge_items

Добавить новые элементы в существующую сессию и активировать ее снова

obo_update_field

Обновить любое поле; автоматически пересчитывает priority_score

Почему сессии OBO

Сессии «один за другим» — это не просто сохраненные заметки чата. Это модель рабочего процесса для обработки работы с несколькими элементами как долговечной, упорядоченной сессии взаимодействия.

По сравнению с обычным чатом или встроенными вопросами агента, OBO добавляет возможности, которые обычно не предоставляют более легкие режимы взаимодействия:

  • рабочий процесс, ориентированный на обзор, где агент может начать с определения объема, количества элементов, основных категорий и предложенного порядка выполнения

  • явная переприоритизация на основе срочности, важности, усилий и зависимости, а не того порядка, который случайно появился в чате

  • долговечные состояния жизненного цикла через pending, in_progress, deferred, blocked, completed и skipped

  • отдельные метаданные утверждения через approval_status, approval_mode, approved_at и approval_note

  • сохраненные метаданные блокировщиков, чтобы заблокированная работа оставалась видимой и объяснимой, а не бесследно исчезала из активной очереди

  • вложенные дочерние сессии, которые приостанавливают родительскую сессию, решают подзадачу, а затем чисто возобновляют родительскую сессию

  • первоклассное управление жизненным циклом сессии: список, создание, проверка, объединение, приостановка, возобновление и закрытие сессий как именованных объектов рабочего процесса

  • детерминированное восстановление после перезапуска модели, перезагрузки редактора или передачи управления агенту

  • машиночитаемый аудиторский след в файлах сессий вместо опоры на память разговора

Это наиболее важно, когда работа охватывает множество результатов, требует явных утверждений пользователя, зависит от промежуточных расследований или должна сохраняться в течение нескольких ходов агента. Чат хорош для разговора. Инструмент структурированных вопросов хорош для получения чистого ответа в текущем ходе. OBO предназначен для долговечной оркестрации рабочего процесса.

Используйте OBO, когда вам нужно контролируемое последовательное выполнение, долговечное состояние очереди или вложенная подзадача. Используйте обычный чат, когда задача достаточно мала, чтобы полный объект рабочего процесса добавил больше накладных расходов, чем пользы.

Модель состояния

OBO отслеживает каждый элемент по двум независимым осям.

Ось жизненного цикла

  • pending: работа в очереди, но еще не начата

  • in_progress: работа активно выполняется сейчас

  • deferred: работа утверждена для последующего выполнения и должна оставаться вне очереди немедленного обзора, пока активный проход обзора не будет исчерпан или пользователь явно не запросит отложенную работу

  • blocked: работа не может продолжаться, пока не будет решена внешняя зависимость или подзадача

  • completed: работа завершена и закрыта

  • skipped: работа намеренно не выполняется

Ось утверждения

  • unreviewed: явное решение пользователя еще не записано

  • approved: пользователь авторизовал работу

  • denied: пользователь явно отклонил работу

Поля метаданных утверждения:

  • approval_status: решение об утверждении элемента

  • approval_mode: immediate или delayed, когда было записано решение о времени утверждения

  • approved_at: отметка времени, когда было записано утверждение

  • approval_note: опциональная текстовая заметка о решении об утверждении

Распространенные пары:

  • Утвердить немедленно: вызовите obo_set_approval(..., approval_status="approved", approval_mode="immediate"); элемент обычно остается pending, пока работа не начнется или не будет перемещена в in_progress

  • Утвердить отложенно: вызовите obo_set_approval(..., approval_status="approved", approval_mode="delayed"); это записывает отложенное утверждение и перемещает элемент в deferred

  • Отклонить: установите approval_status=denied; если элемент закрывается из очереди, объедините это с status=skipped

Режимы взаимодействия

Три распространенных шаблона взаимодействия — это обычный чат, инструмент структурированных вопросов и полная сессия OBO. Они решают разные проблемы.

Обычный чат

Взаимодействие в стиле askQuestions

Сессия One-by-One

Лучше всего для небольших, быстрых задач, где состояние может оставаться в разговоре.

Лучше всего, когда агенту нужно, чтобы пользователь выбрал из короткого набора опций в текущем ходе.

Лучше всего, когда работа включает несколько результатов или решений, которые должны отслеживаться, возобновляться, переупорядочиваться, блокироваться, вкладываться или утверждаться по одному элементу за раз.

Состояние в основном разговорное и может стать трудным для восстановления после долгой сессии.

Состояние все еще в основном разговорное; инструмент вопросов улучшает качество ввода, но сам по себе не обеспечивает долговечное состояние рабочего процесса.

Состояние сохраняется в .github/obo_sessions/, поэтому другая сессия или другой агент могут чисто возобновить работу с явным статусом элемента и сессии.

Хороший пример: "переименуй эту функцию" или "объясни эту ошибку".

Хороший пример: "возобновить, объединить, заменить или остановить?"

Хороший пример: "просмотри эти 12 результатов один за другим и жди утверждения по каждому".

Главное преимущество: наименьшее трение.

Главное преимущество: более четкие решения пользователя и меньше двусмысленных ответов.

Главное преимущество: долговечное управление очередью, явные блокировщики, вложенные подсессии и детерминированное восстановление по многим элементам.

Пример прогрессии:

  • Обычный чат: агент перечисляет несколько результатов в прозе, и сам разговор становится единственной записью того, что было обработано.

  • askQuestions: агент может попросить чистый выбор из меню, но все еще не имеет постоянной очереди элементов, если не сохраняет ее где-то еще.

  • Сессия OBO: агент начинает с обзора, сохраняет полный список элементов, упорядочивает его намеренно, записывает утверждения, пропуски и блокировщики, и может возобновить работу позже без восстановления сессии из истории чата.

Игрушечный пример: Пять элементов обзора

Предположим, агент просматривает небольшое приложение для списка дел и находит пять элементов в таком порядке обнаружения:

  1. Улучшить неоднозначную метку настроек в UI.

  2. Устранить состояние гонки в задаче фоновой синхронизации.

  3. Добавить регрессионный тест для дублирующихся ID задач.

  4. Добавить отсутствующую проверку ввода в конечной точке создания задачи.

  5. Исправить логирование паролей в обработчике входа.

Обычный чат

Агент:

Я нашел пять проблем в приложении: Проблема 1: Улучшить неоднозначную метку настроек в UI. Проблема 2: Устранить состояние гонки в задаче фоновой синхронизации. Проблема 3: Добавить регрессионный тест для дублирующихся ID задач. Проблема 4: Добавить отсутствующую проверку ввода в конечной точке создания задачи. Проблема 5: Исправить логирование паролей в обработчике входа.

Что вы хотите сделать дальше?

Пользователь:

Сделай 4 и 2 сначала.

Комментарий:

  • Это быстро, но сам чат становится единственной записью последовательности, зависимость между элементами 4 и 3 неявная.

  • Статус других проблем не зафиксирован, и пользователю нужно будет явно просить агента отобразить или поработать над другими проблемами.

  • Если сессия прервана, другому агенту придется восстанавливать состояние из транскрипта.

Чат в стиле askQuestions

Агент:

Я нашел пять проблем. Что нам сделать сначала?

Опции: • 4. Добавить отсутствующую проверку ввода в конечной точке создания задачи • 2. Устранить состояние гонки в задаче фоновой синхронизации • 5. Исправить логирование паролей в обработчике входа • 3. Добавить регрессионный тест для дублирующихся ID задач • 1. Улучшить неоднозначную метку настроек в UI

Пользователь:

4

Агент:

Следующее действие?

Опции: • Продолжить с 2 • Переупорядочить оставшийся список • Остановить

Комментарий:

  • Это дает более чистые выборы пользователя, чем обычный чат, но инструмент все еще не создает долговечный, осознающий зависимости объект рабочего процесса сам по себе.

  • Статус других проблем все еще не зафиксирован, и пользователю нужно будет явно просить агента отобразить или поработать над другими проблемами.

  • Аналогично, если сессия прервана, другому агенту придется восстанавливать состояние из транскрипта.

Сессия One-by-One

Следуя инструкциям промпта агента OBO, агент назначает такую логику упорядочивания:

  • Элемент 4 идет первым, потому что поведение конечной точки создания задачи должно быть стабилизировано до того, как будет написан последующий регрессионный тест.

  • Элемент 2 идет следующим, потому что состояние гонки может влиять на корректность всего потока синхронизации и может потребовать сессии вложенного расследования.

  • Элемент 5 следует за ним, потому что это важное исправление безопасности, но оно не блокирует работу по проверке и конкурентности.

  • Элемент 3 остается позади элемента 4, потому что регрессионный тест должен зафиксировать окончательное поведение проверки, а не предшествовать ему.

Install Server
A
security – no known vulnerabilities
F
license - not found
A
quality - A tier

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/Warnes-Innovations/obo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server