Skip to main content
Glama
victor-git-007

The Ultimate Outlook Desktop MCP

README.md
# The Ultimate Outlook Desktop MCP

**by Disrup Technology — https://disrup-tech.com**

One independent MCP server that gives your AI assistant full control of
**Microsoft Outlook Desktop (Classic)** — both **calendar** and **email** — over
a single stdio connection, using local COM automation. No Microsoft Graph, no
Entra app registration.

> Requirements: Windows + Outlook Desktop (Classic) running. Outlook must be open
> for the server to connect.

---

## One-line install

```powershell
pip install git+https://github.com/victor-git-007/The-Ultimate-Outlook-Desktop-MCP.git
```

Then run it:

```powershell
python -m the_ultimate_outlook_desktop_mcp
```

---

## What it does

| Group | Tools |
|---|---|
| **Calendar** | `list_events`, `create_event`, `get_calendars` |
| **Email** | `list_emails`, `send_email`, `read_email`, `mark_as_read`, `move_email`, `reply_email`, `list_folders`, `search_emails` |

Just talk to your assistant:
- "What's on my calendar this week?"
- "Send an email from my disrup-tech.com account to …"
- "List my flagged (red follow-up) emails"

---

## Connect to your assistant

**Claude Desktop** — add to `%APPDATA%\Claude\claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "outlook-desktop": {
      "command": "python",
      "args": ["-m", "the_ultimate_outlook_desktop_mcp"]
    }
  }
}
```

**Hermes Agent**:

```powershell
hermes mcp add outlook-desktop --command python --args -m the_ultimate_outlook_desktop_mcp
```

(Restart Claude Desktop / start a new Hermes session afterwards.)

---

## Disrup Technology fixes (baked in)

1. **Calendar date parse** — forces `MM/DD/YYYY` so non-US locales
   (e.g. `en-AE`, short date `dd/MM/yyyy`) no longer throw *"End date cannot be
   before start date"*.
2. **Flagged-email filter** — the follow-up (red) flag is exposed as a `flagged`
   field and filtered in-process, avoiding an invalid COM `Restrict` error some
   Outlook installs throw.

---

## Usage notes

- Always pass `account` (e.g. `info@disrup-tech.com`). The default store can
  resolve to an empty profile and return nothing.
- Red follow-up flags: `list_emails(flagged_only=True, account="...")`.

---

## License

MIT — © Disrup Technology (https://disrup-tech.com). See `LICENSE` for the full
text and the required upstream attribution notices.