mcp-outlook
Click on "Deploy 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., "@mcp-outlooksearch my emails for 'invoice' and show the latest one"
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.
mcp-outlook
A lightweight MCP server for personal Outlook/Hotmail/Live accounts, using the Microsoft Graph API directly. The official Outlook MCP server only supports work/school (Azure AD) accounts, this one is for everyone else.
Tools: list_emails, search_emails, read_email, delete_emails (batch
delete, requires explicit confirmation), list_folders, create_folder,
move_emails (batch-file emails into folders, requires explicit confirmation).
1. Register an Azure app (one-time setup)
Go to https://portal.azure.com → Azure Active Directory → App registrations → New registration.
Name it anything, e.g. "Personal Outlook MCP".
Under "Supported account types", choose "Personal Microsoft accounts only".
Leave "Redirect URI" blank.
After creation, copy the Application (client) ID from the app overview page.
Go to Authentication → scroll to "Advanced settings" → set "Allow public client flows" to Yes, then save.
Go to API permissions → Add a permission → Microsoft Graph → Delegated permissions → add
Mail.Read,Mail.ReadWrite,offline_access.
Related MCP server: Outlook MCP Server
2. Configure
npm install
cp config.example.json config.jsonEdit config.json and paste in your client ID:
{ "clientId": "your-client-id-here" }3. Run
npm startOn first run, the terminal prints a code and a URL
(https://microsoft.com/devicelogin). Open the URL on any device, enter the
code, and sign in with your personal Microsoft account. A token-cache.json
file is created afterward so you won't need to log in again until the
refresh token expires.
4. Connect it to an MCP client
Point your MCP client (e.g. Claude Desktop) at this server by adding it to
its config, using the full path to src/index.js on your machine:
{
"mcpServers": {
"outlook": {
"command": "node",
"args": ["/absolute/path/to/mcp-outlook/src/index.js"]
}
}
}How it works
MCP client (e.g. Claude) ──stdio──▶ src/index.js ──▶ tools/*.js ──▶ graphClient.js ──▶ Microsoft Graph API
│
auth.js (device code login, token refresh)auth.js— logs in with the OAuth 2.0 device code flow (no local redirect server needed) and caches the access/refresh token intoken-cache.json, refreshing it automatically.graphClient.js— one sharedfetchwrapper that adds the auth header and a request timeout, used by every tool.tools/*.js— one file per MCP tool, each exporting{ name, config, handler };index.jsjust registers all of them.
Development
npm testRuns the unit tests (Node's built-in test runner, no extra dependencies) — also wired up in GitHub Actions on every push.
Limitations
Single user, local only. It's built to run as one person's local MCP server (like Claude Desktop spawning it), not a multi-tenant service — the token cache is a plain file, not per-user.
delete_emailsmoves to Deleted Items, matching a normal Outlook delete — not a permanent purge.No automatic retry for Microsoft Graph rate limiting (HTTP 429). If you hit it deleting very large batches, split the request into smaller ones.
Notes
config.jsonandtoken-cache.jsonhold secrets and are gitignored — never commit them.delete_emailstakes a list of message IDs, moves them to Deleted Items (like a normal Outlook delete) in batches of up to 20 per Graph API call, and only runs if called withconfirm: true. It uses Graph'smoveaction rather than theDELETEverb —DELETE /me/messages/{id}skips Deleted Items entirely and drops the message straight into the hidden "Recoverable Items" folder, which isn't visible in Outlook.list_emailsandsearch_emailsreturn up tolimitemails per call plus anextLink. Pass thatnextLinkback into the same tool to get the next page; it'snullonce there are no more results.Organizing mail by folder.
list_foldersshows the folder tree (passparentFolderIdfor subfolders);create_foldermakes a category folder (nest it withparentFolderId);move_emailsfiles a batch of messages into a folder named by a well-known name (archive,inbox, ...), a folder id, or an exact display name —createIfMissing: truecreates a top-level folder if the name doesn't resolve.move_emailsneedsconfirm: true. Moving a message gives it a new id, so each result row mapsoldMessageId→newMessageId; discard any ids you cached before the move. Moves batch 20 per Graph call with no automatic retry on rate limiting (429) — same asdelete_emails.
Troubleshooting
A tool call hangs forever with no error, especially after working once: This is usually Claude Desktop's own permission dialog, not this server. If you clicked "Allow once" instead of "Always allow" for a tool, Claude Desktop is supposed to ask again once that permission expires — but it can silently hang instead of re-prompting. Fix: click "Always allow" for this server's tools (especially
delete_emails) instead of "Allow once".To see what the server itself is doing (or confirm a hang never even reached it), check Claude Desktop's log for this server:
%LOCALAPPDATA%\Claude\Logs\mcp-server-outlook.logon Windows. Every Graph API call and response is logged there with a timestamp.
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Manage Microsoft 365 email, calendar, contacts and inbox rules via the Graph API with OAuth 2.0.
Permissioned access to Outlook, OneDrive and Teams via the user's own Microsoft account
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Outlook email through Microsoft Graph API. Supports email management operations like reading, searching, marking as read/unread, and deleting messages through natural language.170 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables reading, sending, and managing Microsoft 365/Outlook emails through MCP tools with OAuth 2.1 authentication.170 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server providing full control over Outlook.com, Hotmail, Live, or Microsoft 365 email via Microsoft Graph API, enabling reading, searching, sending, and managing messages and folders securely.1MIT
- FlicenseAqualityCmaintenanceLets MCP clients read and search mail, manage calendars and events, and check availability for personal Microsoft accounts, with per-account delegated authentication and human approval for sensitive writes.22-