About outlook
olk is a command line tool and MCP server for Microsoft Outlook and OneDrive, accessing mail, calendars, contacts, tasks and files through Microsoft Graph. It supports both personal Outlook.com accounts and enterprise Microsoft 365 accounts, suited to users who work with office data in a terminal or scripts.
Key features
- 01Mail listing, searching, sending and replying
- 02Calendar viewing and contact search
- 03Task list management
- 04OneDrive file browsing
- 05Script-friendly JSON and TSV output
- 06MCP mutations require explicit opt-in
Use cases
- 01Reading mail subjects and senders in scripts
- 02Drafting HTML mail with inline images from the command line
- 03Giving AI agents limited access to Outlook data
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
40Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| out | string | No | Output directory for download |
| concise | boolean | No | Drop large free-text fields (message/event/task bodies, previews, attendee lists) to reduce payload size. |
| event-id | string | Yes | Event ID |
| attachment-id | string | Yes | Attachment ID |
Details
From the project READMEolk — 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
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:
npm install -g olkcli
See macOS notes if macOS asks for Keychain access after an upgrade.
Quick start
olk auth login
olk auth status
olk mail list --json --results-only --select id,subject,from
olk mail search 'from:[email protected] 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:
olk auth login --enterprise
Common commands
| Need | Command |
|---|---|
| Check the signed-in account | olk auth status or olk whoami |
| Find message IDs and subjects | olk mail list --json --results-only --select id,subject,from |
| Search mail | olk mail search "from:[email protected] subject:urgent" |
| View the next week | olk calendar view --days 7 |
| Search contacts | olk contacts search "Alex" |
| List task lists | olk todo lists list |
| Browse OneDrive | olk drive ls |
| Send mail | olk mail send --to [email protected] --subject "Hi" --body "Hello" |
| Draft a reply-all with an extra Cc | olk mail reply <ID> --reply-all --draft --body "$(cat reply.txt)" --cc [email protected] |
| Draft HTML with an inline image | olk mail drafts create --to [email protected] --subject "Steps" --html --body '<img src="cid:steps">' --inline steps=steps.png |
| Synchronize changes | olk changes --json |
| Use JSON for scripts | olk mail list --json --results-only |
| Use as an MCP server | olk 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:
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 [email protected] --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.
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-inputfor 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-untrustedfor 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
- Command reference
- Authentication and accounts
- Scripting and synchronization
- MCP and AI agents
- Security and privacy
- Enterprise app setup
- Development and releases
- Agent instructions
Contributing
make build
make test
make lint
See development and releases for repository structure, validation, CI, and publishing details.
License
See LICENSE.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.