MCP server: One MCP server.

Outlook

@rlrghbMCP server · External

Outlook & OneDrive MCP: personal & enterprise tools for mail, calendar, contacts, tasks, files

Calendarv1.16.1MITGo
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

npmolkcliv1.16.1

Run

npx -y olkcli

MCP client config

{
  "mcpServers": {
    "outlook": {
      "command": "npx",
      "args": [
        "-y",
        "olkcli"
      ]
    }
  }
}
README3 min read

olk — Microsoft Outlook in Your Terminal

olk is a scriptable CLI and MCP server for Outlook mail, calendars, contacts, tasks, and OneDrive through Microsoft Graph. It works with personal Outlook.com accounts and enterprise Microsoft 365 accounts.

Install

bash
brew install rlrghb/tap/olk
# or
go install github.com/rlrghb/olkcli/cmd/olk@latest

The npm package is olkcli; the installed command is olk:

bash
npm install -g olkcli

See macOS notes if macOS asks for Keychain access after an upgrade.

Quick start

bash
olk auth login
olk auth status
olk mail list --json --results-only --select id,subject,from
olk mail search 'from:person@example.com subject:urgent'
olk calendar view --days 7
olk contacts search "Alex"
olk todo lists list
olk drive ls

For work/school accounts and enterprise-only features:

bash
olk auth login --enterprise

Common commands

NeedCommand
Check the signed-in accountolk auth status or olk whoami
Find message IDs and subjectsolk mail list --json --results-only --select id,subject,from
Search mailolk mail search "from:person@example.com subject:urgent"
View the next weekolk calendar view --days 7
Search contactsolk contacts search "Alex"
List task listsolk todo lists list
Browse OneDriveolk drive ls
Send mailolk mail send --to person@example.com --subject "Hi" --body "Hello"
Draft a reply-all with an extra Ccolk mail reply <ID> --reply-all --draft --body "$(cat reply.txt)" --cc person@example.com
Draft HTML with an inline imageolk mail drafts create --to person@example.com --subject "Steps" --html --body '<img src="cid:steps">' --inline steps=steps.png
Synchronize changesolk changes --json
Use JSON for scriptsolk mail list --json --results-only
Use as an MCP serverolk mcp

See the command reference for all commands and flags.

Inline images in HTML drafts

Use a cid: URL in the HTML and supply the matching image with repeatable --inline CID=PATH flags. This works for new drafts and true threaded reply or reply-all drafts:

bash
olk mail reply <ID> --draft --html \
  --body '<p>See both images:</p><img src="cid:logo"><img src="cid:steps">' \
  --inline logo=logo.png --inline steps=steps.png

olk mail drafts create --to person@example.com --subject "Instructions" --html \
  --body '<p>Follow these steps:</p><img src="cid:steps">' \
  --inline steps=steps.png

Each CID must be unique and referenced by the HTML. Files must be images and each must be under 3 MB, the Microsoft Graph simple-attachment limit. Draft commands do not send mail; immediate sends and forwards do not accept --inline.

Output and scripting

Results are written to stdout; diagnostics and prompts go to stderr.

bash
olk mail list --json --results-only | jq '.[].subject'
olk contacts list --plain

Output modes are JSON (--json), TSV (--plain), and aligned tables by default. Use --concise to omit large bodies/previews and --select to limit fields where supported. See scripting and sync.

Safety defaults

  • Use --no-write --no-send --no-input for unattended read-only runs.
  • MCP exposes curated tools and requires explicit opt-in for mutations.
  • External mail, calendar, contact, and file text can be wrapped with --wrap-untrusted for agent-safe consumption.
  • Refresh tokens are stored in the OS keychain; access tokens are kept in memory only.

Read the security and privacy guide before connecting an agent or sharing logs.

Documentation

Contributing

bash
make build
make test
make lint

See development and releases for repository structure, validation, CI, and publishing details.

License

See LICENSE.

Similar modules

Browse Calendar