2.9 KiB
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 simport_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_owavrátíno_profile, pokudowa_mcp_profile/neexistuje — pak zavolejlogin.statusvrací iprofile_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í
- Zavolej
login→ otevře se Chrome s OWA. - Přihlas se ručně (Microsoft SSO atd.).
- Po načtení inboxu se tool vrátí
logged_in(nebowindow_open_login_pendingpři timeoutu — to neva, profil se i tak ukládá průběžně). - 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_prefixse 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)