Dokumentation / API
KI-Assistenten (MCP)
Verbinde Claude Code, Cursor, VS Code oder einen anderen KI-Assistenten mit calmo.cloud und lass ihn mit den Odoos, Backups und Servern deines Teams arbeiten.
calmo.cloud betreibt einen MCP-Server. Darüber kann ein KI-Assistent dein Team so verwalten, wie es ein Skript über die REST-API tut. MCP (Model Context Protocol) ist der offene Standard, über den Claude, Cursor, VS Code und viele andere Assistenten externe Werkzeuge aufrufen. Ist der Assistent verbunden, fragst du ihn einfach: „Welche unserer Odoos sind gestoppt?“, „Mach eine Testkopie vom Live-Odoo“ oder „Sichere die Datenbank der Müller GmbH und gib mir den Download-Link“.
Alle Assistenten verbinden sich mit derselben Adresse:
https://calmo.cloud/api/mcp
Du findest sie auch auf der Seite API Tokens im Panel; ein Klick auf die Adresse kopiert sie.
Der MCP-Server gehört zur API, die im Agency-Plan enthalten ist. Siehe Plan.
Was ein Assistent tun kann #
Der Assistent bekommt die Möglichkeiten der REST-API als Werkzeuge, die er aufrufen kann:
| Bereich | Was der Assistent tun kann |
|---|---|
| Odoos | Sie auflisten und ihren Status prüfen, sie anlegen, ändern und löschen, sie starten, stoppen, neu starten und neu deployen, das neueste Odoo-Image abrufen und sehen, ob die Module ihm nachgezogen werden sollten, Kopien zum Testen erstellen und nachsehen, was dein Plan enthält und wie viel davon dein Team nutzt |
| Backups | Backups auflisten, eins erstellen, einen Download-Link holen, ein Backup importieren und eins wiederherstellen sowie deine Backup-Ziele ansehen |
| Abgefangene E-Mails | Die E-Mails lesen, die eine Kopie, eine Vorschau oder eine Agent-Kopie eines Coding-Agents verschickt hat, statt sie zuzustellen, ihre Anhänge ansehen und das Postfach leeren |
| Domains und Monitoring | Hostnamen hinzufügen, ändern und entfernen, ihr DNS prüfen und Verfügbarkeitsmonitore einrichten |
| Code und Addons | Addon-Repositories hinzufügen oder neue private auf GitHub anlegen, sie an ein Odoo anbinden, ihnen Module aus dem Odoo App Store oder einem ZIP hinzufügen, sobald das für dein Team aktiviert ist, und ihre Addons deployen |
| Odoo-Module | Nachsehen, welche Module ein Odoo installiert hat, Module über ihren technischen Namen installieren, aktualisieren und deinstallieren, alle auf einmal aktualisieren und die App-Liste von Odoo aktualisieren |
| Teilen | Ein Odoo mit einem anderen Team teilen, dessen Rolle ändern oder den Zugriff entziehen und Einladungen an dein Team annehmen oder ablehnen |
| Coding-Agents | Coding-Agent-Sitzungen auf einem Odoo starten, in einer Agent-Kopie oder, sobald für dein Team aktiviert, direkt in einem Test-, Demo- oder Kopie-System. Verfolgen, was sie tun, ihnen antworten, auch mit angehängten Dateien wie Screenshots oder Beispieldaten, sie stoppen und das Odoo einer beendeten Sitzung zurückgeben: Eine Agent-Kopie wird gelöscht, ein Odoo, in dem der Agent direkt gearbeitet hat, wird zurückgegeben |
| Server | Server hinzufügen und provisionieren, sie neu starten oder aus- und einschalten und Provisionierungsvorlagen ausführen |
Ein Terminal öffnen oder beliebige Befehle auf deinen Servern ausführen kann der Assistent nicht.
Das Teilen, die Coding-Agents und das Hinzufügen von Modulen werden Team für Team freigeschaltet. Ist eins davon für dein Team noch nicht aktiviert, erfährt der Assistent das oder bekommt das Werkzeug gar nicht erst, und kann es dir sagen.
Token erstellen #
Der Assistent authentifiziert sich mit einem API-Token deines Teams. Owner und Admins erstellen eins auf der Seite API Tokens im Bereich Developer des Panel-Menüs (siehe Authentifizierung). Gib jedem Assistenten ein eigenes Token und benenne es nach ihm, zum Beispiel „Claude Code auf meinem Laptop“, damit du eins entziehen kannst, ohne die anderen zu trennen. Erlaube ihm nur, was er braucht: Ein Token lässt sich auf einzelne Berechtigungen, auf bestimmte Odoos und Server und auf den MCP-Server allein beschränken (siehe Was ein Token darf).
Der Assistent sendet das Token bei jeder Anfrage im Authorization-Header mit:
Authorization: Bearer your-api-token
Wer ein Token hat, hat Zugriff auf dein ganzes Team. Committe es nie in ein Repository und füge es nie in einen Chat ein.
Assistenten verbinden #
Claude Code #
Am schnellsten geht es mit dem calmo.cloud-Plugin. Es richtet die Verbindung ein, fragt einmal nach deinem Token, legt ihn im Schlüsselbund deines Systems ab und bringt Skills mit, zum Beispiel für den Umzug eines bestehenden Odoo:
/plugin marketplace add havmedia/calmo-cloud-plugin
/plugin install calmo@calmo-cloud
Ohne Plugin fügst du den Server im Terminal hinzu:
claude mcp add --transport http calmo https://calmo.cloud/api/mcp \
--header "Authorization: Bearer your-api-token"
Der Server gilt so für das aktuelle Projekt; mit --scope user im Befehl steht er dir in jedem Projekt zur Verfügung. Mit /mcp prüfst du in Claude Code, ob calmo verbunden ist.
Claude-Desktop-App #
Die Claude-Desktop-App erreicht calmo.cloud über die Brücke mcp-remote, die Node.js braucht. Öffne Settings > Developer > Edit Config und trag calmo.cloud in claude_desktop_config.json ein:
{
"mcpServers": {
"calmo": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://calmo.cloud/api/mcp", "--header", "Authorization:${CALMO_AUTH}"],
"env": {
"CALMO_AUTH": "Bearer your-api-token"
}
}
}
}
Starte die App danach neu. Der Header läuft über eine Umgebungsvariable, weil manche Systeme das Argument sonst am Leerzeichen nach Bearer teilen.
Cursor #
Trag calmo.cloud in ~/.cursor/mcp.json ein, um es in allen Projekten zu nutzen, oder in .cursor/mcp.json in einem einzelnen Projekt. Cursor kann das Token aus einer Umgebungsvariablen lesen, dann steht es nicht in der Datei:
{
"mcpServers": {
"calmo": {
"url": "https://calmo.cloud/api/mcp",
"headers": {
"Authorization": "Bearer ${env:CALMO_API_TOKEN}"
}
}
}
}
Danach erscheint calmo.cloud in den MCP-Einstellungen von Cursor.
VS Code #
Trag calmo.cloud in .vscode/mcp.json in einem Workspace ein oder in deine Benutzerkonfiguration, die du mit dem Befehl MCP: Open User Configuration öffnest. VS Code fragt einmal nach dem Token und speichert es für dich:
{
"inputs": [
{
"type": "promptString",
"id": "calmo-token",
"description": "calmo.cloud API token",
"password": true
}
],
"servers": {
"calmo": {
"type": "http",
"url": "https://calmo.cloud/api/mcp",
"headers": {
"Authorization": "Bearer ${input:calmo-token}"
}
}
}
}
Starte den Server aus der Datei heraus oder über MCP: List Servers. Anschließend stehen die Werkzeuge im Agent-Modus von Copilot Chat bereit.
Andere Assistenten #
Jeder Assistent, der entfernte MCP-Server über HTTP unterstützt (auch „Streamable HTTP“ genannt) und bei dem du einen Header setzen kannst, verbindet sich mit derselben Adresse und dem Header oben. Fragt er nach dem Transport, wähle HTTP und nicht SSE. Ein Assistent, der nur lokale Server starten kann, erreicht calmo.cloud über die Brücke mcp-remote, wie die Claude-Desktop-App.
Assistenten, die sich nur per Anmeldung verbinden können, etwa die Web-Apps von Claude und ChatGPT, können sich noch nicht mit calmo.cloud verbinden.
Was der Assistent darf #
Der Assistent handelt als das Team, dem sein Token gehört, mit den Rechten dieses Tokens. Er bekommt nur die Tools angeboten, die die Berechtigungen des Tokens erlauben, und sieht nur die Odoos und Server, auf die das Token beschränkt ist. API-Tokens erstellen, ändern oder entziehen kann er nicht; das geht nur im Panel. Nur Owner und Admins können Tokens erstellen; die Rolle der Person, die dem Assistenten Aufträge gibt, schränkt ihn nicht weiter ein.
- Er sieht die Server, Odoos, Backups und Repositories deines Teams, aber nie etwas, das einem anderen Team gehört.
- Bei einem Odoo, das ein anderes Team mit deinem teilt, gilt deine Rolle auf diesem Odoo: Ein Viewer kann es ansehen, ein Operator kann es zusätzlich starten, stoppen und sichern und so weiter. Siehe Rollen. Ein geteiltes Odoo löschen, seine Backup-Konfiguration ändern und es weiter teilen kann nur das Team, das es hostet.
- Er kann über die calmo.cloud GitHub App neue private Repositories in deinen GitHub-Organisationen anlegen, sobald ein Owner der Organisation die Berechtigung „Repository creation“ der App genehmigt hat, und nur mit einem Token, das Manage repositories hat. Ein Repository auf GitHub löscht er nie. Siehe Neues Repository auf GitHub anlegen.
- Sobald das Hinzufügen von Modulen für dein Team aktiviert ist, kann er Module in ein privates Repository committen, aus dem ein Odoo bereitstellt: kostenlose Apps, die er aus dem Odoo App Store lädt, oder ein ZIP, das du ihm gibst, etwa eine gekaufte App. Das braucht ein Token mit Manage repositories und Manage Odoo services, und nur das Team, das das Odoo hostet, kann es. Apps kaufen kann er nicht: Für eine kostenpflichtige bittet er dich, das ZIP selbst hochzuladen, mit Add Module im Repositories-Tab des Odoos. Selbst weitergeben kann ein Assistent nur sehr kleine Archive, Apps von apps.odoo.com sind aber meist mehrere MB groß. Siehe Module aus dem Odoo App Store oder einem ZIP hinzufügen.
- Er kann den Berechtigungsmodus eines Coding-Agents wählen, wenn er eine Sitzung startet oder während sie läuft, Full access (
fullAccess) eingeschlossen. Mit Vollzugriff pusht der Agent zu GitHub und startet in einem Odoo, in dem er direkt arbeitet, das Odoo neu, aktualisiert Module und führt SQL undodoo shellaus, ohne jemanden zu fragen. Lass den Assistenten diesen Modus nur für eine Aufgabe wählen, der du vertraust. Siehe Vollzugriff. - Er erhält dieselben Daten, die die REST-API liefert. Dazu gehören die Admin-Zugangsdaten eines Odoos, wo dein Team sie sehen darf, und Backup-Download-Links, wenn er danach fragt. Alles, was ein Werkzeug zurückgibt, geht an das Unternehmen, das deinen Assistenten betreibt.
Destruktive Aktionen bestätigen #
Manche Aktionen lassen sich nicht rückgängig machen, nehmen etwas vom Netz oder kosten Geld: etwas löschen, ein Backup über Live-Daten wiederherstellen, Odoo-Module deinstallieren, die Module eines Live-Odoos ändern (es steht still, solange Odoo arbeitet), einen Server ausschalten oder neu starten und einen Server bei deinem Cloud-Anbieter bestellen. Der Assistent kann sie nur ausführen, wenn er in seiner Anfrage den genauen Namen des Ziels wiederholt, zum Beispiel den Namen des Odoos, das er löschen will. calmo.cloud weist ihn an, dich vorher zu fragen. Bei einer Coding-Agent-Sitzung ist das der Name ihres Work-Branches. Das Stoppen einer Sitzung, die direkt in einem Odoo arbeitet, gibt das Odoo zurück, und das Zurückgeben des Odoo einer beendeten Sitzung löscht eine Agent-Kopie oder gibt ein Odoo zurück. Beides verwirft Arbeit, die der Agent nie gepusht hat; lies diese Anfrage also, bevor du zustimmst. Module, die schon in einem Repository liegen, durch die Version aus dem App Store oder einem ZIP zu ersetzen, braucht den Namen des Repositorys, owner/repo; die ersetzten Dateien bleiben in der Historie des Repositorys erhalten.
Die meisten Assistenten lassen dich außerdem jeden Werkzeugaufruf bestätigen, der etwas verändert. Lass das eingeschaltet und lies, was der Assistent vorhat, bevor du zustimmst. Text, den der Assistent aus calmo.cloud liest, etwa die Beschreibung eines Odoos oder die Ausgabe eines Coding-Agents, kann Anweisungen enthalten, die nicht von dir stammen.
Arbeit im Hintergrund #
Starten, Stoppen, erneutes Deployen, das Abrufen eines neueren Odoo-Images, Kopieren, das Installieren, Aktualisieren und Deinstallieren von Modulen, Sichern und Wiederherstellen dauern eine Weile, genau wie im Panel. Der Assistent bekommt eine Antwort, sobald die Arbeit eingereiht ist, und prüft dann den Status, bis sie erledigt ist; denselben Fortschritt siehst du im Panel. Läuft noch etwas, lass es zu Ende laufen, statt den Assistenten zu bitten, es noch einmal zu starten.
Ein Repository zu einem Odoo hinzuzufügen oder seine Addons zu deployen, beginnt damit, dass das Repository auf GitHub gelesen wird. Wie das lief, sieht der Assistent am Repository des Odoo: eingereiht, wird gelesen, abgeschlossen mit der Zahl der gefundenen und zum Deployment eingereihten Addons, oder fehlgeschlagen mit dem Grund, etwa einem Branch, den es nicht gibt, oder dem Rate-Limit von GitHub. Danach verfolgt er, wie jedes Addon als Vorgang „Deploy addon“ kopiert wird. Die Addons in Odoo zu installieren, ist danach ein eigener Schritt. Dasselbe zeigt der Tab Repositories des Odoo (siehe Repository zu einem Dienst hinzufügen). Module aus dem Odoo App Store oder einem ZIP hinzuzufügen, committet sie sofort und antwortet mit dem, was hinzugefügt, ersetzt oder übersprungen wurde; ihr Deployment auf das Odoo läuft danach genauso im Hintergrund.
Ratenbegrenzung #
calmo.cloud begrenzt, wie viele Anfragen ein Team pro Minute senden kann, gezählt über alle seine Tokens und Assistenten. Ein Assistent, der das Limit überschreitet, bekommt die Antwort „Too Many Requests“ und kann eine Minute später weitermachen. Für Kopien, Einladungen zum Teilen und das Hinzufügen von Modulen zu einem Repository gilt dasselbe stündliche Limit wie für die, die über die REST-API entstehen. Module, die direkt in calmo.cloud hinzugefügt werden, zählen ebenfalls zu diesem Limit.
Zugriff entziehen #
Öffne API Tokens im Bereich Developer des Panel-Menüs und klicke neben dem Token des Assistenten auf Revoke. Der Assistent verliert sofort den Zugriff.
Entfernst du calmo.cloud im Assistenten, bleibt das Token gültig. Wenn du einen Assistenten nicht mehr nutzt, entziehe sein Token auch auf calmo.cloud.
Plan #
Der MCP-Server antwortet nur Teams, deren Plan die API enthält, also dem Agency-Plan. Es zählt der Plan des Teams, dem das Token gehört, auch für Odoos, die ein anderes Team mit ihm teilt. Siehe Preise und Abrechnung.
Fehlerbehebung #
| Was du siehst | Was du tun kannst |
|---|---|
401 Unauthorized oder „Unauthenticated.“ |
Das Token wurde entzogen oder ist falsch. Erstelle ein neues API-Token und trag es in die Konfiguration des Assistenten ein. |
403 Forbidden mit „Your … plan does not include the API and command line.“ |
Der Plan deines Teams enthält die API nicht. Die Seite Plan im Team-Menü zeigt, welchen Plan dein Team hat. Manche Assistenten melden hier nur eine fehlgeschlagene Verbindung, prüfe also zuerst den Plan. |
403 Forbidden mit „This API token is not allowed to use the MCP server.“ |
Das Token ist auf die REST-API beschränkt. Klicke daneben auf Edit access und setz unter Accepted by den Haken beim MCP-Server. |
| Der Assistent meldet, dem Token fehle ein Scope, oder ihm fehlen Tools | Die Berechtigungen des Tokens schließen das aus. Klicke neben dem Token auf Edit access und füge die Berechtigung hinzu. |
429 Too Many Requests |
Dein Team hat in kurzer Zeit zu viele Anfragen gesendet. Warte eine Minute und versuch es erneut. |
405 Method Not Allowed oder die Verbindung schlägt sofort fehl |
Der Assistent versucht den älteren SSE-Transport. Wähle HTTP (Streamable HTTP). |
| Der Assistent findet ein Odoo oder einen Server nicht | Es gehört zu einem anderen Team, oder das Token ist auf andere Odoos oder Server beschränkt. Gib dem Assistenten ein Token dieses Teams oder erweitere das Token mit Edit access. |
| Der Assistent sagt, eine Funktion sei für dein Team nicht aktiviert | Das Teilen, die Coding-Agents und das Hinzufügen von Modulen werden Team für Team freigeschaltet. Melde dich bei uns, dann schalten wir sie frei. |
| Der Assistent weigert sich, etwas zu löschen oder wiederherzustellen | Er braucht den genauen Namen des Ziels als Bestätigung. Sag ihm, welches du meinst. |