Files
janssen/Outlook/TRASH/mcp_owa_v1.1.md
T
2026-06-04 11:40:45 +02:00

3.0 KiB

mcp_owa_v1.1

MCP server pro OWA (outlook.cloud.microsoft) — drží persistentní Playwright session a umožňuje claude-cowork:

  • vyhledat email v MongoDB OperativniEmailyJNJ.messages,
  • otevřít ho v OWA UI,
  • udělat Forward, vepsat úvodní text na začátek těla,
  • zavřít původní čtecí panel.

Odeslání forwardu dělá uživatel ručně v okně, které zůstává otevřené.

Změny v1.1

  • Sync Playwright v dedikovaném worker threadu místo async_playwright. Důvod: na Windows s persistent contextem async_playwright selhává — Chrome se zavře hned po startu (problém s asyncio ProactorEventLoop + --remote-debugging-pipe). Sync API funguje spolehlivě (potvrzeno v import_emails_to_mongo_v1.0.py).
  • FastMCP tooly jsou synchronní, dispatch na worker přes queue.Queue + concurrent.futures.Future.

Spuštění

Registrace v .mcp.json:

"owa": {
  "command": "python",
  "args": ["U:\\PythonProject\\Janssen\\Outlook\\mcp_owa_v1.1.py"],
  "cwd": "U:\\PythonProject\\Janssen\\Outlook"
}

Profil sdílí s import_emails_to_mongo_v1.0.py (outlook_profile/). Pokud profil neexistuje, spusť nejdřív outlook_login_v1.0.py.

Tools

Tool Účel
start_owa Spustí Playwright + otevře OWA
stop_owa Zavře okno
status Stav session
find_emails(query, from_email, folder, since_iso, limit) Hledání v MongoDB
find_last_email(from_email, folder) Nejnovější email
open_email_by_subject(subject) Otevře v OWA přes search
forward_current(body_prefix, subject_prefix) Ctrl+Shift+F, předvyplní
write_at_top(text) Vepíše text na začátek body draftu
set_recipients(to, cc) Doplní To/Cc
close_reading_pane Escape (zavře čtecí panel)
screenshot(path) Diagnostický screenshot

Typický flow

start_owa
find_last_email(from_email="...")        → vrátí subject + metadata
open_email_by_subject("<subject>")       → otevře v reading pane
forward_current(body_prefix="Posílám dále, prosím o vyjádření.\n")
                                          → Ctrl+Shift+F, vepíše úvod
set_recipients(to=["adresat@..."])       → vyplní příjemce
                                          → uživatel zkontroluje a odešle ručně
close_reading_pane                        (až po odeslání)

Poznámky / známá omezení

  • Forward draft = stejný tab jako reading pane (inline composer).
  • Podpis se vkládá automaticky podle nastavení OWA.
  • OWA si sám předřadí FW: k předmětu; subject_prefix se přidá před to.
  • Hledání emailu v UI přes search bar (subject substring).
  • Pokud OWA změní lokalizaci aria-labelů, uprav selektory v _forward, _write_at_top, _set_recipients.

TODO pro další verzi

  • Otevření přímo z message_id
  • Detekce, zda forward composer otevřel popup tab místo inline
  • send_forward() tool s explicitním potvrzením
  • Volba složky před open_email_by_subject