Skip to main content
Glama
hasan-imam

mcp-outlook-applescript

by hasan-imam
README.md
# mcp-outlook-applescript

A [Model Context Protocol](https://modelcontextprotocol.io/) server for Microsoft Outlook on Mac. Access your mail, calendar, contacts, tasks, and notes through 49 MCP tools powered by AppleScript.

## Features

- **AppleScript backend** — works with classic Outlook for Mac, no network or authentication required
- **49 tools** — full coverage of mail, calendar, contacts, tasks, and notes
- **Approval system** — destructive operations (delete, move, junk) require a two-step prepare/confirm flow
- **Zero native dependencies** — pure TypeScript + AppleScript, no C++ compilation needed

### Available Tools

| Category | Tools |
|----------|-------|
| **Mail** | `list_folders`, `list_emails`, `search_emails`, `get_email`, `get_unread_count`, `send_email`, `list_attachments`, `download_attachment` |
| **Mail Organization** | `mark_email_read`, `mark_email_unread`, `set_email_flag`, `clear_email_flag`, `set_email_categories`, `prepare/confirm_delete_email`, `prepare/confirm_move_email`, `prepare/confirm_archive_email`, `prepare/confirm_junk_email`, `prepare/confirm_batch_*` |
| **Folders** | `create_folder`, `rename_folder`, `move_folder`, `prepare/confirm_delete_folder`, `prepare/confirm_empty_folder` |
| **Calendar** | `list_calendars`, `list_events`, `get_event`, `search_events`, `create_event`, `update_event`, `delete_event`, `respond_to_event` |
| **Contacts** | `list_contacts`, `search_contacts`, `get_contact` |
| **Tasks** | `list_tasks`, `search_tasks`, `get_task` |
| **Notes** | `list_notes`, `search_notes`, `get_note` |
| **Accounts** | `list_accounts` |

## Install

```bash
git clone https://github.com/hasan-imam/mcp-outlook-applescript.git
cd mcp-outlook-applescript
npm install && npm run build && npm pack && npm install -g mcp-outlook-applescript-*.tgz
cd .. && rm -rf mcp-outlook-applescript
```

This installs `mcp-outlook-applescript` as a global command. The checkout can be deleted after install.

To update, re-run the commands above.

### Claude Code

```bash
claude mcp add outlook -- mcp-outlook-applescript
```

### Claude Desktop

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "outlook": {
      "command": "mcp-outlook-applescript"
    }
  }
}
```

## Requirements

- macOS with Microsoft Outlook (classic) installed and running
- Node.js >= 20
- Automation permission for Outlook (System Settings > Privacy & Security > Automation)

## Development

```bash
npm install
npm run build      # compile TypeScript → dist/
npm run typecheck   # type-check without emitting
npm test            # 121 unit tests
bash scripts/audit.sh  # static quality audit (build, security, package, functional)
```

## License

MIT — see [LICENSE](LICENSE).

TDQS

A4.1/5.0

Scored across 49 tools

Disambiguation5/5

Each tool targets a distinct resource and action; the prepare/confirm pairs are clearly differentiated by action and resource, and confirm_batch_operation explicitly states which prepare tools it consumes. Even similarly named tools like list_emails/search_emails or set_email_flag/clear_email_flag have non-overlapping purposes described clearly.

Naming Consistency4/5

The surface uses a consistent snake_case verb_noun pattern (list_*, get_*, search_*, create_*, update_*, delete_*, prepare_*, confirm_*), which makes navigation predictable. Minor inconsistencies exist: singular vs plural resources (email vs emails), and confirm_batch_operation is generic where a verb_noun name would fit better.

Tool Count2/5

At 49 tools, the surface is heavily over-scoped for an agent to navigate. The 16 prepare/confirm pairs plus batch variants inflate the count significantly; many could be consolidated into a single tool with an optional confirmation step.

Completeness3/5

Mail, folders, and calendar events have solid CRUD/lifecycle coverage, but contacts, tasks, and notes are read-only (list/search/get only), and create_event/update_event omit attendee management. These are notable gaps that will block common Outlook workflows, though core email operations are complete.

Maintenance

ActivityInactive
ResponsivenessUnresponsive