MCP-Tool- & Sheet-Referenz
Serveroberfläche
Die gehostete Version 0.4 stellt über https://app.confbuild.com/mcp 20 Tools, einen wiederverwendbaren Prompt, einen Skill-Katalogeintrag für Plugin-Import-Scans und 28 Ressourcen bereit. Der Katalog installiert den Skill nicht bei einer direkten MCP-Verbindung; confbuild-mcp-agent wird mit dem confBuild-Plugin gebündelt. Der Transport ist Streamable HTTP mit OAuth/PKCE. Strukturierte Ergebnisse erscheinen als MCP-Text und structuredContent, Screenshots zusätzlich als native Bildblöcke. Der lokale STDIO-Transport stellt dieselbe fachliche Oberfläche für Entwickler bereit.
Der wiederverwendbare Prompt heißt confbuild-design. Er weist den Client an, zuerst confbuild_start_design_session aufzurufen und den kompletten Erstellen-/Bearbeiten-/Render-Loop durchzuführen.
Der Server kündigt io.modelcontextprotocol/skills an. skills/list und skills/get liefern den vollständigen Skill samt Ressourcenmanifest und SHA-256-Digests; resources/read liefert jede deklarierte Datei. Nach aktueller OpenAI-Spezifikation verwendet Scan Tools diese Oberfläche für einen statischen Plugin-Import – nicht als Laufzeit-Installation im verbundenen Client. Direkte MCP-Verbindungen verwenden den Prompt confbuild-design als kompatiblen Einstieg.
Tools nach Phase
Orientierung und Prompts
| Tool | Zweck | Schreibend |
|---|---|---|
confbuild_start_design_session |
Verpflichtender erster Aufruf; erkennt Profil, löst optional das Ziel auf und liefert das Prompt-Bundle | Nein |
confbuild_get_prompt_bundle |
Ruft ein Prompt-Bundle unabhängig von einer Design-Session ab | Nein |
confbuild_list_prompt_resources |
Listet Prompt-Ressourcen mit URI, Größe, MIME-Typ und SHA-256 | Nein |
Wichtige Eingaben für confbuild_start_design_session:
{
"request": "Vollständige Nutzeranfrage",
"projectReference": "optionale ID oder URL",
"client": "codex",
"model": "exakte öffentliche Modell-ID, falls bekannt",
"profile": "machine",
"promptDetail": "essential",
"knownBundleHashes": ["sha256 eines bereits vorliegenden Bundles"]
}
Der Client klassifiziert die Domäne selbst und übergibt ein explizites profile (building, machine, 3dprint, generic); auto löst nur einen Keyword-Fallback für Clients aus, die nicht klassifizieren können. knownBundleHashes ist optional: Enthält es die zurückgegebene bundleSha256, kommt das Bundle ohne seinen Text zurück (bundleTextOmitted: true) — das entfernt den größten wiederholten Payload aus Folgesessions.
Zugriff und Projekte
| Tool | Zweck | Schreibend |
|---|---|---|
confbuild_auth_status |
Prüft die OAuth-gebundene confBuild-Identität, ohne Token offenzulegen | Nein |
confbuild_resolve_project_reference |
Löst eine ID oder URL als eigenes privates oder öffentliches Projekt auf | Nein |
confbuild_create_project |
Erstellt ein privates Projekt, optional bereits mit Sheets | Ja |
confbuild_clone_project |
Kopiert ein öffentliches/schreibgeschütztes Projekt privat | Ja |
confbuild_read_project |
Liest Metadaten und hydratisierte Sheets, optional gefiltert | Nein |
confbuild_create_project und confbuild_clone_project unterstützen einen idempotencyKey. Derselbe Schlüssel im selben Nutzerkonto führt bei Wiederholung zur selben deterministischen Projekt-ID.
model ist optional. Der Client soll nur seine exakte öffentliche Modell-ID melden und das Feld sonst weglassen; der Server rät kein Modell. designSessionId soll an Erstellen, Klonen und Begin Edit weitergegeben werden.
Der Wert request in confbuild_start_design_session wird unverändert in der admin-only MCP-Historie gespeichert. Clients sollen dort ausschließlich den eigentlichen Nutzerauftrag übergeben, kein internes Reasoning, keine Screenshot-Analyse und keine Zugangsdaten. Nach erfolgreichen Commits speichert der Server zusätzlich den jeweils neuesten Sheet-Stand; Zwischen-Patches werden nicht als Historieneintrag archiviert.
Unabhängig davon führt der Server eine inhaltsfreie Usage-Statistik: Tool, Zeit, Nutzer-/Client-ID, optional gemeldetes Modell beim Start, Status/Fehlercode, Dauer, Bytes, Sheet-/Zeilen-/Zellmengen, Commits, Projekt- und Renderaktivität. Prompttexte, Zellwerte, Bilder und Reasoning werden nicht in diese Statistik kopiert. KI-Token des MCP-Clients sind für den Server technisch nicht sichtbar.
MCP-erstellte und -bearbeitete Projekte erhalten unter metadata.agentMcp eine kompakte Herkunftsmarkierung: erstellt/bearbeitet, Zeitpunkte/Zähler, Client/Tool, optional gemeldetes Modell, Profil und MCP-Clientname/-version. Der Admin-Bereich zeigt diese Felder in „MCP History“ und „Recent user work“; die Markierung enthält keine Prompts, Sheet-Werte, Screenshots, Antworten oder Reasoning-Inhalte.
confbuild_read_project kann Kontext begrenzen:
{
"reference": "PROJEKT_ID",
"sheetNames": ["Main Part", "Frame"],
"maxRowsPerSheet": 500
}
Wenn truncated: true zurückgegeben wird, darf ein Client das betroffene Sheet nicht vollständig ersetzen, bevor er es ohne Begrenzung gelesen hat.
Editieren und Speichern
| Tool | Zweck | Schreibend |
|---|---|---|
confbuild_begin_edit |
Lädt das vollständige Workbook und seine Basisrevision in eine temporäre Edit-Session | Nur bei automatischem Klonen |
confbuild_apply_sheet_patch |
Wendet bis zu 1.000 Operationen auf die Session-Arbeitskopie an; noch kein Projekt-Commit | Nur Sessionzustand |
confbuild_read_edit_workbook |
Liest die aktuelle Session-Arbeitskopie, optional nach Sheet-Namen | Nein |
confbuild_validate_edit |
Prüft Struktur, Marker, IDs, Serialisierung, Größenlimits, Engine-Fallen-Lint und Konfigurations-Shadowing | Nein |
confbuild_commit_edit |
Speichert atomar mit optimistischem Revisionsschutz und legt einen Pre-Commit-Rollback-Snapshot an | Ja |
confbuild_discard_edit |
Verwirft die temporäre Edit-Session; Commits bleiben erhalten | Session destruktiv |
confbuild_list_project_snapshots |
Listet die Rollback-Snapshots eines eigenen Projekts, neueste zuerst | Nein |
confbuild_restore_project_snapshot |
Committet einen gespeicherten Snapshot als neue Revision; der Vorzustand wird zuerst gesichert | Ja |
confbuild_create_project, confbuild_clone_project und confbuild_begin_edit sollten immer die von confbuild_start_design_session erhaltene designSessionId bekommen. Dadurch bleiben Attribution, Nutzerauftrag und committed Sheets auch bei mehreren parallelen Agenten eindeutig derselben Historie zugeordnet.
confbuild_commit_edit kann zusätzlich Projektfelder ändern:
{
"editSessionId": "edit-…",
"mutationId": "stable-client-mutation-42",
"projectPatch": {
"name": "Portalfräse 800",
"projectType": "machine-component",
"description": "Parametrische Portalfräse",
"metadata": { "source": "mcp-client" }
}
}
Jeder Commit sichert das Workbook vor der Änderung als Rollback-Snapshot (preCommitSnapshotId im Ergebnis); "snapshot": false schaltet das ab. Die Aufbewahrung behält die neuesten Snapshots pro Projekt und räumt ältere automatisch auf. Ein Restore committet den Snapshot als reguläre neue Revision — er ist damit selbst rückgängig machbar und umgeht nie den Revisionsschutz.
Browser und visueller Loop
| Tool | Zweck | Schreibend |
|---|---|---|
confbuild_browser_capabilities |
Meldet im Remote-Modus den privaten Browser-Tab-Kanal; lokal zusätzlich Playwright/CDP | Nein |
confbuild_render_project |
Startet einen asynchronen Renderjob für ID/URL oder Edit-Session | Nein |
confbuild_get_render_result |
Liefert Jobstatus, Diagnosen und optional bis zu vier PNGs | Nein |
confbuild_get_render_result unterstützt includeImages: false, wenn zunächst nur Status oder Diagnosen benötigt werden. maxImages liegt zwischen 1 und 4.
waitMs (0–30.000) macht aus dem Poll einen serverseitigen Long-Poll: Der Aufruf wartet, bis der Job fertig ist oder die Wartezeit abläuft, statt den Client zu schnellem Polling zu zwingen. Solange ein gehosteter Job unbeansprucht ist, meldet die Antwort, wie lange er schon wartet, und nach wenigen Sekunden einen expliziten Hinweis, dass kein angemeldeter Editor-Tab mit dem Zielprojekt geöffnet ist.
Fertige Ergebnisse enthalten zwei zusätzliche Evidenzblöcke:
diagnostics.geometry: ein näherungsweises Geometrie-Audit mit BVH-bestätigten Kollisionspaaren, AABB-verdächtigen Überlappungen, losgelösten Teilen ohne Kontakt, Ausreißern und Modellgrenzen. Die Funde sind Hinweise, keine Urteile; sie entsprechen den Defektkategorien des Model-Loops und werden vom Client an den Ansichten verifiziert.iterationDelta: Mesh-/Output-/Kollisions-/Ablösungs-/Bounds-Deltas gegen den vorherigen abgeschlossenen Render desselben Projekts — „hat mein Patch überhaupt etwas geändert“ braucht keinen Bildvergleich mehr.
Abschluss
| Tool | Zweck |
|---|---|
confbuild_finish_design_session |
Schließt Design-/Edit-Zustand nach finaler Bildprüfung und gibt die Projekt-URL zurück |
Der Abschluss schlägt fehl, wenn die Edit-Session noch ungespeicherte Änderungen enthält oder der angegebene finale Renderjob nicht abgeschlossen ist.
Der Finish-Aufruf akzeptiert ein strukturiertes, inhaltsfreies Ergebnis: completionState (complete/partial/blocked), iterationsUsed sowie fixedDefectCategories/residualDefectCategories aus dem Defekt-Enum des Model-Loops. Gespeichert werden nur diese Enums und Zähler für Qualitätstrends; die Freitext-summary geht an den Client zurück und wird nie persistiert.
Workbook-Format
Eine Arbeitsmappe ist ein Array von Sheet-Objekten:
[
{
"name": "Main Part",
"visible": true,
"data": [
["INPUTID", "TYP", "VALUE", "VALIDATED", "UNIT", "LABEL", "VISIBLE", "MIN", "MAX", "PARAMS", "ONCLICK", "ONCHANGE"],
["width", "slider", 1000, true, "mm", "Breite", true, 500, 2000, "", "", ""],
["OUTPUTID"],
["#", "type", "width", "height", "depth", "material", "x", "y", "z", "rx", "ry", "rz"],
["body", "cube", "=C2", 600, 400, "#8C30F5", 0, 0, 0, 0, 0, 0]
]
}
]
Die vollständigen Spalten und Geometrieregeln kommen aus dem Prompt-Bundle. Das Schema-Ressource confbuild://schema/workbook beschreibt das kompakte MCP-Format.
Patch-Operationen
| Operation | Erforderliche Felder | Wirkung |
|---|---|---|
replace_workbook |
sheets |
Ersetzt alle Sheets |
upsert_sheet |
sheet |
Fügt ein Sheet anhand seines Namens hinzu oder ersetzt es |
delete_sheet |
sheetName oder sheetIndex |
Entfernt ein Sheet |
rename_sheet |
Sheet-Adresse, newName |
Benennt ein Sheet eindeutig um |
set_sheet_visibility |
Sheet-Adresse, visible |
Blendet ein Sheet ein oder aus |
set_cells |
Sheet-Adresse, cells |
Setzt einzelne Zellen per A1 oder Zeile/Spalte |
replace_rows |
Sheet-Adresse, startRow, rows |
Ersetzt so viele Zeilen, wie übergeben wurden |
insert_rows |
Sheet-Adresse, startRow, rows |
Fügt Zeilen vor der Startposition ein |
delete_rows |
Sheet-Adresse, startRow, count |
Entfernt Zeilen |
Indizierung
sheetIndexist nullbasiert.row, numerischecolumn,startRowund A1-Adressen sind einsbasiert.- Spalten können als Zahl oder Buchstaben angegeben werden.
Zellen setzen
{
"editSessionId": "edit-…",
"operations": [
{
"op": "set_cells",
"sheetName": "Main Part",
"cells": [
{ "a1": "C2", "value": 1200 },
{ "row": 2, "column": "F", "value": "Breite" }
]
}
]
}
Sheet hinzufügen oder ersetzen
{
"op": "upsert_sheet",
"sheet": {
"name": "Frame",
"visible": true,
"data": [["INPUTID"], ["OUTPUTID"]]
}
}
Validierung
Eine Validierung liefert valid, errors, warnings und Statistiken. Harte Fehler umfassen beispielsweise:
- leere Arbeitsmappe;
- leere oder doppelte Sheet-Namen;
- Zeilen, die keine Arrays sind;
- nicht serialisierbare Werte oder nicht endliche Zahlen;
- mehr als 2.000.000 Zellen.
Warnungen umfassen unter anderem einen fehlenden INPUTID-Header, fehlenden OUTPUTID-Marker oder doppelte Output-IDs. Ein deterministisches Engine-Fallen-Lint markiert zusätzlich Fehler, die sonst erst als falscher Render sichtbar würden: eine nackte Zellreferenz wie D4 statt =D4 (NAKED_CELL_REFERENCE), Text in Zahlspalten, den die Engine stumm zu 0 macht (NON_NUMERIC_VALUE), zwei aufeinanderfolgende #-Header, von denen nur der letzte wirkt (CONSECUTIVE_HEADER_ROWS), Datenzellen jenseits des Headers (ROW_WIDER_THAN_HEADER) und Output-Zeilen ohne Header (MISSING_OBJECT_HEADER). VALUE_SHADOWED_BY_CONFIGMODEL warnt, wenn ein gespeicherter Konfigurationsstand eine gepatchte VALUE-Zelle überdeckt — der Render zeigt dann den gespeicherten Wert, nicht den Patch. Ein Workbook kann trotz Warnungen formal gespeichert werden; der Client muss sie fachlich bewerten.
Persistenz und große Sheets
Kleine Workbooks werden inline im Projekt gespeichert. Ab ungefähr 700 KB serialisierter Sheet-Daten verwendet der Server automatisch generationsspezifische Chunks von ungefähr 240 KB. Manifest und neue Chunks werden atomar geschrieben; alte Projekt-Sheet-Chunks werden danach bereinigt.
Der Client muss diese Speicherung nicht selbst verwalten. Beim Lesen hydratisiert der Server beide Varianten in dasselbe Workbook-Format.
Zustandsdauer
| Zustand | Lebensdauer |
|---|---|
| Design-Session | 6 Stunden |
| Edit-Session | 6 Stunden, bei Zugriff verlängert (mindestens 5,5 Stunden ab dem letzten Zugriff) |
| Renderjob | 24 Stunden |
| Render-Iterationsbasis (pro Projekt) | 7 Tage |
| Rollback-Snapshots | Neueste pro Projekt, ältere werden beim Commit aufgeräumt |
| Committetes Projekt | Dauerhaft in confBuild/Firebase |
Im Remote-Modus werden Design-, Edit- und Renderzustände UID-getrennt und komprimiert in privatem Cloud Storage gespeichert. Dadurch überstehen sie zustandslose Function-Instanzen; nach Ablauf werden sie ungültig. Der lokale STDIO-Modus hält temporäre Zustände nur im Prozessspeicher. Commitete Projekte bleiben in beiden Modi dauerhaft erhalten.