z230
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# mcp_owa_v1.0
|
||||
|
||||
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é.
|
||||
|
||||
## Spuštění
|
||||
|
||||
Profil sdílí s `import_emails_to_mongo_v1.0.py` (`outlook_profile/`). Pokud profil neexistuje, spusť nejdřív `outlook_login_v1.0.py`.
|
||||
|
||||
Registrace v `.mcp.json` (stdio):
|
||||
```json
|
||||
"owa": {
|
||||
"command": "U:\\PythonProject\\Janssen\\.venv\\Scripts\\python.exe",
|
||||
"args": ["U:\\PythonProject\\Janssen\\Outlook\\mcp_owa_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). `close_reading_pane`
|
||||
proto NEZAVŘE draft, ale Escape může composer minimalizovat — preferuj zavírat
|
||||
až po odeslání.
|
||||
- **Podpis** se vkládá automaticky podle nastavení OWA — skript ho nevkládá.
|
||||
- **Subject prefix** — OWA si sám předřadí `FW: `, `subject_prefix` se přidá před to.
|
||||
- **Hledání emailu v UI** je přes search bar (subject substring). Pokud má více
|
||||
výsledků se stejným subjectem, otevře první (nejnovější).
|
||||
- Pokud OWA změní lokalizaci aria-labelů, uprav selektory v `forward_current` /
|
||||
`write_at_top` / `set_recipients`.
|
||||
|
||||
## TODO pro další verzi
|
||||
- Otevření přímo z `message_id` (přes search `messageid:`)
|
||||
- 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`
|
||||
Reference in New Issue
Block a user