Zum Hauptinhalt springen

MCP Use Cases

Diese Workflows zeigen, wie ein KI-Agent Copera-MCP-Tools verkettet, um echte Arbeit zu erledigen. Weil der Server zustandslos ist, braucht jedes Board-/Tabellen-/Zeilen-Tool explizite Hex-ObjectIds — die meisten Flows starten daher mit Discovery (list_boardslist_tablesget_table_schema), bevor gelesen oder geschrieben wird.

Jedes Beispiel zeigt die Tool-Aufrufe in Reihenfolge mit den Schlüsselargumenten. Tool-Ergebnisse sind JSON; der Agent liest IDs und Werte aus einem Ergebnis, um den nächsten Aufruf zu füttern.

Board finden und Zeilen lesen

Das häufigste Muster: Board nach Namen finden, Tabelle finden, dann Zeilen lesen.

Board finden
list_boards({ query: "Roadmap" })
// → [{ id: "66ab…b01", name: "Q3 Roadmap", … }]
Tabelle finden
list_tables({ boardId: "66ab…b01", query: "Features" })
// → [{ id: "66ab…t02", name: "Features", columns: [...] }]
Schema lesen, dann die Zeilen
get_table_schema({ boardId: "66ab…b01", tableId: "66ab…t02" })
// → column ids + STATUS/DROPDOWN option ids

list_rows({ boardId: "66ab…b01", tableId: "66ab…t02", sort: "66ab…date:desc" })
// → rows with cell values keyed by columnId
Filtern statt scannen

list_rows ist nicht paginiert und kann groß sein. engt mit query, einem strukturierten filter ({ match, conditions: [{ column_id, operator, value }] }) und sort ein, statt jede Zeile zu lesen.

Status einer Zeile aktualisieren

Zuerst das Schema lesen ist erforderlich, damit Sie die echte columnId und eine gültige Options-ID verwenden.

get_table_schema({ boardId, tableId })
// find the STATUS column id and the "Done" option id

update_row({
boardId,
tableId,
rowId: "66ab…r07",
columns: [{ columnId: "66ab…status", value: "66ab…doneOption" }],
})

Um die Langtext-Beschreibung einer Zeile oder eine RICH-TEXT-Spaltenzelle zu bearbeiten, nutzen Sie set_row_markdownupdate_row berührt keinen Langtext. Markdown-Writes werden in die Queue gestellt (HTTP 202); erneut mit get_row_markdown lesen, um zu bestätigen.

Docs suchen und zusammenfassen

Das relevanteste Dokument zu einem Keyword holen, seinen Body laden und vom Modell zusammenfassen lassen.

Suchen
search_docs({ query: "onboarding checklist", limit: 5 })
// → ranked hits with highlights showing what matched
Inhalt des Top-Hits lesen
get_doc_content({ docId: "66ab…d11" })
// → full markdown body (can be large — only fetch when you need it)
Zusammenfassen

Der Agent fasst das zurückgegebene Markdown in seiner eigenen Antwort zusammen. Zum Browsen statt Suchen nutzen Sie get_docs_tree, um die Hierarchie zu durchlaufen.

Zusammenfassung in ein neues Doc zurückschreiben

Lesen mit Schreiben kombinieren — über den Workspace recherchieren, dann das Ergebnis persistieren.

search({ query: "Q3 launch", types: ["document", "channelMessage"], limit: 20 })
// gather context across docs and chat

create_doc({ title: "Q3 Launch Summary", content: "# Summary\n\n…" })
// → { id: "66ab…d99" }

// append more later (async — re-read to confirm)
set_doc_content({ docId: "66ab…d99", content: "\n\n## Risks\n…", operation: "append" })

Channel-Nachricht posten

Einen Channel benachrichtigen oder einer bestimmten Person eine DM senden. Geben Sie genau eine von channelId oder userId an.

Channel finden (oder den Benutzer)
list_channels({ query: "engineering", type: "text" })
// → [{ id: "66ab…c01", name: "engineering" }]

// or resolve a DM target:
list_workspace_members({ query: "alex@" })
// → [{ id: "66ab…u22", name: "Alex", email: "alex@…" }]
Senden
// post to a channel (synchronous)
send_message({ channelId: "66ab…c01", message: "Deploy is green ✅" })

// or direct-message a user (queued, may not appear immediately)
send_message({ userId: "66ab…u22", message: "Can you review the PR?" })
Absendername-Override

Das optionale name (Display-Name-Override) gilt nur für Channels — bei Direktnachrichten wird es abgelehnt.

Benachrichtigungen triagieren

Inbox lesen, erledigte Items markieren und Rauschen entfernen.

list_notifications()
// → { notifications: [...], unreadCount, count }

update_notification({ notificationId: "66ab…n05", status: "read" })

delete_notification({ notificationId: "66ab…n06" }) // no undo

Paginierung nutzt Notification-ObjectIds als Cursor: übergeben Sie die älteste zurückgegebene ID als after, um durch die Historie zu blättern.

Kommentar an einer Zeile für einen Kunden

Extern sichtbaren Kommentar zu einer Board-Zeile hinzufügen — external bewusst nur verwenden, wenn Personen außerhalb des Workspace es sehen sollen.

list_row_comments({ boardId, tableId, rowId, visibility: "all" })
// review the thread (cursor-paginated via pageInfo.endCursor)

add_row_comment({
boardId,
tableId,
rowId,
content: "We shipped the fix in today's release.",
visibility: "external",
})

View exportieren und im Drive speichern

Tabellen-View in eine Datei rendern. Für PDF/ZIP oder große Exporte bevorzugen Sie saveToDrive: true, damit die Datei im Drive landet statt als Inline-Payload.

// viewId comes from list_tables / get_table_schema
export_table({
boardId,
tableId,
viewId: "66ab…v01",
format: "PDF",
saveToDrive: true,
})
// → async job snapshot + a drive reference

// later, fetch the file
get_drive_download_url({ fileId: "66ab…f44" })
// → presigned CloudFront url (fetch directly, no auth)

Tipps für zuverlässige Agent-Läufe

  • Discover before you write. Rufen Sie get_table_schema auf, um echte columnIds und Options-IDs zu holen, bevor create_row / update_row / set_row_markdown — nicht unterstützte Spaltentypen in create_row werden still ignoriert.
  • Nach async Writes erneut lesen. set_row_markdown, set_doc_content und Direktnachrichten sind eventually consistent.
  • Request-Volumen im Rahmen halten. Die API rate-limited; 429s werden automatisch mit Backoff retryt, aber Agenten mit Fan-out können Limits trotzdem treffen. Suchen und Listen mit query/filter/limit eingrenzen.
  • Scopes beachten. Ein 403 bedeutet fast immer, dass dem Token ein Scope für dieses Tool fehlt — siehe Authentifizierung.

Siehe auch

  • Tool-Referenz — jedes Tool, seine Argumente und die Public-API-Fähigkeit, auf die es mappt.
  • MCP-Client verbinden — Claude, Cursor oder den MCP Inspector verdrahten.
  • API-Referenz — Request-/Response-Schemas der darunterliegenden Endpunkte.