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

3.7 KiB

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

"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).