oase-mcp
Officialoase-mcp
Ein MCP-Server, der es Claude ermöglicht, in einer Oase zu chatten. Gib Claude einen Einladungslink, und er kann in den Gruppenchat dieser oase posten, Beiträge (opslag) im Feed der oase veröffentlichen, die Konversation lesen und reagieren – praktisch für Statusupdates, „Ich habe X erledigt“ oder um eine Notiz zu hinterlassen, wo du sie siehst.
Es ist ein REST-Client: Jedes Tool ist ein einfacher HTTP-Request/Response-Aufruf.
📖 Dokumentation: https://dev.oase.app/mcp/
Status / Haftungsausschluss
Dies ist experimentell und wird wie besehen bereitgestellt. Es basiert auf der internen API von Oase, die sich ohne Vorankündigung ändern kann – daher kann es jederzeit kaputtgehen, sich ändern oder eingestellt werden, und es gibt keine Garantie, dass es heute funktioniert oder morgen weiter funktioniert. Es gibt keine Support-Zusage: Issues sind willkommen (siehe SUPPORT.md), bleiben aber möglicherweise unbeantwortet. Wenn du einen unterstützten Integrationsweg benötigst, nutze stattdessen die Identity- & SCIM-Integration.
Es spricht genau wie die App mit dem Produktions-Backend von Oase (api.oase.app): Anmelden → über Einladungslink beitreten → den oase-Schlüssel vom KMS abrufen → AES-256-GCM-Verschlüsselung → POST .../messaging/messages. Nachrichten werden clientseitig mit dem symmetrischen AES-256-GCM-Schlüssel der oase verschlüsselt (über einen mainframe-signierten Nachweis vom KMS abgerufen), sodass sie in der App normal dargestellt werden.
Related MCP server: WAHA WhatsApp MCP Server
Architektur
Die Codebasis ist ein passiver REST-Client mit einem darauf aufsetzenden MCP-Server:
Passiver REST-Client –
src/client/. Alles, was weiß, wie man über HTTP mit Oase spricht: Promise-Login/Auth (promiseLogin.ts), Token-Aktualisierung und die gemeinsame Konfigurationsdatei (config.ts) sowie der vollständige REST-Client (oaseClient.ts) – Beitritt über Einladungslink, KMS-Schlüsselabruf, AES-256-GCM-Ver-/Entschlüsselung und Senden/Lesen von Nachrichten und Feed-Beiträgen, Reaktionen und Medien. Kein Agentenverhalten, keine MCP-Abhängigkeit: Es tut nur dann etwas, wenn es aufgerufen wird. Von anderen Konsumenten über die Paketwurzel oderoase-mcp/clientimportierbar (import { OaseClient, loadConfig } from "oase-mcp"), ohne die MCP-Ebene einzubinden.MCP-Server –
src/mcp/. Die MCP-Tool-Oberfläche über dem REST-Client (server.ts). Jedes Tool ist ein On-Demand-Request/Response-Wrapper. Einstiegspunkt:dist/index.js(claude mcp add oase -- node /path/to/dist/index.js).
So funktioniert es
Identität. Claude meldet sich über einen einmaligen Browser-Login als dauerhafter Promise-Benutzer an (dem Identitätsanbieter, den die Oase-App verwendet) – siehe Anmelden. Der resultierende langlebige Oase-Refresh-Token wird in
~/.oase-mcp/config.json(Modus 0600) gespeichert; kurzlebige Access-Tokens werden im Speicher gehalten und automatisch aktualisiert.Verschlüsselung. Oase verschlüsselt Nachrichteninhalte mit einem pro oase symmetrischen AES-256-GCM-Schlüssel, der vom Backend treuhänderisch verwahrt wird. Jeder Teilnehmer kann den rohen oase-Schlüssel über einen mainframe-signierten Nachweis vom KMS abrufen, sodass Ver- und Entschlüsselung unkompliziert sind – keine Geräteschlüsselpaare oder Registrierung. Wir erzeugen genau die Cipher-Bundle-Form, die die App erwartet.
Keine Nachricht wird im Klartext gesendet – der Send-Endpunkt erfordert ein Cipher-Bundle.
Einrichtung
npm install
npm run buildRegistriere es bei Claude Code (verwende den absoluten Pfad zu diesem Checkout):
claude mcp add oase -- node /path/to/oase-mcp/dist/index.jsOder füge es manuell zu deiner MCP-Client-Konfiguration hinzu:
{
"mcpServers": {
"oase": {
"command": "node",
"args": ["/path/to/oase-mcp/dist/index.js"]
}
}
}Anmelden
Claude meldet sich als dauerhafter Promise-Benutzer an – eine einmalige Einrichtung:
Rufe
promise_login_startauf – es gibt eine URL zurück. Öffne sie in einem Browser (inkognito ist am sichersten, damit eine bestehende Promise-Sitzung nicht wiederverwendet wird).Melde dich beim Promise-Konto für Claude an (oder erstelle es). Die Seite zeigt „Token captured“ an.
Rufe
promise_login_finishauf – es tauscht den Token gegen eine dauerhafte Oase-Identität.
Im Hintergrund hostet der Server einen localhost-OIDC-Callback und erfasst das einmalige id_token aus der Weiterleitung – kein Kopieren und Einfügen. (Wenn du bereits ein id_token hast, nimmt login_with_promise es direkt entgegen.)
Der Austausch gibt Oases eigenen langlebigen Refresh-Token zurück (gebunden an die person_id von Promise), sodass Promise nie wieder kontaktiert wird – es werden keine Promise-Anmeldedaten gespeichert, sondern nur der resultierende Oase-Refresh-Token.
Eine Anmeldung ist erforderlich: Jedes andere Tool (join, send, read, ask) verweigert die Ausführung, bis eine Promise-Identität eingerichtet ist.
Tools
Tool | Argumente | Was es tut |
| — | Startet den einmaligen Browser-Login für eine dauerhafte Promise-Identität; gibt eine zu öffnende URL zurück. |
| — | Schließt den Promise-Login nach der Anmeldung im Browser ab. |
|
| Tauscht ein Promise- |
|
| Tritt einer oase über einen Einladungslink bei ( |
|
| Postet eine Markdown-Nachricht. Mit |
|
| Bearbeitet den Text einer von dir gesendeten Nachricht (nur eigene). Anhänge bleiben erhalten; nur der Text ändert sich. |
|
| Löscht eine Nachricht (Soft Delete). Eigene oder, wenn du Admin/Inhaber einer oase bist, auch fremde. |
|
| Veröffentlicht einen Beitrag (opslag) im Feed/Pinnwand der oase – die Einträge auf der Startseite in der App, getrennt vom Chat. Markdown-Text, optionaler Titel (wird als Überschrift angezeigt). Kommentare zum Beitrag sind Thread-Antworten: |
|
| Bearbeitet den Text eines Feed-Beitrags (und optional den Titel; |
|
| Löscht einen Feed-Beitrag. Eigene oder, wenn du Admin/Inhaber einer oase bist, auch fremde. |
|
| Liest aktuelle Feed-Beiträge (entschlüsselt), älteste zuerst, jede Zeile mit vorangestellter Post-ID und gekennzeichnet als |
|
| Fügt einer Nachricht eine Emoji-Reaktion hinzu (eine pro Teilnehmer und Nachricht). |
|
| Lädt einen Nachrichtenanhang herunter und entschlüsselt ihn (Bild, Sprachnachricht / Soundbite, Datei). Bilder werden inline zurückgegeben, sodass der Agent sie ansehen und analysieren kann; jeder Anhang wird zusätzlich in einer lokalen temporären Datei gespeichert, deren Pfad zurückgegeben wird (z. B. zum Transkribieren von Audio). |
|
| Liest aktuelle Nachrichten (entschlüsselt), älteste zuerst, jede Zeile mit vorangestellter Nachrichten-ID und gekennzeichnet als |
| — | Zeigt Claudes Oase-Identität und beigetretene oasen an. |
|
| Ändert den Anzeigenamen, unter dem Claude postet. |
Threads und Antworten
Threads in Oase haben nur eine Ebene: Jede Antwort auf eine Nachricht lebt unter der Ressourcen-ID dieser Nachricht (chat_id <oaseId>/m/<messageId>), und du kannst nicht auf eine Antwort antworten – ein verschachtelter Thread würde in der App nie angezeigt. Der Server erzwingt dies: Eine thread_id, die auf eine Antwort verweist, wird automatisch auf die Root-Nachricht des Threads aufgelöst, sodass nichts jemals in einem unsichtbaren verschachtelten Chat landet. Um auf eine Nachricht zu antworten, übergib ihre ID als thread_id an send_message; nutze read_messages, um den Kontext nachzulesen und die IDs zu erhalten.
Anhänge (Bilder, Sprachnachrichten, Dateien)
Nachrichten mit Anhängen zeigen diese als [attachment <n>: <mime> "<name>"]-Tags in jedem Leseergebnis (eine Sprachnachricht ist einfach ein audio/*-Anhang, meist audio/mp4). read_media lädt den Blob herunter und entschlüsselt ihn bei modernen Uploads: Die App lädt Medien als verschlüsselten .oase-Container hoch — [4-byte length][metadata JSON {alg, kid, oaseId, ivBase64}] [ciphertext][16-byte GCM tag] — verschlüsselt mit demselben beim Server hinterlegten oase-Schlüssel wie für Text, während der ursprüngliche Dateiname und MIME-Typ als Cipher-Bundles am Medienobjekt mitgeführt werden (Legacy-Anhänge sind Klartext-Blobs hinter signierten CDN-URLs und werden unverändert durchgereicht; giphy-Anhänge werden über ihr verschlüsseltes giphy-Objekt aufgelöst).
Was der Agent zurückbekommt:
Bilder (jpeg/png/gif/webp bis 3 MB) werden inline als MCP-Bildinhalt zurückgegeben, sodass der Agent sie direkt ansehen und das Gesehene in seiner Antwort verwenden kann
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables Claude to read and send WhatsApp messages, including media and call history, via a local bridge.MIT
- AlicenseAqualityCmaintenanceEnables Claude to interact with WhatsApp through a unified backend API, providing 20 tools for messaging, media, groups, contacts, and chat management.22107MIT
- FlicenseNot gradedqualityCmaintenanceConnects Claude to OpenNMS, allowing plain language interaction with alarms, nodes, events, asset records, categories, and service collection.1
- AlicenseAqualityDmaintenanceConnects Claude to Open WebUI, enabling chat management, RAG knowledge bases, files, functions, and prompts directly from Claude.26252MIT
Related MCP Connectors
Publish pages straight from Claude as private, branded, tracked links.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/oase-app/oase-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server