Skip to main content
Glama

Oboe MCP

Strukturierte One-by-One-Workflows für Coding-Agenten.

MCP-Server für dauerhafte One-by-One-Überprüfungs-Workflows mit priorisiertem Sitzungsstatus für Coding-Agenten.

Bietet 16 Werkzeuge zum Erstellen, Navigieren und Abschließen von Elementen in Sitzungsdateien mit Prioritätsbewertung, einschließlich der Handhabung blockierter Elemente, erstklassiger Genehmigungsaktualisierungen und verschachtelter untergeordneter Sitzungen, sodass /obo-Workflows MCP-Operationen anstelle von rohen JSON-Bearbeitungen verwenden können.

Lizenziert unter AGPL-3.0-or-later mit verfügbarer kommerzieller Lizenzierung. Siehe LICENSE für die vollständigen Bedingungen.

PyPI-Paket

Installieren oder führen Sie Oboe MCP direkt von PyPI aus, indem Sie eine dieser Alternativen verwenden:

  • Ohne Installation ausführen: uvx oboe-mcp

  • In Ihrer aktuellen Umgebung installieren: pip install oboe-mcp

Die Installation von oboe-mcp installiert auch den Befehl 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-Referenz (oboe-cli)

Die Installation von oboe-mcp installiert auch oboe-cli, einen benutzerfreundlichen Befehlszeilenbegleiter für dieselben Sitzungsdateien, mit denen die MCP-Werkzeuge arbeiten.

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

Globale Optionen:

Option

Beschreibung

--session SESSION, -s

Sitzungsdateiname (z. B. session_20260411_120000.json) oder absoluter Pfad

--base-dir DIR, -b

Projektstammverzeichnis mit .github/obo_sessions/ (standardmäßig CWD-Erkennung)

Base-dir-Auto-Erkennung: Wenn --base-dir weggelassen wird, verwendet oboe-cli das aktuelle Arbeitsverzeichnis, wenn es einen .github/obo_sessions/-Ordner enthält, andernfalls greift es auf das Arbeitsverzeichnis wie es ist zurück.

Befehle

Befehl

Beschreibung

sessions

Alle Sitzungen auflisten (unterstützt --status active|paused|completed|incomplete)

status

Zusammenfassende Statistiken der Sitzung anzeigen

create

Eine neue Sitzung aus einer JSON-Elementdatei erstellen

merge

Neue Elemente an eine bestehende Sitzung anhängen

complete-session

Die gesamte Sitzung als abgeschlossen markieren

list

Elemente auflisten, sortiert nach Prioritätswert (unterstützt --status-Filter)

next

Das nächste ausführbare Element anzeigen

show ITEM_ID

Vollständige Details für ein Element anzeigen

complete ITEM_ID RESOLUTION...

Ein Element als abgeschlossen markieren

skip ITEM_ID [REASON...]

Ein Element als übersprungen markieren

in-progress ITEM_ID

Ein Element als in Bearbeitung markieren

block ITEM_ID BLOCKER...

Ein Element als blockiert markieren

approve ITEM_ID approved|denied|unreviewed

Genehmigungsmetadaten festlegen

update ITEM_ID FIELD VALUE

Ein einzelnes Feld eines Elements aktualisieren

create-child --child-session FILE

Eine untergeordnete Sitzung erstellen und die übergeordnete pausieren

complete-child [RESOLUTION...]

Eine untergeordnete Sitzung abschließen und die übergeordnete fortsetzen

Schnellstart

# 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"

Hinweis: Das in früheren Versionen mitgelieferte Skript obo_helper.py ist jetzt ein dünner Deprecation-Shim, der an oboe-cli delegiert.

Werkzeug

Beschreibung

obo_create

Sitzungsdatei erstellen + index.json atomar aktualisieren

obo_list_sessions

Sitzungen aus index.json auflisten

obo_session_status

Zusammenfassende Statistiken für eine Sitzung

obo_next

Nächstes Element: zuerst in_progress, dann höchstpriorisiertes ausstehendes, dann zurückgestelltes

obo_list_items

Alle Elemente sortiert nach priority_score desc

obo_get_item

Vollständige Details für ein Element

obo_mark_blocked

Ein Element als blockiert markieren und Blocker-Informationen speichern

obo_mark_complete

Element mit Auflösungstext als abgeschlossen markieren

obo_mark_in_progress

Element als in Bearbeitung markieren

obo_mark_skip

Element als übersprungen markieren

obo_set_approval

Genehmigungsmetadaten und optionalen Lebenszyklusstatus festlegen

obo_complete_session

Eine Sitzung als abgeschlossen markieren, wenn keine ausführbaren Elemente mehr vorhanden sind

obo_create_child_session

Eine untergeordnete Sitzung erstellen, die übergeordnete pausieren und in die untergeordnete eintreten

obo_complete_child_session

Eine untergeordnete Sitzung abschließen und die übergeordnete fortsetzen

obo_merge_items

Neue Elemente an eine bestehende Sitzung anhängen und diese reaktivieren

obo_update_field

Beliebiges Feld aktualisieren; berechnet priority_score automatisch neu

Warum OBO-Sitzungen

One-by-One-Sitzungen sind nicht nur gespeicherte Chat-Notizen. Sie sind ein Workflow-Modell für die Handhabung von Arbeit mit mehreren Elementen als dauerhafte, geordnete Interaktionssitzung.

Im Vergleich zu einfachem Chat oder den integrierten Folgefragen eines Agenten fügt OBO Funktionen hinzu, die diese leichteren Interaktionsmodi normalerweise nicht bieten:

  • einen Workflow, bei dem der Überblick an erster Stelle steht, bei dem der Agent mit dem Umfang, der Elementanzahl, den Hauptkategorien und der vorgeschlagenen Ausführungsreihenfolge beginnen kann

  • explizite Repriorisierung basierend auf Dringlichkeit, Wichtigkeit, Aufwand und Abhängigkeitsdruck anstelle der Reihenfolge, in der sie zufällig im Chat erschienen sind

  • dauerhafte Lebenszyklusstatus durch pending, in_progress, deferred, blocked, completed und skipped

  • separate Genehmigungsmetadaten durch approval_status, approval_mode, approved_at und approval_note

  • gespeicherte Blocker-Metadaten, sodass blockierte Arbeit weiterhin sichtbar und erklärbar ist, anstatt stillschweigend aus der aktiven Warteschlange zu verschwinden

  • verschachtelte untergeordnete Sitzungen, die eine übergeordnete Sitzung pausieren, ein Teilproblem behandeln und dann die übergeordnete Sitzung sauber fortsetzen

  • erstklassiges Sitzungslebenszyklusmanagement: Sitzungen als benannte Workflow-Objekte auflisten, erstellen, inspizieren, zusammenführen, pausieren, fortsetzen und schließen

  • deterministische Wiederherstellung nach Modellneustarts, Editor-Neuladen oder Agentenübergabe

  • einen maschinenlesbaren Audit-Trail in Sitzungsdateien, anstatt sich auf das Konversationsgedächtnis zu verlassen

Dies ist am wichtigsten, wenn die Arbeit viele Erkenntnisse umfasst, explizite Benutzergenehmigungen erfordert, von zwischenzeitlichen Teiluntersuchungen abhängt oder über mehrere Agenten-Turns hinweg bestehen bleiben muss. Chat ist gut für Konversationen. Ein strukturiertes Fragen-Werkzeug ist gut, um im aktuellen Turn eine saubere Antwort zu erhalten. OBO ist für dauerhafte Workflow-Orchestrierung.

Verwenden Sie OBO, wenn Sie eine kontrollierte sequentielle Handhabung, einen dauerhaften Warteschlangenstatus oder verschachtelte Teilaufgaben benötigen. Verwenden Sie einfachen Chat, wenn die Aufgabe klein genug ist, dass ein vollständiges Workflow-Objekt mehr Aufwand als Nutzen bedeuten würde.

Zustandsmodell

OBO verfolgt jedes Element auf zwei unabhängigen Achsen.

Lebenszyklus-Achse

  • pending: Arbeit ist in der Warteschlange, aber noch nicht gestartet

  • in_progress: Arbeit wird derzeit aktiv ausgeführt

  • deferred: Arbeit ist für die spätere Ausführung genehmigt und sollte aus der unmittelbaren Überprüfungswarteschlange herausgehalten werden, bis der aktive Überprüfungsdurchgang erschöpft ist oder der Benutzer explizit zurückgestellte Arbeit anfordert

  • blocked: Arbeit kann nicht fortgesetzt werden, bis eine externe Abhängigkeit oder ein Teilproblem gelöst ist

  • completed: Arbeit ist abgeschlossen und geschlossen

  • skipped: Arbeit wird absichtlich nicht ausgeführt

Genehmigungs-Achse

  • unreviewed: Es wurde noch keine explizite Benutzerentscheidung aufgezeichnet

  • approved: Der Benutzer hat die Arbeit autorisiert

  • denied: Der Benutzer hat die Arbeit explizit abgelehnt

Genehmigungs-Metadatenfelder:

  • approval_status: Genehmigungsentscheidung für das Element

  • approval_mode: immediate oder delayed, wenn eine Entscheidung über den Genehmigungszeitpunkt aufgezeichnet wurde

  • approved_at: Zeitstempel, wann die Genehmigung aufgezeichnet wurde

  • approval_note: optionale Freitextnotiz zur Genehmigungsentscheidung

Übliche Paarungen:

  • Sofortige Genehmigung: rufen Sie obo_set_approval(..., approval_status="approved", approval_mode="immediate") auf; das Element bleibt normalerweise pending, bis die Arbeit beginnt oder auf in_progress verschoben wird

  • Verzögerte Genehmigung: rufen Sie obo_set_approval(..., approval_status="approved", approval_mode="delayed") auf; dies zeichnet die verzögerte Genehmigung auf und verschiebt das Element auf deferred

  • Ablehnen: setzen Sie approval_status=denied; wenn das Element aus der Warteschlange geschlossen wird, paaren Sie es mit status=skipped

Interaktionsmodi

Die drei gängigen Interaktionsmuster sind einfacher Chat, ein strukturiertes Fragen-Werkzeug und eine vollständige OBO-Sitzung. Sie lösen unterschiedliche Probleme.

Standard-Chat

askQuestions-Stil Interaktion

One-by-One-Sitzung

Am besten für kleine, schnelle Hin-und-Her-Aufgaben, bei denen der Status in der Konversation bleiben kann.

Am besten, wenn der Agent möchte, dass der Benutzer im aktuellen Turn aus einer kurzen Reihe von Optionen wählt.

Am besten, wenn die Arbeit mehrere Erkenntnisse oder Entscheidungen umfasst, die verfolgt, fortgesetzt, neu geordnet, blockiert, verschachtelt oder einzeln genehmigt werden müssen.

Der Status ist meist konversationell und kann nach einer langen Sitzung schwer wiederherzustellen sein.

Der Status ist immer noch meist konversationell; das Fragen-Werkzeug verbessert die Eingabequalität, bietet aber von sich aus keinen dauerhaften Workflow-Status.

Der Status wird in .github/obo_sessions/ gespeichert, sodass eine andere Sitzung oder ein anderer Agent sauber mit explizitem Element- und Sitzungsstatus fortfahren kann.

Gutes Beispiel: "benenne diese Funktion um" oder "erkläre diesen Fehler".

Gutes Beispiel: "fortsetzen, zusammenführen, ersetzen oder stoppen?"

Gutes Beispiel: "überprüfe diese 12 Erkenntnisse nacheinander und warte auf die Genehmigung für jede".

Hauptvorteil: geringster Reibungsverlust.

Hauptvorteil: klarere Benutzerentscheidungen und weniger mehrdeutige Antworten.

Hauptvorteil: dauerhafte Warteschlangenverwaltung, explizite Blocker, verschachtelte Teilsitzungen und deterministische Wiederherstellung über viele Elemente hinweg.

Beispielhafter Ablauf:

  • Standard-Chat: Ein Agent listet mehrere Erkenntnisse in Prosa auf und die Konversation selbst wird zum einzigen Protokoll dessen, was behandelt wurde.

  • askQuestions: Der Agent kann nach einer sauberen Menüauswahl fragen, hat aber immer noch keine dauerhafte Element-Warteschlange, es sei denn, er speichert eine an anderer Stelle.

  • OBO-Sitzung: Der Agent beginnt mit einem Überblick, speichert die vollständige Elementliste, ordnet sie absichtlich, zeichnet Genehmigungen, Überspringungen und Blocker auf und kann später fortfahren, ohne die Sitzung aus dem Chatverlauf rekonstruieren zu müssen.

Spielzeugbeispiel: Fünf Überprüfungselemente

Angenommen, ein Agent überprüft eine kleine To-Do-App und findet fünf Elemente in dieser rohen Entdeckungsreihenfolge:

  1. Verbessere ein mehrdeutiges Einstellungslabel in der Benutzeroberfläche.

  2. Löse eine Race Condition im Hintergrund-Synchronisierungsjob.

  3. Füge einen Regressionstest für doppelte Aufgaben-IDs hinzu.

  4. Füge fehlende Eingabevalidierung am Create-Task-Endpunkt hinzu.

  5. Korrigiere die Passwortprotokollierung im Login-Handler.

Standard-Chat

Agent:

Ich habe fünf Probleme in der App gefunden: Problem 1: Verbessere ein mehrdeutiges Einstellungslabel in der Benutzeroberfläche. Problem 2: Löse eine Race Condition im Hintergrund-Synchronisierungsjob. Problem 3: Füge einen Regressionstest für doppelte Aufgaben-IDs hinzu. Problem 4: Füge fehlende Eingabevalidierung am Create-Task-Endpunkt hinzu. Problem 5: Korrigiere die Passwortprotokollierung im Login-Handler.

Was möchtest du als Nächstes tun?

Benutzer:

Mach zuerst 4 und 2.

Kommentar:

  • Dies ist schnell, aber der Chat selbst wird zum einzigen Protokoll der Sequenz, die Abhängigkeit zwischen Element 4 und 3 ist implizit.

  • Der Status der anderen Probleme wird nicht erfasst, und der Benutzer muss explizit anfordern, dass der Agent die anderen Probleme anzeigt oder bearbeitet.

  • Wenn die Sitzung unterbrochen wird, müsste ein anderer Agent den Status aus dem Transkript rekonstruieren.

askQuestions-Stil Chat

Agent:

Ich habe fünf Probleme gefunden. Was sollen wir zuerst tun?

Optionen: • 4. Füge fehlende Eingabevalidierung am Create-Task-Endpunkt hinzu • 2. Löse eine Race Condition im Hintergrund-Synchronisierungsjob • 5. Korrigiere die Passwortprotokollierung im Login-Handler • 3. Füge einen Regressionstest für doppelte Aufgaben-IDs hinzu • 1. Verbessere ein mehrdeutiges Einstellungslabel in der Benutzeroberfläche

Benutzer:

4

Agent:

Nächste Aktion?

Optionen: • Weiter mit 2 • Die verbleibende Liste neu ordnen • Stopp

Kommentar:

  • Dies bietet sauberere Benutzerauswahlen als einfacher Chat, aber das Werkzeug erstellt von sich aus immer noch kein dauerhaftes, abhängigkeitsbewusstes Workflow-Objekt.

  • Der Status der anderen Probleme wird immer noch nicht erfasst, und der Benutzer muss explizit anfordern, dass der Agent die anderen Probleme anzeigt oder bearbeitet.

  • Ebenso müsste ein anderer Agent den Status aus dem Transkript rekonstruieren, wenn die Sitzung unterbrochen wird.

One-by-One-Sitzung

Gemäß den Anweisungen des OBO-Agenten weist der Agent diese Ordnungslogik zu:

  • Element 4 kommt zuerst

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