docs(CLAUDE): Test-Schichten, PDF/Dokument-Realitaet, Robustheit-Limits

- tests: 54 -> Schichten (Smoke nightly, Edge/Stress/Funktional on-demand)
- Content Types: PDFs server-seitig extrahiert/gerendert; claude.ai nimmt keine
  PDF/Dokument-Blobs aus Tool-Results nativ (nur Text+Bild)
- neue Sektion Robustheit/Limits (Deadlines/Caps pro Connector)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Stefan Lohmaier
2026-06-24 21:20:57 +02:00
co-authored by Claude Opus 4.8
parent c9ccb4392b
commit 3ccfb80115
+7 -3
View File
@@ -50,7 +50,7 @@ Access tokens are stored in a shared file `.active_tokens.json` so all 5 service
- `contacts/server.py` — CardDAV; search/get/create, contact photos - `contacts/server.py` — CardDAV; search/get/create, contact photos
- `files/server.py` — WebDAV; list/read/write/delete/move/search, images + documents - `files/server.py` — WebDAV; list/read/write/delete/move/search, images + documents
- `notes/server.py` — Joplin Data API; list/search/read/create notes, list_note_resources, read_resource - `notes/server.py` — Joplin Data API; list/search/read/create notes, list_note_resources, read_resource
- `tests/test_all.py` — 54 integration tests (pytest), daily via `mcp-tests.timer` - `tests/` — Schichten: `test_smoke.py` (NIGHTLY via `mcp-tests.timer`, nur up+Auth+1 Read/Connector), `test_edge.py`+`test_stress.py`+`test_all.py` (ON-DEMAND via `run_full_tests.sh`). Doku `tests/MCPTEST.md`
## Dependencies ## Dependencies
@@ -68,7 +68,11 @@ Each server is a systemd unit `mcp-<name>.service` (uvicorn). Each subdomain is
- Text → `TextContent` - Text → `TextContent`
- Images (jpg/png/gif/webp) → `ImageContent` (base64 inline) - Images (jpg/png/gif/webp) → `ImageContent` (base64 inline)
- Documents (PDF, docx, xlsx) / other binary`EmbeddedResource` with `BlobResourceContents` (base64 + mimeType) — claude.ai processes these client-side - PDFs → server-seitig zu Text extrahiert bzw. gescannte Seiten als PNG+OCR gerendert (`pdfutil.py`). claude.ai nimmt KEINE PDF/Dokument-Blobs aus Tool-Results nativ entgegen (nur Text + Bild). Andere Binaerdateien`EmbeddedResource`/`BlobResourceContents` (Blob; wird von claude.ai nicht als Dokument verarbeitet)
## Robustheit / Limits
Alle Such-/List-Tools sind gegen grosse Datenmengen abgesichert (single-threaded Server darf nicht haengen): Mail per-Mail try/except + `DEADLINE_S`/`MAX_SCAN`; Files `search_files` `SEARCH_DEADLINE_S`/`SEARCH_MAX_DIRS`; Calendar/Contacts `PARSE_DEADLINE_S` + `MAX_RESULTS`-Output-Cap. Details + Messwerte: `tests/MCPTEST.md`.
## Adding a New Service ## Adding a New Service
@@ -77,7 +81,7 @@ Each server is a systemd unit `mcp-<name>.service` (uvicorn). Each subdomain is
3. nginx vhost `<name>.mcp.home.slohmaier.de` + Certbot 3. nginx vhost `<name>.mcp.home.slohmaier.de` + Certbot
4. systemd unit `mcp-<name>.service` 4. systemd unit `mcp-<name>.service`
5. Backend creds in `config.json` 5. Backend creds in `config.json`
6. Tests in `tests/test_all.py`, update dashboard + this file 6. Tests: Smoke-Read in `test_smoke.py` + Edge in `test_edge.py` + Stress in `test_stress.py` (Funktional in `test_all.py`); Dashboard + dieses File aktualisieren
## Tool Design Guidelines ## Tool Design Guidelines