3.0 KiB
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 contextemasync_playwrightselhává — Chrome se zavře hned po startu (problém s asyncio ProactorEventLoop +--remote-debugging-pipe). Sync API funguje spolehlivě (potvrzeno vimport_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_prefixse 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