outlook-local-mcp
# Outlook Local MCP Server
A single-binary MCP server that connects Claude Desktop and Claude Code to Microsoft Outlook via the Microsoft Graph API. Manage your calendar, read email, and compose drafts without leaving your AI assistant.
<p align="center">
<img src="docs/assets/demo.gif" alt="outlook-local-mcp demo">
</p>
## Install
**Go binary** (recommended):
```bash
go install github.com/desek/outlook-local-mcp/cmd/outlook-local-mcp@latest
```
**Docker / OCI**:
```bash
docker run -i --rm \
-v outlook-mcp-auth:/data/auth \
-e OUTLOOK_MCP_TENANT_ID=<tenant> \
-e OUTLOOK_MCP_CLIENT_ID=<client> \
ghcr.io/desek/outlook-local-mcp:latest
```
See [Container deployment](docs/quickstart.md#container-deployment) for the full client config snippet, and [Container runtime](docs/concepts.md#container-runtime) for the keychain trade-off and image variants.
**Claude Desktop extension** (no terminal required):
Download the `.mcpb` file from the [latest release](https://github.com/desek/outlook-local-mcp/releases/latest) and open it in Claude Desktop via **Settings > Extensions > Install from file**.
## Tool invocation shape
All operations use four aggregate domain tools dispatched by an `operation` verb:
```
{tool: "calendar", args: {operation: "list_events", date: "today"}}
{tool: "mail", args: {operation: "list_folders"}}
{tool: "account", args: {operation: "list"}}
{tool: "system", args: {operation: "status"}}
```
Call any domain with `operation: "help"` to list its verbs and parameters.
## Documentation
| Guide | Contents |
|---|---|
| [docs/readme.md](docs/readme.md) | Project overview and feature list |
| [docs/quickstart.md](docs/quickstart.md) | Prerequisites, installation, and first tool call |
| [docs/concepts.md](docs/concepts.md) | Output tiers, multi-account model, mail gating, OAuth scopes, observability, and more |
| [docs/troubleshooting.md](docs/troubleshooting.md) | Auth errors, Keychain issues, Graph throttling, and account lifecycle |
For LLM clients: see [llms.txt](llms.txt) for a machine-readable index.
## Acknowledgements
Support and testing by [GigWhere](https://gigwhere.com) ❤️
## License
MIT License. See [LICENSE](LICENSE) for details.
TDQS
Scored across 4 tools
The four tools (account, calendar, mail, system) each cover a distinct domain with no overlap in their primary responsibilities. The sub-operations within each tool are also clearly separated, making it easy for an agent to select the right tool.
All tool names are single lowercase nouns (account, calendar, mail, system), following a consistent and predictable pattern. The sub-operations use a verb_noun convention, but the tool-level naming is uniform.
With only 4 tools, each serving a major functional area (account, calendar, mail, system), the count is well-scoped and appropriate. The sub-operation design keeps the top-level surface compact while still covering a broad domain.
The calendar and account tools provide comprehensive lifecycle coverage, but the mail tool in its current configuration only exposes read operations (list, get, search) and lacks essential write capabilities such as sending, replying, or managing drafts. This is a significant gap for a mail-oriented server.