MCP Server

Verbinde Claude, ChatGPT, Cursor, VS Code oder jeden beliebigen MCP-Client direkt mit deinem Workspace.


Das ist der strategische Weg, SOIS zu nutzen: bring deinen eigenen Agenten mit. Dein Sois AI Workspace ist ein vollständiger MCP-Server, sodass der KI-Agent, den du bereits verwendest, sich verbindet und direkt über deine Workspace-Tools nachdenkt. Immer mehr Menschen loggen sich überhaupt nicht mehr in die SOIS-Konsole ein. Sie sagen ihrem eigenen Claude, ChatGPT, Cursor oder Gemini, was sie brauchen, und dieser betreibt SOIS in ihrem Auftrag über MCP. Die Konsole wird zu einem Ort, um Agentenaktivitäten anzusehen und zu verwalten, nicht zum primären Ort, an dem Arbeit erledigt wird.

Jeder Client, der das Model Context Protocol spricht, kann sich verbinden und deine Workspace-Tools nutzen: Kontakte suchen, Aufgaben erstellen, E-Mails senden, Dokumente verwalten und mehr, ohne auch nur eine einzige Integration zu schreiben. Weil dein eigener Agent das Denken übernimmt, gibt SOIS keine KI in deinem Auftrag aus.

Ein Endpunkt. Standardprotokoll. Jedes Tool, das dein Account nutzen darf, steht jedem kompatiblen Client zur Verfügung.


Die eine URL

Dein Workspace stellt einen einzelnen MCP-Endpunkt bereit:

https://<your-workspace>.sois.ai/api/mcp

Der Server identifiziert sich mit deiner Workspace-Marke (zum Beispiel "Acme"), sodass er unter deinem eigenen Namen im Client erscheint. Alles Weitere hängt an dieser einen URL.

Es gibt zwei Wege zur Authentifizierung. OAuth ist der empfohlene Weg und wird von den In-App-Connectors in Claude und ChatGPT genutzt: Du fügst die URL ein, genehmigst einmal und hast kein Token, das du manuell kopieren oder rotieren müsstest. Ein Bearer-Token plus API-Key wird ebenfalls für Skripte, Server und Clients unterstützt, die kein OAuth durchführen.


Option A: OAuth 2.1 (empfohlen, nichts einzufügen)

Moderne MCP-Connectors entdecken und führen die gesamte Anmeldung für dich durch. Du gibst nur die URL an.

1. Füge in deinem Client (zum Beispiel Claude oder ChatGPT) einen benutzerdefinierten Connector hinzu und füge deine MCP-URL ein: https://<your-workspace>.sois.ai/api/mcp

2. Der Client ruft den Endpunkt ohne Token auf und erhält eine 401-Antwort mit einer Discovery-Challenge:

WWW-Authenticate: Bearer resource_metadata="https://<your-workspace>.sois.ai/.well-known/oauth-protected-resource"

3. Der Client liest diese Metadaten, findet den Autorisierungsserver deines Workspaces, registriert sich automatisch (Dynamic Client Registration) und öffnet den Anmelde- und Zustimmungsbildschirm.

4. Du genehmigst die Verbindung in deinem SOIS-Account. Der Client erhält ein Token über PKCE (mit einem rotierenden Refresh-Token) und beginnt zu arbeiten. Es wird nie ein Token manuell kopiert.

Warum das sicher ist. Der Autorisierungsserver ist deine eigene Workspace-Domain, sodass Tokens mandantenspezifisch sind und dein Netzwerk nie verlassen. Die Autorisierung liegt bei dir: Ein gewährtes Token kann nie mehr tun, als du kannst, weil jeder Tool-Aufruf bei der Ausführung auf Berechtigungen geprüft wird. Die Scope-Strings sind absichtlich grob gehalten; die echte Grenze bilden deine nutzerbezogenen Berechtigungen.

Was der Autorisierungsserver anzeigt:

Property Value
Authorization endpoint /oauth/authorize
Token endpoint /oauth/token
Registration endpoint /oauth/register (Dynamic Client Registration)
Grant types authorization_code, refresh_token
PKCE required (S256)
Scopes mcp, mcp:read, mcp:write, offline_access

Normalerweise rufst du diese nicht selbst auf; ein konformer MCP-Client durchläuft den Flow automatisch, sobald er die URL hat.


Option B: Bearer-Token + API-Key (direkt oder serverseitig)

Für Skripte, Server oder jeden Client, der kein OAuth implementiert. Du erzeugst zwei Zugangsdaten und sendest sie bei jeder Anfrage als Header.

1. Öffne Einstellungen > Deinen Agenten verbinden in deinem Sois AI Workspace.

2. Wähle deinen Client (Claude Desktop, Cursor, VS Code oder Generic) und klicke auf Zugangsdaten generieren, um ein Bearer-Token, einen API-Key und ein fertiges Konfigurationssnippet zu erhalten.

3. Füge die Konfiguration in deinen Client ein.

{
  "mcpServers": {
    "sois-workspace": {
      "url": "https://<your-workspace>.sois.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_TOKEN",
        "X-Api-Key": "YOUR_API_KEY"
      }
    }
  }
}

Cursor verwendet dieselbe Struktur in .cursor/mcp.json; VS Code verschachtelt sie unter "mcp": { "servers": { ... } } mit "type": "http".

Header Value Purpose
Authorization Bearer <token> Identity (Sanctum token, 90-day expiry)
X-Api-Key sois_... Budget and usage tracking

Zwei Zugangsdaten, weil Identität und Ausgaben getrennt sind: Ein Token weist nach, wer du bist, der Key steuert und misst Kosten, und jeder für sich ist nutzlos. (OAuth-Tokens tragen ihre Autorisierung anders, daher benötigt ein Connector bei Option A keinen X-Api-Key-Header.)

Erzeuge das Paar programmatisch, wenn du das Onboarding automatisierst:

curl -X POST "https://<your-workspace>.sois.ai/api/mcp/quick-setup" \
  -H "Authorization: Bearer YOUR_EXISTING_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"client": "generic"}'

Discovery-Endpunkte

Ein Client kann alles, was er braucht, aus drei öffentlichen Dokumenten an der Root deines Workspaces erfahren:

Endpoint Purpose
/.well-known/mcp.json Server card: name, version, protocol version, and the OAuth metadata locations
/.well-known/oauth-protected-resource RFC 9728: which authorization server protects this resource
/.well-known/oauth-authorization-server RFC 8414: the authorize, token, and registration endpoints, grants, and PKCE method

Die Server Card meldet authentication.type als oauth2 und verlinkt auf die beiden OAuth-Dokumente, sodass ein Connector weiß, wie er den Flow bei Option A startet.


Protokolldetails

Der Endpunkt spricht Streamable HTTP mit JSON-RPC 2.0 (Spezifikationsversion 2025-06-18).

Sitzungslebenszyklus

Step Request Notes
Initialize POST /api/mcp method initialize Negotiates capabilities; the response carries an Mcp-Session-Id header
List tools POST /api/mcp method tools/list Returns every tool your account is allowed to use
Call a tool POST /api/mcp method tools/call params.name + params.arguments
Keep-alive GET /api/mcp with Mcp-Session-Id Opens an SSE stream for server-to-client messages
Teardown DELETE /api/mcp with Mcp-Session-Id Ends the session

Füge die Mcp-Session-Id aus der Initialize-Antwort in jede spätere Anfrage ein.

Unterstützte Methoden

Method Description
initialize Start a session, negotiate capabilities
ping Health check
tools/list List available tools with schemas
tools/call Execute a tool by name with arguments
notifications/initialized Client confirms initialization (no response)
notifications/cancelled Client cancels a pending request (no response)

Welche Tools sind verfügbar

tools/list gibt alles zurück, was dein Account in Sois AI tun kann, gefiltert nach deinen Berechtigungen:

  • Contacts: search, create, update, summarise
  • Tasks: create, assign, update status, search
  • Calendar: list, create, update events, check availability
  • Documents: search, create, update content
  • Files: browse, upload, download
  • Inbox: read, compose, send
  • Departments and team: list and manage (admin)
  • Installed apps: every tool added by the extensions you have installed (CRM, invoicing, warehouse, custom entities, and so on)

Die genaue Liste hängt von der Rolle des authentifizierten Nutzers und den installierten Apps ab. Tools sind berechtigungsgefiltert und schließen im Fehlerfall, sodass eine Verbindung nie etwas aufrufen kann, das der Nutzer nicht nutzen darf.

Der App Builder läuft über denselben Endpunkt

Es gibt keinen separaten MCP-Server zum Erstellen von Apps. Die Extension-Builder-Tools werden als Teil desselben Workspace-MCP-Servers ausgeliefert und erscheinen in derselben tools/list, mit einer Bedingung: Sie sind admin-gated, sodass sie nur für Accounts mit Builder-Berechtigung sichtbar sind. Wenn dein Account Apps bauen kann, enthält deine Tool-Liste auch:

  • getExtensionRules, getExtensionFrameSpec (what an app must look like)
  • createExtensionProject, listExtensionProjects, getExtensionStatus
  • validateExtensionBundle, uploadExtensionBundle

Apps zu bauen ist also dasselbe wie alles andere: Du verbindest deinen Agenten einmal mit deinem Workspace, und wenn du ein Builder bist, kann er Apps neben dem Betrieb deines Geschäfts scaffolden, validieren und veröffentlichen, alles über den einen /api/mcp-Endpunkt. Siehe Build an app für den Workflow.

(Nicht zu verwechseln mit dem öffentlichen, nur lesbaren Build-Context-Connector, den ein Operator hinzufügen kann, um die Fähigkeiten eines Netzwerks zu bewerben; das ist ein separater, nicht authentifizierter Endpunkt auf der Netzwerkdomain, nicht dein Workspace-MCP-Server.)


Budget, Limits und Fehler

What Value
Rate limit 120 requests/minute
Tool-call cost metered as AI credits
Budget per API key (Option B) or per workspace; you set the cap
Token expiry 90 days (Option B Sanctum token); OAuth tokens refresh automatically

Standard-JSON-RPC-Fehler gelten, plus ein paar spezifische Codes:

Code Meaning
-32001 Unauthorized or session expired (Option A connectors get the OAuth challenge here)
-32002 Insufficient AI credits
-32003 Tool not permitted for this account
-32004 Budget cap reached

Teste deine Verbindung

curl -X POST "https://<your-workspace>.sois.ai/api/mcp/test" \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "X-Api-Key: YOUR_API_KEY"

Gibt zurück, ob die Zugangsdaten funktionieren und wie viele Tools für sie sichtbar sind.


Deinen eigenen Agenten mitzubringen ist der strategische Weg. Der MCP Server lässt deinen eigenen KI-Client direkt über deine SOIS-Tools nachdenken, sodass SOIS keine KI in deinem Auftrag ausgibt. Das Chat Agent Gateway ist der Einstieg für Aufrufer, die keinen Agenten haben: Klartext-Nachrichten über HTTP, bei denen SOISs eigener Agent das Denken übernimmt. Nutze, was zu deinem Aufrufer passt, oder beides.


Möchtest du Sois stattdessen mit externen MCP-Servern verbinden? Siehe das MCP Gateway für ausgehende Verbindungen.