Skip to main content
Glama
desek

outlook-local-mcp

README.md
# 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

A4.4/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness3/5

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.

Maintenance

ActivityMaintained
ResponsivenessSlow