Outlook MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Outlook MCP ServerShow me my unread emails from today"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Outlook MCP Server
A Model Context Protocol (MCP) server that gives AI assistants (Claude, Cursor, etc.) full access to your Microsoft Outlook — emails, calendar, and contacts — via the Microsoft Graph API.
Features
Category | Operations |
List, read, search, send, reply, reply-all, forward, create draft, send draft, delete, move, mark read/unread, flag | |
Mail Folders | List folders, create folder |
Calendar | List calendars, list events (with date range), get event, search, create, update, delete, accept/decline/tentative |
Contacts | List, get, search, create, update, delete, list folders |
Auth | Device code flow with persistent token cache, sign out |
Related MCP server: Microsoft MCP
Prerequisites
Node.js 18+ (tested with v22)
A Microsoft 365 or Outlook account
An Azure AD (Entra ID) app registration (free, takes ~5 minutes)
Step 1: Register an Azure AD Application
Go to the Azure Portal → Microsoft Entra ID → App registrations → New registration
Fill in:
Name:
Outlook MCP(or any name)Supported account types: Choose based on your setup:
Personal Microsoft accounts only → for @outlook.com / @hotmail.com
Accounts in any organizational directory and personal accounts → for work + personal
Redirect URI: Leave blank (we use device code flow)
Click Register. Copy the Application (client) ID — this is your
OUTLOOK_CLIENT_ID.Copy the Directory (tenant) ID if you're using a work/school account — this is your
OUTLOOK_TENANT_ID. For personal accounts useconsumers.Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions. Add:
Mail.ReadWriteMail.SendCalendars.ReadWriteContacts.ReadWriteMailboxSettings.ReadWriteUser.Readoffline_access
Click Grant admin consent (if you're an admin) or ask your admin to do so.
Go to Authentication → Enable Allow public client flows → Yes → Save.
Step 2: Build the Server
cd outlook-mcp
npm install
npm run buildStep 3: Configure in Cursor (or Claude Desktop)
Cursor
Add to your Cursor MCP config (~/.cursor/mcp.json or via Settings → MCP):
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/absolute/path/to/outlook-mcp/dist/index.js"],
"env": {
"OUTLOOK_CLIENT_ID": "YOUR_CLIENT_ID_HERE",
"OUTLOOK_TENANT_ID": "common"
}
}
}
}Use
"common"for multi-tenant,"consumers"for personal accounts (@outlook.com / @hotmail.com), or your specific tenant ID for work/school accounts.
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/absolute/path/to/outlook-mcp/dist/index.js"],
"env": {
"OUTLOOK_CLIENT_ID": "YOUR_CLIENT_ID_HERE",
"OUTLOOK_TENANT_ID": "common"
}
}
}
}Step 4: First-Time Authentication
The first time a tool is called, the server uses Device Code Flow:
A message will appear in the MCP client (or stderr) like:
To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code ABCD1234 to authenticate.Open that URL in your browser, enter the code, and sign in with your Microsoft account.
The token is cached at
~/.outlook-mcp-token-cache.json(permissions 600) and refreshed automatically.You won't need to authenticate again until the refresh token expires (~90 days of inactivity).
Available Tools
Auth
Tool | Description |
| Get your account name, email, and mailbox settings |
| Clear cached tokens |
Tool | Key Parameters |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| — |
|
|
Calendar
Tool | Key Parameters |
| — |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Contacts
Tool | Key Parameters |
|
|
|
|
|
|
|
|
|
|
|
|
| — |
Development
# Run directly with tsx (no build step)
OUTLOOK_CLIENT_ID=xxx npm run dev
# Rebuild after changes
npm run buildTroubleshooting
"OUTLOOK_CLIENT_ID environment variable is required" → Make sure you've set the env var in your MCP config.
"AADSTS50011: The redirect URI ... was not found" → Enable Allow public client flows in Azure Portal → App Registration → Authentication.
"Insufficient privileges"
→ Add the missing Graph API permissions and re-grant admin consent. Then run outlook_sign_out and re-authenticate.
Token keeps expiring
→ Make sure offline_access is in your API permissions.
This server cannot be installed
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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/wesleyclarkgit/outlook-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server