Update docs: CLAUDE.md, README, config example

- CLAUDE.md: subdomains, OAuth Auth Code+PKCE, shared token store,
  all backends incl Joplin Data API, content types, current tool list
- README: full tool inventory per service, correct setup steps
- config.json.example: joplin_login + joplin_data_api fields documented

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Stefan Lohmaier
2026-06-12 12:35:35 +02:00
parent c06e6d6b4c
commit a811e87029
3 changed files with 91 additions and 49 deletions
+25 -13
View File
@@ -1,31 +1,43 @@
# mcp-home
Self-hosted [MCP](https://modelcontextprotocol.io) servers for Claude. Gives Claude access to your email, calendar, contacts, files, and notes — all running on your own hardware.
Self-hosted [MCP](https://modelcontextprotocol.io) servers for Claude. Gives Claude access to your email, calendar, contacts, files, and notes — all running on your own hardware, behind OAuth.
## Services
## Services & Tools
- **Mail** — search and read emails from IMAP backups (Maildir format)
- **Calendar + Tasks** — read/write events and reminders via CalDAV (Radicale)
- **Contacts** — search/read/write contacts via CardDAV (Radicale)
- **Files** — browse and read files via WebDAV (oCIS)
- **Notes** — search/read/write notes via Joplin API
- **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
```bash
python3 -m venv venv
venv/bin/pip install mcp[cli] httpx vobject python-dateutil
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
```
Copy `tokens.json.example` to `tokens.json` and set client secrets.
Notes needs joplin-cli sync clients exposing the Data API (see `/opt/joplin-mcp/`).
## Usage with claude.ai
Add as Custom MCP Server in claude.ai Settings → Integrations:
Settings → Integrations → Custom MCP Server:
- **URL**: `https://your-domain/mail/mcp` (or calendar, contacts, files, notes)
- **OAuth Client ID**: your username
- **OAuth Client Secret**: your secret from tokens.json
- **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
```bash
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