Remote MCP (Claude.ai Browser & Co)
Du willst Claude im Browser — oder jeden anderen MCP-fähigen Client — direkt auf deine Brains zugreifen lassen: lesen, suchen, schreiben. Ohne SSH-Konfig, ohne lokalen Agent, ohne dass du die Tool-Calls selbst in den Chat kopierst.
Dafür gibt's den Remote-MCP-Endpoint /api/mcp — HTTPS, Bearer-Token,
stateless. Claude.ai's Custom Connectors (Beta) sprechen genau dieses
Protokoll.
Unterschied zur stdio-Variante: stdio-MCP (per SSH +
gts-mcp-Binary) ist für Agenten auf der gleichen Maschine oder über SSH erreichbare Server — Claude Desktop, Claude Code, OpenClaw. Der Remote-MCP-Endpoint ist für alles, was über HTTPS kommen muss — Browser, Webhooks, Dritt-Clients.
Was ist verfügbar
Dieselben Tools wie der stdio-MCP:
| Tool | Was es macht |
|---|---|
instance_info |
Gibt Typ + Slug der verbundenen Instanz zurück |
brain_list |
Listet Brains (mit Filter nach Kategorie / Tag) |
brain_read |
Liest ein Brain komplett (Frontmatter + Body) |
brain_search |
Volltext-Suche über alle sichtbaren Brains |
brain_history |
Git-Commits für ein Brain |
brain_write |
Erstellt oder updatet ein Brain (schema-validiert, atomic-committed) |
brain_capture |
Quick-Capture in die Inbox |
Schreibende Tools haben dieselben Guards wie im Web-UI: Schema-Validierung, Write-Lock, Autor = der Admin der den Token besitzt.
Setup in Claude.ai (Browser)
1. Token generieren (einmalig)
Im GTS: Einstellungen → Remote MCP (Claude.ai) → Neuen Token generieren.
Der Token wird genau einmal angezeigt. Kopieren (Passwort-Manager!), weil wir ihn danach nur noch als Hash haben.
2. Custom Connector anlegen
In Claude.ai (muss Pro/Team/Enterprise sein):
- Settings → Connectors → Custom Connector (Beta)
- Name: beliebig, z.B.
Mein Brain - Remote MCP Server URL: deine Instance-URL plus
/api/mcp, z.B.https://gu-brain.kuble.com/api/mcp - Erweiterte Einstellungen → Authentifizierung: Bearer Token
- Token einfügen → Hinzufügen
3. Im Chat nutzen
Neuer Chat → Tool-Picker öffnen → brain_*-Tools anhaken. Dann einfach
fragen:
„Welche Projekte sind bei Kunde Axa aktiv?" — Claude ruft
brain_search, dannbrain_readfür Treffer, zitiert zurück.„Leg ein neues Projekt-Brain „nori-v4" für Kuble an mit Status active und Budget 120k." — Claude ruft
brain_write, Commit landet in deinem Git.
Setup für andere MCP-Clients
Der Endpoint ist Streamable-HTTP-MCP, stateless. Jeder Client der diese
Spec spricht funktioniert. Beispiel: Cursor, Continue, dein
eigenes Python-Script mit dem @modelcontextprotocol/sdk.
Für einen Test-Request aus der Shell:
TOKEN="gts_…"
URL="https://gu-brain.kuble.com/api/mcp"
# Tool-Liste abfragen
curl -s -X POST "$URL" \
-H "authorization: Bearer $TOKEN" \
-H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' \
| jq
Token-Management
- Mehrere Tokens pro Admin erlaubt — du kannst z.B. einen Token pro Client (Claude.ai, Cursor, Test-Script) generieren und gezielt widerrufen.
- Widerrufen: in den Settings auf „Widerrufen" klicken — der Token ist ab sofort blockiert, Client bekommt 401.
- Verlust: Token vergessen / Gerät verloren → widerrufen + neu generieren. Alte Tokens kannst du nie wieder einsehen (nur Hash in DB).
- Audit: jeder
tools/callüber Remote-MCP landet im Audit-Log unter/history→ Sourcemcp.
Sicherheits-Notizen
- Token-Format:
gts_<64 hex>, 32 Byte Entropie. Intern als HMAC-SHA256(GTS_AUTH_SECRET, token) gespeichert. - Nur Admin-Scope: ein Remote-MCP-Token wirkt mit den Rechten des
Admins, der ihn erstellt hat. Auf Admin-Kategorie-Brains greift der
übliche
allowed_connections-Check (entspricht stdio-MCP). - CORS:
/api/mcpgibt nurAccess-Control-Allow-Origin: https://claude.aifrei. Andere Browser-Clients müssen die gleiche Origin haben oder der Check wird server-seitig umgangen (curl/Python ignoriert CORS). - Transport: ausschließlich HTTPS in Produktion. Lokal (Docker auf
localhost:3100) ist HTTP ok, Claude.ai erreicht dann aber deinen Laptop nicht — braucht public URL (Hetzner + Traefik, siehe Self-Hosting).
Fehlerbilder
401 UNAUTHORIZED → Token falsch, abgelaufen oder widerrufen. Neu generieren.
CORS-Fehler im Browser
→ Nur Claude.ai (https://claude.ai) ist whitelisted. Andere Origins
musst du manuell in /api/mcp/route.ts ergänzen.
Tools erscheinen nicht im Claude-Chat → Connector ist ggf. nicht aktiviert für den Workspace. In Claude.ai den Connector manuell einschalten und neuen Chat starten.
brain_write kommt mit Schema-Fehler zurück
→ Dieselben Regeln wie im Web-UI: type + date Pflicht für source,
customer Pflicht für projekt, etc. Schema-Referenz in
SCHEMAS.md.
Was nicht geht (noch)
- OAuth: aktuell nur Bearer-Token. Für öffentliche Multi-User-Szenarien (fremde User sollen sich via OAuth ihr eigenes Brain verbinden können) bräuchte es einen OAuth-Flow. Heute: ein Admin → ein/viele Tokens.
- Session-State / Streaming-Tools: der Endpoint ist stateless. Langlaufende
Tool-Calls mit Progress-Events werden nicht gestreamt, sondern
synchron bis Abschluss gehalten. Für kurze Reads + Writes reicht das;
bei sehr grossen
brain_search-Ergebnissen kann's einen Timeout geben.