obo-mcp
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...]Глобальные опции:
Опция | Описание |
| Имя файла сессии (например, |
| Корневой каталог проекта, содержащий |
Автоматическое определение base-dir: если --base-dir не указан, oboe-cli использует текущую рабочую директорию, если она содержит папку .github/obo_sessions/, в противном случае он использует рабочую директорию как есть.
Команды
Команда | Описание |
| Список всех сессий (поддерживает |
| Показать сводную статистику сессии |
| Создать новую сессию из файла элементов JSON |
| Добавить новые элементы в существующую сессию |
| Отметить всю сессию как завершенную |
| Список элементов, отсортированный по приоритету (поддерживает фильтр |
| Показать следующий доступный для выполнения элемент |
| Показать полную информацию об одном элементе |
| Отметить элемент как завершенный |
| Отметить элемент как пропущенный |
| Отметить элемент как находящийся в работе |
| Отметить элемент как заблокированный |
| Установить метаданные утверждения |
| Обновить одно поле элемента |
| Создать дочернюю сессию и приостановить родительскую |
| Завершить дочернюю сессию и возобновить родительскую |
Быстрый старт
# 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.
Инструмент | Описание |
| Создание файла сессии + атомарное обновление index.json |
| Список сессий из index.json |
| Сводная статистика по сессии |
| Следующий элемент: сначала in_progress, затем самый приоритетный ожидающий, затем отложенный |
| Все элементы, отсортированные по priority_score desc |
| Полная информация об одном элементе |
| Отметить элемент как заблокированный и сохранить информацию о блокировщике |
| Отметить элемент как завершенный с текстом решения |
| Отметить элемент как находящийся в работе |
| Отметить элемент как пропущенный |
| Установить метаданные утверждения и опциональное состояние жизненного цикла |
| Отметить сессию как завершенную, когда не осталось активных элементов |
| Создать дочернюю сессию, приостановить родительскую и перейти в дочернюю |
| Завершить дочернюю сессию и возобновить родительскую |
| Добавить новые элементы в существующую сессию и активировать ее снова |
| Обновить любое поле; автоматически пересчитывает 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 |
Лучше всего для небольших, быстрых задач, где состояние может оставаться в разговоре. | Лучше всего, когда агенту нужно, чтобы пользователь выбрал из короткого набора опций в текущем ходе. | Лучше всего, когда работа включает несколько результатов или решений, которые должны отслеживаться, возобновляться, переупорядочиваться, блокироваться, вкладываться или утверждаться по одному элементу за раз. |
Состояние в основном разговорное и может стать трудным для восстановления после долгой сессии. | Состояние все еще в основном разговорное; инструмент вопросов улучшает качество ввода, но сам по себе не обеспечивает долговечное состояние рабочего процесса. | Состояние сохраняется в |
Хороший пример: "переименуй эту функцию" или "объясни эту ошибку". | Хороший пример: "возобновить, объединить, заменить или остановить?" | Хороший пример: "просмотри эти 12 результатов один за другим и жди утверждения по каждому". |
Главное преимущество: наименьшее трение. | Главное преимущество: более четкие решения пользователя и меньше двусмысленных ответов. | Главное преимущество: долговечное управление очередью, явные блокировщики, вложенные подсессии и детерминированное восстановление по многим элементам. |
Пример прогрессии:
Обычный чат: агент перечисляет несколько результатов в прозе, и сам разговор становится единственной записью того, что было обработано.
askQuestions: агент может попросить чистый выбор из меню, но все еще не имеет постоянной очереди элементов, если не сохраняет ее где-то еще.
Сессия OBO: агент начинает с обзора, сохраняет полный список элементов, упорядочивает его намеренно, записывает утверждения, пропуски и блокировщики, и может возобновить работу позже без восстановления сессии из истории чата.
Игрушечный пример: Пять элементов обзора
Предположим, агент просматривает небольшое приложение для списка дел и находит пять элементов в таком порядке обнаружения:
Улучшить неоднозначную метку настроек в UI.
Устранить состояние гонки в задаче фоновой синхронизации.
Добавить регрессионный тест для дублирующихся ID задач.
Добавить отсутствующую проверку ввода в конечной точке создания задачи.
Исправить логирование паролей в обработчике входа.
Обычный чат
Агент:
Я нашел пять проблем в приложении: Проблема 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, потому что регрессионный тест должен зафиксировать окончательное поведение проверки, а не предшествовать ему.
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