Commit Graph

7 Commits

Author SHA1 Message Date
Stefan Lohmaier 7f0b03606a Add OAuth Authorization Code flow with PKCE for claude.ai
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>
2026-06-12 08:48:34 +02:00
Stefan Lohmaier 1f98695821 Add create_draft tool to Mail server
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>
2026-06-12 08:16:53 +02:00
Stefan Lohmaier 5190e8c849 Add write_file, create_folder, delete_file, move_file to Files server
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>
2026-06-12 08:08:08 +02:00
Stefan Lohmaier b88adc4c50 read_file: pass binary documents as EmbeddedResource
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>
2026-06-12 08:02:32 +02:00
Stefan Lohmaier a9359beead Add image support to Files and contact photos to Contacts
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>
2026-06-12 07:53:55 +02:00
Stefan Lohmaier 924366ac6c Add travel time, geocoding, and reminders to create_event
- 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>
2026-06-12 07:28:00 +02:00
Stefan Lohmaier fb642e47c8 Initial commit: 5 MCP servers for Mail, Calendar, Contacts, Files, Notes
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>
2026-06-12 06:22:42 +02:00