obo-mcp
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-mcpIn 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 --helpCLI-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 |
| Sitzungsdateiname (z. B. |
| Projektstammverzeichnis mit |
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 |
| Alle Sitzungen auflisten (unterstützt |
| Zusammenfassende Statistiken der Sitzung anzeigen |
| Eine neue Sitzung aus einer JSON-Elementdatei erstellen |
| Neue Elemente an eine bestehende Sitzung anhängen |
| Die gesamte Sitzung als abgeschlossen markieren |
| Elemente auflisten, sortiert nach Prioritätswert (unterstützt |
| Das nächste ausführbare Element anzeigen |
| Vollständige Details für ein Element anzeigen |
| Ein Element als abgeschlossen markieren |
| Ein Element als übersprungen markieren |
| Ein Element als in Bearbeitung markieren |
| Ein Element als blockiert markieren |
| Genehmigungsmetadaten festlegen |
| Ein einzelnes Feld eines Elements aktualisieren |
| Eine untergeordnete Sitzung erstellen und die übergeordnete pausieren |
| 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.pyist jetzt ein dünner Deprecation-Shim, der anoboe-clidelegiert.
Werkzeug | Beschreibung |
| Sitzungsdatei erstellen + index.json atomar aktualisieren |
| Sitzungen aus index.json auflisten |
| Zusammenfassende Statistiken für eine Sitzung |
| Nächstes Element: zuerst in_progress, dann höchstpriorisiertes ausstehendes, dann zurückgestelltes |
| Alle Elemente sortiert nach priority_score desc |
| Vollständige Details für ein Element |
| Ein Element als blockiert markieren und Blocker-Informationen speichern |
| Element mit Auflösungstext als abgeschlossen markieren |
| Element als in Bearbeitung markieren |
| Element als übersprungen markieren |
| Genehmigungsmetadaten und optionalen Lebenszyklusstatus festlegen |
| Eine Sitzung als abgeschlossen markieren, wenn keine ausführbaren Elemente mehr vorhanden sind |
| Eine untergeordnete Sitzung erstellen, die übergeordnete pausieren und in die untergeordnete eintreten |
| Eine untergeordnete Sitzung abschließen und die übergeordnete fortsetzen |
| Neue Elemente an eine bestehende Sitzung anhängen und diese reaktivieren |
| 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,completedundskippedseparate Genehmigungsmetadaten durch
approval_status,approval_mode,approved_atundapproval_notegespeicherte 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 gestartetin_progress: Arbeit wird derzeit aktiv ausgeführtdeferred: 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 anfordertblocked: Arbeit kann nicht fortgesetzt werden, bis eine externe Abhängigkeit oder ein Teilproblem gelöst istcompleted: Arbeit ist abgeschlossen und geschlossenskipped: Arbeit wird absichtlich nicht ausgeführt
Genehmigungs-Achse
unreviewed: Es wurde noch keine explizite Benutzerentscheidung aufgezeichnetapproved: Der Benutzer hat die Arbeit autorisiertdenied: Der Benutzer hat die Arbeit explizit abgelehnt
Genehmigungs-Metadatenfelder:
approval_status: Genehmigungsentscheidung für das Elementapproval_mode:immediateoderdelayed, wenn eine Entscheidung über den Genehmigungszeitpunkt aufgezeichnet wurdeapproved_at: Zeitstempel, wann die Genehmigung aufgezeichnet wurdeapproval_note: optionale Freitextnotiz zur Genehmigungsentscheidung
Übliche Paarungen:
Sofortige Genehmigung: rufen Sie
obo_set_approval(..., approval_status="approved", approval_mode="immediate")auf; das Element bleibt normalerweisepending, bis die Arbeit beginnt oder aufin_progressverschoben wirdVerzö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 aufdeferredAblehnen: setzen Sie
approval_status=denied; wenn das Element aus der Warteschlange geschlossen wird, paaren Sie es mitstatus=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 |
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:
Verbessere ein mehrdeutiges Einstellungslabel in der Benutzeroberfläche.
Löse eine Race Condition im Hintergrund-Synchronisierungsjob.
Füge einen Regressionstest für doppelte Aufgaben-IDs hinzu.
Füge fehlende Eingabevalidierung am Create-Task-Endpunkt hinzu.
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
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