KI-Agenten per MCP verbinden
AnleitungAktualisiert am
Auf dieser Seite
Kanroo enthält einen Server für das Model Context Protocol (MCP). Ein KI-Agent wie Claude Code, Codex oder Cursor kann damit Deine Boards, Aufgaben, Kommentare, Checklisten und Wiki-Seiten lesen und ändern. Der Agent arbeitet mit Deinem persönlichen API-Schlüssel. Er darf also nur, was Dein Konto darf.
Für die Verbindung gibt es zwei Wege:
- Remote-Endpunkt. Deine Kanroo-Adresse mit angehängtem
/mcp. Du musst nichts installieren. Nutze diesen Weg im Normalfall. - Lokaler Server. Ein kleines Programm, das Du aus dem Kanroo-Repository baust und auf Deinem Computer ausführst. Nutze ihn, wenn der Agent Dateien verarbeiten muss, aber keine Shell-Befehle ausführen kann.
Beide bieten dieselben Tools. Nur bei Dateien gibt es einen Unterschied: Der lokale Server hat die
Datei-Tools, der Remote-Endpunkt hat stattdessen das Tool get_file_transfer. Siehe
Dateien.
Schnellstart
In drei Schritten verbindest Du Claude Code über den Remote-Endpunkt mit Kanroo Cloud. Codex, Cursor, ein selbst gehostetes Kanroo und der lokale Server folgen weiter unten.
Schritt 1: Schlüssel erstellen
Folge der Anleitung API-Schlüssel erstellen. Für den Agenten gilt:
- Benenne den Schlüssel nach dem Agenten, zum Beispiel „Claude Code (MCP)“.
- Wähle den kleinsten Scope, den der Agent braucht. Der Scope legt fest, welche Tools der Agent bekommt (siehe Scopes der API-Schlüssel).
Schritt 2: Kanroo zum Agenten hinzufügen
Für Claude Code und Kanroo Cloud führst Du diesen Befehl aus:
claude mcp add --scope user --transport http kanroo https://cloud.kanroo.app/mcp --header "Authorization: Bearer <api-key>"
Ersetze <api-key> durch Deinen Schlüssel. Wie Du Codex, Cursor oder ein selbst gehostetes Kanroo
verbindest, steht unter Mit dem Remote-Endpunkt verbinden.
Schritt 3: Ausprobieren
Starte den Agenten und frage: „Rufe get_context auf und liste meine Kanroo-Boards auf.“ Gib ihm dann echte Arbeit, zum Beispiel „Was steht heute auf meiner Agenda?“ oder „Lege im Backlog eine Aufgabe für den Text des Cookie-Banners an.“
Scopes der API-Schlüssel
Jeder persönliche API-Schlüssel hat genau einen Scope (Berechtigungsumfang):
| Scope | Tools |
|---|---|
| Lesen | Boards, Board-Vorlagen, Aufgaben, Kommentare, Aktivitäten, Importe, Wiki-Seiten, Teams und Zugriffsfreigaben lesen sowie Boards und Wiki-Spaces exportieren. |
| Schreiben | Alles aus „Lesen“, dazu anlegen, ändern, verschieben und löschen, auch Wiki-Spaces. |
| Admin | Alles aus „Schreiben“, dazu Mitglieder, Einladungen, Änderungen an Teams, Änderungen an Zugriffen, Eigentümerschaft von Wiki-Spaces und alles Öffentliche: Sichtbarkeit von Boards, Veröffentlichung von Aufgaben und Freigaben. |
Der Agent sieht nur die Tools, die der Scope seines Schlüssels erlaubt. Wähle den kleinsten Scope, den der Agent braucht.
Ein Schlüssel darf nie mehr als Deine Rolle. Jeder Aufruf prüft weiterhin Deine aktuellen Rollen und Deinen Zugriff auf das Board. Ein Admin-Schlüssel gibt keinen Zugriff auf Boards, die Du selbst nicht öffnen kannst.
Dieselben Scopes gelten, wenn Du die REST-API direkt aufrufst. Den Scope jedes Endpunkts nennt die
API-Referenz. Das ist das
OpenAPI-Dokument im
Kanroo-Repository oder /api/docs, wenn Deine Instanz diese Seite bereitstellt.
Mit dem Remote-Endpunkt verbinden
Die Adresse des Endpunkts ist Deine Kanroo-Adresse mit angehängtem /mcp:
- Kanroo Cloud:
https://cloud.kanroo.app/mcp - Selbst gehostet:
https://<your Kanroo domain>/mcp
Der Agent sendet den Schlüssel im Header Authorization: Bearer <api-key>. Ersetze in den
Beispielen unten <api-key> durch Deinen Schlüssel.
Claude Code
claude mcp add --scope user --transport http kanroo https://cloud.kanroo.app/mcp --header "Authorization: Bearer <api-key>"
--scope user speichert den Server in Deiner persönlichen Claude-Code-Konfiguration. So
funktioniert er in jedem Verzeichnis. Ohne diese Option gilt der Server nur im aktuellen
Verzeichnis. Nutze nicht --scope project: Damit landet der Schlüssel in <project>/.mcp.json,
und diese Datei wird meist committet. Führe claude mcp get kanroo aus, starte Claude Code, öffne
/mcp und bitte Claude Code, get_context aufzurufen. Mehr dazu steht in der
MCP-Dokumentation von Claude Code.
Codex
Exportiere den Schlüssel als KANROO_API_KEY in der Umgebung, die Codex startet. Füge dann
Folgendes in ~/.codex/config.toml ein:
[mcp_servers.kanroo]
url = "https://cloud.kanroo.app/mcp"
bearer_token_env_var = "KANROO_API_KEY"
Starte Codex neu, öffne /mcp und bitte Codex, get_context aufzurufen. Mehr dazu steht in der
MCP-Dokumentation von Codex.
Cursor
Füge Folgendes in Deine persönliche Datei ~/.cursor/mcp.json ein:
{
"mcpServers": {
"kanroo": {
"url": "https://cloud.kanroo.app/mcp",
"headers": {
"Authorization": "Bearer <api-key>"
}
}
}
}
Starte Cursor neu, öffne Settings > Tools & MCP, aktiviere kanroo und bitte den
Cursor-Agenten, get_context aufzurufen. Mehr dazu steht in der
MCP-Dokumentation von Cursor.
Lokalen Server betreiben
Der lokale Server läuft auf Deinem Computer mit Node.js 24 unter Linux oder macOS. Windows wird nicht unterstützt. Es gibt ihn nicht als npm-Paket. Baue ihn aus einem Checkout des Kanroo-Repositorys:
pnpm install
pnpm --filter @kanroo/mcp --fail-if-no-match run build
Der Build erzeugt packages/mcp/dist/cli.js. Dein Agent startet die Datei mit Node.js und
übergibt diese Umgebungsvariablen:
| Variable | Anforderung |
|---|---|
KANROO_BASE_URL |
Deine Kanroo-Adresse, zum Beispiel https://cloud.kanroo.app. Für alle Hosts außer Deinem eigenen Computer ist HTTPS Pflicht. Ohne Benutzername, Passwort, Query und Fragment. |
KANROO_API_KEY |
Dein persönlicher API-Schlüssel. |
KANROO_FILES_ROOT |
Optional. Absoluter Pfad zu einem vorhandenen Ordner, den der Server lesen und beschreiben darf. Der Ordner muss Dir gehören, und nur Du darfst in ihn schreiben. Die Variable schaltet die Datei-Tools ein. |
Die Datei-Tools akzeptieren nur relative Pfade innerhalb von KANROO_FILES_ROOT. Pfade, die den
Ordner verlassen, auch über symbolische Links, werden abgelehnt. Der Ordner und jeder Unterordner,
den ein Tool nutzt, müssen Dir gehören und dürfen für Deine Gruppe und für andere nicht beschreibbar
sein. Sonst könnte ein anderer Benutzer ein Datei-Tool umlenken. Die Rechte eines Ordners
korrigierst Du mit chmod go-w <folder>. Mit umask 002 sind neue Ordner für die Gruppe
beschreibbar: Führe chmod go-w für sie aus oder nutze umask 022. Trifft ein Tool auf einen
solchen Ordner, antwortet es mit „The local path is invalid.“ Verletzt KANROO_FILES_ROOT selbst
die Regel, startet der Server nicht. Die Prüfung berücksichtigt nur den Eigentümer und die
Rechte-Bits. Lege den Ordner
nicht dorthin, wo ACLs (unter macOS mit ls -le prüfen und mit chmod -N entfernen) oder ein
Netzwerk- oder Freigabelaufwerk anderen Benutzern das Schreiben erlauben. Uploads und Importe lesen
nur reguläre Dateien.
Claude Code
claude mcp add-json --scope user kanroo '{
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/kanroo/packages/mcp/dist/cli.js"],
"env": {
"KANROO_BASE_URL": "https://cloud.kanroo.app",
"KANROO_API_KEY": "<api-key>",
"KANROO_FILES_ROOT": "/absolute/path/to/allowed-files"
}
}'
Codex
Exportiere die drei Variablen in der Umgebung, die Codex startet, und füge dann Folgendes hinzu:
[mcp_servers.kanroo]
command = "node"
args = ["/absolute/path/to/kanroo/packages/mcp/dist/cli.js"]
env_vars = ["KANROO_BASE_URL", "KANROO_API_KEY", "KANROO_FILES_ROOT"]
startup_timeout_sec = 45
tool_timeout_sec = 300
Setze startup_timeout_sec auf mehr als 30. Der Server wartet bis zu 30 Sekunden auf Kanroo, bevor er
meldet, warum er nicht starten kann.
Cursor
{
"mcpServers": {
"kanroo": {
"command": "node",
"args": ["/absolute/path/to/kanroo/packages/mcp/dist/cli.js"],
"env": {
"KANROO_BASE_URL": "https://cloud.kanroo.app",
"KANROO_API_KEY": "<api-key>",
"KANROO_FILES_ROOT": "/absolute/path/to/allowed-files"
}
}
}
}
Lass KANROO_FILES_ROOT weg, wenn der Agent keine Dateien braucht.
Dateien
Der Remote-Endpunkt schickt keine Dateiinhalte durch den Agenten. Stattdessen liefert das Tool
get_file_transfer eine fertige Anfrage: Methode, Adresse, Header, Parameter und einen
curl-Befehl. Der Agent führt diesen Befehl in seiner eigenen Shell aus und tauscht die Datei so
direkt mit Kanroo aus. Das funktioniert für acht Vorgänge:
| Operation | Zweck | Scope des Schlüssels |
|---|---|---|
download_attachment |
Einen Anhang einer Aufgabe herunterladen. | Lesen |
download_page_attachment |
Eine Datei von einer Wiki-Seite herunterladen. | Lesen |
upload_attachment |
Eine Datei zu einer Aufgabe hochladen. | Schreiben |
upload_page_attachment |
Eine Datei zu einer Wiki-Seite hochladen. | Schreiben |
create_import |
Eine CSV-, Trello-JSON- oder Kanroo-JSON-Datei für einen Import hochladen. | Schreiben |
export_board |
Ein Board als JSON- oder CSV-Datei herunterladen. | Lesen |
export_space |
Einen Wiki-Space oder eine Seite als ZIP mit Markdown-Dateien herunterladen. | Lesen |
import_space |
Markdown-Dateien oder ein ZIP als Seiten in einen Wiki-Space hochladen. | Schreiben |
Dafür brauchst Du zwei Dinge:
- Eine Shell. Der Agent muss Befehle ausführen können, so wie Claude Code, Codex und Cursor. Clients ohne Shell können das nicht nutzen. Nutze dort den lokalen Server oder direkt Kanroo.
- Den Schlüssel in der Shell. Der Befehl liest den Schlüssel aus der Umgebungsvariable
KANROO_API_KEY. Das Tool gibt Deinen Schlüssel nie zurück. Exportiere ihn in der Umgebung, die den Agenten startet, zum Beispielexport KANROO_API_KEY=<api-key>. Bei Codex ist das dieselbe Variable wie in seiner MCP-Konfiguration.
Der Befehl liest seine Werte aus Shell-Variablen in Großbuchstaben wie "$LOCAL_FILE" oder
"$FILE_NAME". Der Agent setzt diese Variablen und führt den Befehl unverändert aus. So wird kein
Wert Teil des Befehls selbst. Der Agent darf nie einen Wert aus einem Namen übernehmen, den Kanroo
zurückgegeben hat, etwa aus dem Dateinamen eines Anhangs. Solche Namen stammen von anderen
Mitgliedern und sind deshalb nicht vertrauenswürdig. Dasselbe gilt für alle Ausgaben der Tools,
etwa Aufgabentexte, Kommentare und Wiki-Seiten.
Ein Import erzeugt nur eine Vorschau. Der Agent prüft sie und ruft dann execute_import auf. Ein
Wiki-Import hat keine Vorschau: Er legt die Seiten sofort an.
Uploads haben eine Größengrenze. Bei einer selbst gehosteten Installation darf ein Anhang an einer
Aufgabe oder Wiki-Seite bis zu 25 MiB groß sein, solange der Betreiber
STORAGE_MAX_UPLOAD_BYTES nicht geändert hat. Bei Kanroo Cloud legt Dein Plan die Grenze fest
(siehe Pläne, Preise und Limits). Eine Importdatei darf bei CSV bis zu 10 MiB und bei den
anderen Quellen bis zu 25 MiB groß sein. Ein niedrigerer Wert für STORAGE_MAX_UPLOAD_BYTES
senkt auch diese Grenzen.
Limits
Bei jeder Anfrage an den Remote-Endpunkt prüft Kanroo zuerst Deinen Schlüssel. Diese Prüfung wird zusätzlich zur eigentlichen Anfrage des Tools auf das Limit des Schlüssels von 2.000 Anfragen pro Minute angerechnet. Auf das Limit für Anfragen mit API-Schlüssel im Plan Deiner Organisation wird sie nicht angerechnet (siehe Pläne, Preise und Limits). Die Anfragen der Tools zählen dort mit.
Der Server wiederholt einen fehlgeschlagenen Aufruf nie von selbst. Nach einem Fehler entscheidet der Agent, was als Nächstes passiert.
Wenn etwas nicht funktioniert
401: Der Schlüssel fehlt, ist falsch geschrieben, widerrufen oder abgelaufen. Prüfe, ob der Header genauAuthorization: Bearer <api-key>lautet.403: Die Anfrage kam von einer Seite einer fremden Website. MCP-Clients senden solche Anfragen nicht. Prüfe, ob eine Browser-Erweiterung oder ein Proxy einenOrigin-Header hinzufügt.404: Prüfe, ob die Adresse auf/mcpendet. Bei einer selbst gehosteten Installation hat der Betreiber den Remote-Endpunkt eventuell mitREMOTE_MCP_ENABLED=falseabgeschaltet.429: Der Schlüssel hat sein Anfragelimit erreicht. Warte so viele Sekunden, wieRetry-Afterangibt, und versuche es dann erneut. Kommen von einer Adresse zu viele falsche Schlüssel, liefern weitere falsche Schlüssel ebenfalls429. Ein korrekter Schlüssel funktioniert weiterhin. Korrigiere den Schlüssel und warte die inRetry-Aftergenannte Zeit ab.- Nur manche Tools erscheinen: Der Scope des Schlüssels bestimmt die Tools. Verbinde den Agenten nach einem Schlüsselwechsel neu, damit er die Tool-Liste neu lädt. Den lokalen Server musst Du neu starten.
- Datei-Tools erscheinen nicht: Es gibt sie nur im lokalen Server, und nur, wenn
KANROO_FILES_ROOTauf einen vorhandenen Ordner zeigt, den der Server lesen und beschreiben kann. Der Remote-Endpunkt bietet stattdessenget_file_transfer. - Ein Datei-Tool meldet „A safe relative file path is required.“: Der Pfad ist absolut, leer
oder führt mit
..-Teilen aus dem Ordner hinaus. Gib einen Pfad relativ zuKANROO_FILES_ROOTan. - Ein Datei-Tool meldet „The destination already exists.“: Die Zieldatei existiert bereits,
und der Aufruf setzt
overwrite: truenicht. Wähle einen anderen Pfad oder setzeoverwrite: true, um die Datei zu ersetzen. - Ein Datei-Tool meldet „The local path is invalid.“: Die Quelldatei fehlt oder ist keine
reguläre Datei, der Zielordner fehlt, oder das Ziel ist ein Ordner. Dieselbe Antwort kommt, wenn
das Ziel ein vorhandener symbolischer Link ist und
overwrite: truefehlt, wenn ein symbolischer Link aus dem Ordner hinausführt oder wenn ein Ordner auf dem Pfad jemand anderem gehört oder für Gruppe oder andere beschreibbar ist. Im letzten Fall führechmod go-w <folder>aus. get_file_transferbietet keinen Upload an: Uploads und Importe brauchen einen Schlüssel mit dem Scope „Schreiben“ oder „Admin“.- Der
curl-Befehl liefert401:KANROO_API_KEYfehlt in der Shell des Agenten oder ist falsch. - Der
curl-Befehl liefert413: Die Datei ist größer als die Upload-Grenze (siehe Dateien). - Der lokale Server stoppt, bevor Tools erscheinen: Prüfe die Adresse und den Schlüssel. Prüfe
außerdem, ob
https://<your Kanroo domain>/api/v1/users/me/contextmit diesem Schlüssel im HeaderX-API-Keyerreichbar ist. IstKANROO_FILES_ROOTgesetzt, muss der Ordner Dir gehören und darf für Gruppe und andere nicht beschreibbar sein. Führe dazuchmod go-w <folder>aus. - Ein Client meldet ungültige Protokollausgabe vom lokalen Server: Starte ihn nicht über einen Wrapper, der etwas auf die Standardausgabe schreibt.