Skip to main content
Glama
dhtim135

outlook-mcp-server

by dhtim135

outlook-mcp-server

A lightweight Model Context Protocol (MCP) server for personal Microsoft Outlook / Hotmail accounts. It connects Claude (or any MCP-compatible AI) to your inbox via the Microsoft Graph API, using OAuth 2.0 device-code flow — no service account or admin consent required.

Tools

Tool

Parameters

Description

search_emails

query, max_results

Search your inbox using KQL (Keyword Query Language). Supports filtering by sender, subject, date, attachment presence, and more.

read_email

message_id

Fetch the full body (plain text + HTML) and headers of a specific email.

list_attachments

message_id

List all attachments on an email, including their IDs, names, sizes, and content types.

download_attachment

message_id, attachment_id, save_path

Download an attachment and save it to a local file path.

mark_as_read

message_id, read

Mark an email as read or unread.

move_email

message_id, folder

Move an email to a folder by well-known name (e.g. inbox, deleteditems, archive) or folder ID.

These tools compose naturally for email-automation workflows — for example: search by sender → read body → download attachments → mark read → move to archive.

Setup

1. Azure App Registration (one-time)

Personal Microsoft accounts still require an Azure App Registration to call Graph.

  1. Go to https://portal.azure.comMicrosoft Entra IDApp registrationsNew registration.

  2. Name: outlook-mcp-server (or anything).

  3. Supported account types: choose "Personal Microsoft accounts only".

  4. Redirect URI: leave blank for now.

  5. After creation, copy the Application (client) ID — this is your OUTLOOK_MCP_CLIENT_ID.

  6. Open Authentication → enable "Allow public client flows" = Yes → Save.

  7. Open API permissionsAdd a permissionMicrosoft GraphDelegated permissions → check Mail.ReadWriteAdd. (No admin consent needed for personal accounts.)

2. Install

git clone https://github.com/dhtim135/outlook-mcp-server
cd outlook-mcp-server
uv sync

3. Authenticate (one-time)

export OUTLOOK_MCP_CLIENT_ID="<your-client-id>"
uv run python login.py

Follow the device code prompt — visit the URL in any browser, enter the code, sign in with your Hotmail/Outlook.com account, and approve the Mail.ReadWrite permission.

The token is cached at ~/.config/outlook-mcp/token-cache.json (mode 0600). Refresh tokens are rotated automatically as long as the server is used at least every ~90 days.

4. Register with Claude Code

claude mcp add outlook \
  --env OUTLOOK_MCP_CLIENT_ID="<your-client-id>" \
  -- uv --directory /path/to/outlook-mcp-server run python server.py

Or add manually to your MCP config:

{
  "mcpServers": {
    "outlook": {
      "command": "uv",
      "args": [
        "--directory", "/path/to/outlook-mcp-server",
        "run", "python", "server.py"
      ],
      "env": {
        "OUTLOOK_MCP_CLIENT_ID": "<your-client-id>"
      }
    }
  }
}

KQL search examples

from:amazon.com
subject:invoice
from:receipts@uber.com received>=2026-01-01
hasattachment:yes from:doordash.com

Multiple terms are AND-ed. Quote phrases with spaces.

Re-authentication

If you see Token refresh failed, just re-run uv run python login.py.

Install Server
F
license - not found
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dhtim135/outlook-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server