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

2.9 KiB

mcp_owa_v1.2

MCP server pro OWA (outlook.cloud.microsoft) — drží persistentní Playwright session ve vlastním profilu owa_mcp_profile/.

Změny v1.2

  • Vlastní profil owa_mcp_profile/ — nesdílí se s import_emails_to_mongo_v1.0.py. Lze tak používat oba současně bez konfliktu zámku Chrome.
  • Nový tool login() — pro první přihlášení / přepnutí účtu. Otevře okno, počká až 5 minut, než dokončíš login ručně. Profil se uloží automaticky.
  • start_owa vrátí no_profile, pokud owa_mcp_profile/ neexistuje — pak zavolej login.
  • status vrací i profile_exists + profile_dir.

Změny v1.1

  • Sync Playwright v dedikovaném worker threadu místo async_playwright (na Windows + persistent context async API padá hned po startu Chrome).

První použití

  1. Zavolej login → otevře se Chrome s OWA.
  2. Přihlas se ručně (Microsoft SSO atd.).
  3. Po načtení inboxu se tool vrátí logged_in (nebo window_open_login_pending při timeoutu — to neva, profil se i tak ukládá průběžně).
  4. Příště stačí start_owa.

Spuštění

Registrace v .mcp.json:

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

Tools

Tool Účel
login První přihlášení; otevře OWA na 5 min, profil se uloží
start_owa Spustí Playwright + otevře OWA (vyžaduje existující profil)
stop_owa Zavře okno (profil zůstává uložený)
status Stav session + existuje profil?
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
screenshot(path) Diagnostický screenshot

Typický flow (po prvním loginu)

start_owa
find_last_email(from_email="...")
open_email_by_subject("<subject>")
forward_current(body_prefix="Posílám dále, prosím o vyjádření.\n")
set_recipients(to=["adresat@..."])
# uživatel zkontroluje a odešle ručně

Známá omezení

  • Forward draft je inline composer ve stejném tabu.
  • Podpis vkládá OWA automaticky podle nastavení účtu.
  • OWA si sám předřadí FW: k předmětu; subject_prefix se přidá před to.
  • Pokud OWA změní lokalizaci aria-labelů, uprav selektory v _forward, _write_at_top, _set_recipients.

TODO

  • Otevření přímo z message_id
  • Detekce popup composer vs. inline
  • send_forward() s explicitním potvrzením
  • Volba složky před open_email_by_subject
  • logout() (smaže profil)