claude.ai uses the full OAuth Authorization Code flow, not client_credentials.
Flow: GET /authorize → auto-approve → redirect with code → POST /token
with code + code_verifier (PKCE S256).
Also fixes OAuth metadata URLs to use correct external scheme/host/prefix
via X-Forwarded-Proto, Host, and X-Forwarded-Prefix headers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Creates email drafts via IMAP APPEND to the Drafts folder.
Supports Stefan (1blu, Drafts folder) and Kati (Gmail, Entwürfe).
Draft can be reviewed and sent from Roundcube or phone.
IMAP credentials externalized to config.json.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full CRUD for oCIS files:
- write_file: text or base64 binary content
- create_folder: MKCOL
- delete_file: DELETE (files and folders)
- move_file: MOVE (rename or relocate)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
PDF, docx, xlsx, pptx etc. are returned as EmbeddedResource with
BlobResourceContents (base64 + mimeType). claude.ai processes these
client-side, same as Google Drive/Dropbox MCP connectors.
Fallback chain: text → image → embedded resource (binary).
MIME type guessed from extension when server returns octet-stream.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Files:
- read_file returns images inline (jpg/png/gif/webp up to 10MB)
- Text files returned as text, binary files as metadata only
Contacts:
- get_contact includes contact photo as inline image if available
- New tool: set_contact_photo (base64 jpeg/png → VCard PHOTO)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- travel_minutes: shows as gray block before event on iPhone
- location geocoding via Nominatim → X-APPLE-STRUCTURED-LOCATION with geo coords
- reminder_minutes: VALARM trigger before event
- Also externalized all credentials to config.json
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Self-hosted MCP servers with OAuth client_credentials auth.
Each server connects to a different backend:
- Mail: reads Maildir IMAP backups
- Calendar/Tasks: CalDAV against Radicale
- Contacts: CardDAV against Radicale
- Files: WebDAV against oCIS
- Notes: Joplin REST API
Credentials externalized to config.json (not in repo).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>