Files
janssen/OutlookVBCZ/mcp_vbcz_email_v1.6.md
T
2026-06-19 14:28:20 +02:00

89 lines
3.7 KiB
Markdown

# mcp_vbcz_email_v1.6.md
**Verze:** 1.6
**Datum:** 2026-06-09
**Soubor:** `OutlookVBCZ/mcp_vbcz_email_v1.6.py`
## Popis
MCP server pro schránku **vladimir.buzalka@buzalka.cz** přes Microsoft Graph API (application permissions, tenant TrialHelp s.r.o., app **PythonMailer** `4b222bfd-…`). Sdílí credentials s `Knihovny/EmailMessagingGraph.py`.
## Tooly
| Tool | Popis |
|------|-------|
| `list_emails` | Seznam posledních emailů (folder, limit, search, from_email, unread_only) |
| `get_email` | Plné tělo + metadata emailu podle `message_id` |
| `list_attachments` | Seznam příloh emailu |
| `get_attachment` | Stáhne přílohu do `downloads/`, vrátí cestu |
| `create_draft_eml` | Vygeneruje `.eml` draft (X-Unsent) k ruční kontrole a odeslání (+ přílohy, + forward originálu, + odříznutí self-forward obalu) |
| `create_event` | **(v1.6)** Vytvoří událost v kalendáři schránky (+ připomínka) |
| `create_contact` | **(v1.6)** Založí kontakt ve schránce |
## Důležité — kam co jde
- **E-maily lékařům / CTA** = i nadále **`.eml` drafty** (`create_draft_eml`), které se odesílají přes **JNJ server** (vbuzalka@its.jnj.com). NE přes tuto osobní schránku.
- **Kalendář (připomínky) + kontakty** = `create_event` / `create_contact` píšou **přímo do osobní schránky** vladimir.buzalka@buzalka.cz (Graph POST).
## create_event
```
create_event(
subject, # název události
start, # ISO bez offsetu, lokální čas: "2026-06-11T09:00:00"
end=None, # ISO; když None, dopočítá z duration_minutes
duration_minutes=30,
body=None, # poznámka (plain text nebo HTML)
location=None, # místo, např. "tel. 0911 926 046"
reminder_minutes_before=0, # připomínka N min předem (0 = v čase začátku)
timezone="Central European Standard Time",
is_all_day=False,
body_is_html=False,
) -> {id, web_link, subject, start, end, reminder_minutes_before}
```
Vyžaduje **Calendars.ReadWrite** (application). Připomínka je vždy zapnutá.
## create_contact
```
create_contact(
given_name, surname, # povinné
display_name=None, # def "<given> <surname>"
email=None,
mobile_phone=None,
business_phone=None,
company=None, # firma / pracoviště
job_title=None,
note=None, # personalNotes
) -> {id, display_name, email}
```
Vyžaduje **Contacts.ReadWrite** (application).
## Graph oprávnění (app PythonMailer) — Granted 2026-06-09
- Mail.ReadWrite (Application)
- Mail.Send (Application)
- Calendars.ReadWrite (Application) ← v1.6
- Contacts.ReadWrite (Application) ← v1.6
- User.Read (Delegated)
## Kódování draftů (od v1.3)
- Tělo i plain fallback → **base64** (`cte="base64"`), zápis přes **`policy.SMTP`** (CRLF) → správná diakritika v Outlooku.
## Konfigurace `.mcp.json`
```json
"vbcz-email": {
"command": "python",
"args": ["U:\\PythonProject\\Janssen\\OutlookVBCZ\\mcp_vbcz_email_v1.6.py"],
"cwd": "U:\\PythonProject\\Janssen\\OutlookVBCZ"
}
```
## Historie verzí
- **v1.0** — list_emails, get_email, list_attachments, get_attachment
- **v1.1** — + create_draft_eml
- **v1.2** — create_draft_eml: + `attachments`
- **v1.3** — oprava kódování: base64 cte + CRLF (policy.SMTP)
- **v1.4** — create_draft_eml: + `original_message_id` (forward styl)
- **v1.5** — create_draft_eml: + `strip_self_forward` (default True)
- **v1.6** — + `create_event` (kalendář + připomínka), + `create_contact`; helper `_graph_post`; přidána oprávnění Calendars.ReadWrite + Contacts.ReadWrite. E-maily lékařům zůstávají jako `.eml` drafty (JNJ server).