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

69 lines
2.9 KiB
Markdown

# 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`:
```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)