c9ccb4392b4f049e146adb832f13f8c61e35395a
Mail: _safe_decode + _iter_messages (per-mail try/except) -> eine kaputte Mail (charset x-unknown) bricht die Suche nicht mehr ab, findet so auch uralte Mails. Vollscan + Datum-Sort + MAX_SCAN/DEADLINE_S (Selbstheilung, kein 24h-Haenger mehr). Files: search_files mit SEARCH_DEADLINE_S + SEARCH_MAX_DIRS begrenzt (war unbegrenzte rekursive PROPFIND -> real 35s/449 Calls). Calendar/Contacts: PARSE_DEADLINE_S fuer client-seitiges vobject-Parsen; MAX_RESULTS-Output-Cap in get_events/get_tasks (war 10939 Zeilen bei 6000 Events); search Top-N + Hinweise. Tests: in Schichten getrennt -> Smoke (nightly), Edge + Stress (on-demand). Neu: test_smoke/test_edge/test_stress + conftest-Marker + run_full_tests.sh, nightly laeuft nur Smoke. Kontakt-Foto-Roundtrip-Test, Mail-Edge-Mails (x-unknown, kaputter Header, 2009er Alt-Mail). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
mcp-home
Self-hosted MCP servers for Claude. Gives Claude access to your email, calendar, contacts, files, and notes — all running on your own hardware, behind OAuth.
Services & Tools
- Mail —
list_accounts,list_folders,search_mail(full text),read_mail(lists attachments),read_attachment(image/PDF/text),create_draft - Calendar + Tasks —
list_calendars,get_events,search_events,list_task_lists,get_tasks,create_event(travel time + geocoding + reminders),create_task - Contacts —
search_contacts,get_contact(with photo),create_contact,set_contact_photo - Files —
list_files,read_file(image/document/text),file_info,search_files,write_file,create_folder,delete_file,move_file - Notes —
list_notebooks,list_notes,search_notes,read_note,create_note,list_note_resources,read_resource(attachments)
Setup
python3 -m venv venv
venv/bin/pip install mcp[cli] httpx vobject python-dateutil pytest
cp tokens.json.example tokens.json # set OAuth client secrets
cp config.json.example config.json # set backend credentials
Notes needs joplin-cli sync clients exposing the Data API (see /opt/joplin-mcp/).
Usage with claude.ai
Settings → Integrations → Custom MCP Server:
- URL:
https://<service>.mcp.your-domain/mcp(mail, calendar, contacts, files, notes) - OAuth Client ID: your username (e.g.
stefan) - OAuth Client Secret: from
tokens.json
claude.ai runs the OAuth Authorization Code + PKCE flow automatically.
Tests
venv/bin/python -m pytest tests/test_all.py -v
54 integration tests (OAuth, all tools, CRUD in isolated test collections). Run daily via mcp-tests.timer.
License
MIT
Description
Self-hosted MCP servers for Claude — Mail, Calendar, Contacts, Files, Notes via CalDAV/CardDAV/WebDAV/IMAP
526 KiB
Languages
Python
98.4%
Shell
1.6%