{
  "markdown": "# outlook-tools — Claude Cowork connector for Microsoft Outlook\n\nA shareable Claude Code / Cowork plugin that lets Claude drive the **locally-installed Microsoft Outlook desktop client** via COM. No Azure AD registration, no OAuth, no cloud. Works against whatever accounts your Outlook profile already has.\n\n**Windows only.** Requires Outlook desktop and [uv](https://docs.astral.sh/uv/) installed.\n\n## What it does\n\n| Surface | Capabilities |\n|---|---|\n| **Email** | list, read, search, move, delete, draft, reply, reply-all, forward, update draft, send |\n| **Calendar** | list events (with recurrence expansion), create, update, delete, accept/decline invites |\n| **Categories** | list master list, apply to emails or events (replace/add/remove) |\n| **Accounts & folders** | enumerate accounts and full folder trees |\n\nPlus:\n\n- **`outlook-assistant`** skill — auto-loads when the user mentions email, calendar, or meetings, teaching Claude the safe-default behaviors (draft before send, soft delete, confirm batch ops).\n- **Slash commands:** `/triage-inbox`, `/daily-digest`, `/draft-reply`, `/clean-inbox`.\n\n## Install\n\n### Prerequisites\n\n- **Windows** with Outlook desktop installed and a profile configured\n- [**uv**](https://docs.astral.sh/uv/getting-started/installation/) on PATH (handles Python + dependencies)\n\n### Option A — Claude Code (full plugin: MCP tools + skill + slash commands)\n\n```powershell\nclaude plugin marketplace add github:gabrieldenny-del/outlook-extension\nclaude plugin install outlook@outlook-tools\n```\n\nRestart Claude Code. Run `/mcp` to confirm the `outlook` server shows up and `/plugin` to see the plugin listed. On first run, `uv` creates a venv inside the plugin directory and installs dependencies; subsequent launches reuse it.\n\nThis option gives you the full experience: the MCP server, the `outlook-assistant` skill, and slash commands (`/triage-inbox`, `/daily-digest`, `/draft-reply`, `/clean-inbox`).\n\n### Option B — Claude desktop app (MCP server only, via `.mcpb` bundle)\n\nDownload the latest `outlook-<version>.mcpb` from the [Releases](https://github.com/gabrieldenny-del/outlook-extension/releases) page, then **double-click** it. Claude desktop will open and prompt you to install the extension.\n\nAlternatively, from inside Claude desktop: **Settings → Extensions → Install from file** and pick the `.mcpb`.\n\n> The desktop bundle contains the MCP server only. Skills and slash commands are a Claude Code feature and are not loaded in the desktop app yet.\n\n## Use it\n\n```\nYou: /daily-digest\nClaude: [calls list_calendar_events + list_emails, produces brief]\n\nYou: Draft a reply to Sarah saying I'll get to it Friday\nClaude: [search_emails → read_email → create_draft, surfaces draft]\n\nYou: Looks good, send it\nClaude: [send_email]\n```\n\nOr just talk to it: *\"Move all unread newsletters from this week to the Archive folder\"* — the `outlook-assistant` skill teaches Claude to confirm batch operations before executing.\n\n## Develop locally\n\nThe plugin lives under [outlook/](outlook/). To iterate:\n\n```powershell\ncd outlook\nuv sync                   # creates .venv, installs deps\nuv run outlook-mcp        # runs the MCP server over stdio (testing)\n```\n\nTo load your local copy into Claude Code without publishing:\n\n```powershell\n# Add this directory as a local marketplace\nclaude plugin marketplace add \"C:\\Users\\gabri\\Outlook Extension\"\nclaude plugin install outlook@outlook-tools\n```\n\n### Layout\n\n```\n.\n├── .claude-plugin/\n│   └── marketplace.json     # Claude Code marketplace (1 plugin: \"outlook\")\n├── outlook/                 # the Claude Code plugin\n│   ├── .claude-plugin/plugin.json\n│   ├── .mcp.json            # MCP server registration using ${CLAUDE_PLUGIN_ROOT}\n│   ├── commands/            # slash commands\n│   ├── skills/outlook-assistant/SKILL.md\n│   ├── src/outlook_mcp/     # Python MCP server\n│   │   ├── outlook.py       # COM wrapper (pure, no MCP dep)\n│   │   └── server.py        # FastMCP tool definitions\n│   └── pyproject.toml\n├── dxt/                     # Claude desktop extension staging\n│   ├── manifest.json        # .mcpb manifest (Anthropic desktop extension spec)\n│   └── server/              # populated by build-dxt.sh (gitignored)\n├── scripts/\n│   └── build-dxt.sh         # stages server code and packs outlook-<version>.mcpb\n├── icon.jpg                 # source icon (auto-converted to PNG at build)\n├── LICENSE\n└── README.md\n```\n\n### Build the desktop extension\n\n```bash\nbash scripts/build-dxt.sh\n# → outlook-0.1.0.mcpb in repo root\n```\n\nThe script copies `outlook/src/outlook_mcp` and `outlook/pyproject.toml` into `dxt/server/`, converts `icon.jpg` → PNG via `uv`+Pillow, and packs the bundle with `@anthropic-ai/mcpb`. Distribute the `.mcpb` by attaching it to a GitHub Release.\n\nThe `outlook.py` COM wrapper has no MCP dependency and can be imported directly for scripting:\n\n```python\nfrom outlook_mcp import outlook as ol\nol.list_emails(folder=\"inbox\", unread_only=True, limit=10)\n```\n\n## Tool reference\n\n### Folder paths\n\nMost tools accept a `folder` string:\n\n| Input | Resolves to |\n|---|---|\n| omitted or `\"inbox\"` | Default Inbox |\n| `\"sent\"`, `\"drafts\"`, `\"deleted\"`, `\"junk\"`, `\"outbox\"`, `\"calendar\"` | Default special folders |\n| `\"inbox/Processed/Q1\"` | Subfolder under default Inbox |\n| `\"account@example.com/Inbox/Processed\"` | Walk from a specific store |\n\n### Complete tool list\n\n**Email:** `list_accounts`, `list_folders`, `list_emails`, `read_email`, `search_emails`, `move_email`, `delete_email`, `create_draft`, `update_draft`, `send_email`\n\n**Calendar:** `list_calendar_events`, `create_calendar_event`, `update_calendar_event`, `delete_calendar_event`, `respond_to_invite`\n\n**Categories:** `list_categories`, `set_email_categories`, `set_event_categories`\n\n## Security & safety\n\n- **No cloud auth.** The plugin talks to the Outlook COM object on your machine. If you can read the mailbox in Outlook, the plugin can too — nothing more, nothing less.\n- **Programmatic-access prompt.** Older Outlook versions or some group-policy configurations display a warning when an external process sends mail. Modern Office 365 generally suppresses it for trusted executables. IT admins can configure via Trust Center → Programmatic Access.\n- **Safe-by-default tool use.** The bundled `outlook-assistant` skill instructs Claude to draft before sending, soft-delete by default, and confirm batch operations.\n- **Sending is real.** `send_email` sends. For reviewable workflows, prefer `create_draft` and let a human hit Send.\n\n## Roadmap\n\n- Publish to PyPI so `uvx outlook-mcp` works without cloning\n- Contacts + tasks tools\n- Attachment download (save to disk)\n- C#/.NET port for single-exe distribution (easier IT whitelisting than a Python venv)\n\n## Author\n\n**Gabriel Denny**\n- Website: [www.gabrieldenny.com](https://www.gabrieldenny.com)\n- LinkedIn: [gabrieljdenny](https://www.linkedin.com/in/gabrieljdenny)\n- GitHub: [@gabrieldenny-del](https://github.com/gabrieldenny-del)\n\n## License\n\nMIT © 2026 Gabriel Denny — see [LICENSE](LICENSE).\n",
  "bytes": 7043,
  "sha": "53a1554258fef58575df2679a597893777263ed751055dd60f5a52eebb66f573",
  "repo_slug": "gabrieldenny-del/outlook-extension",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_gabrieldenny_del_outlook_extension_windo_3771d055/readme"
}