89 lines
3.7 KiB
Markdown
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).
|