A clean, functional Model Context Protocol (MCP) server for Microsoft Outlook integration with Claude.
- ✅ Send Emails - Send emails through your Outlook account
- ✅ List Emails - Retrieve emails from your inbox or other folders
- ✅ Search Emails - Search emails by criteria (sender, date, content)
- ✅ Read Emails - Get full email content by ID
- ✅ OAuth Authentication - Secure Microsoft Graph API authentication
- ✅ Simple Setup - Minimal configuration required
- Node.js (v18 or higher)
- Microsoft Azure App Registration (for Graph API access)
cd /Users/ricardozhang/Desktop/AI_Agents/simple-outlook-mcp
npm install- Go to Azure Portal
- Navigate to Azure Active Directory > App registrations
- Click New registration
- Fill in:
- Name:
Claude Outlook MCP - Supported account types: Accounts in any organizational directory and personal Microsoft accounts
- Redirect URI: Web -
http://localhost:3000/auth/callback
- Name:
- Click Register
- Note down the Application (client) ID and Directory (tenant) ID
- Go to Certificates & secrets > New client secret
- Create a secret and note down the Value
- Go to API permissions > Add a permission > Microsoft Graph > Delegated permissions
- Add these permissions:
Mail.ReadWriteMail.Send
- Click Grant admin consent (if you're an admin)
cp .env.example .envEdit .env with your Azure app details:
MICROSOFT_CLIENT_ID=your_client_id_here
MICROSOFT_CLIENT_SECRET=your_client_secret_here
MICROSOFT_TENANT_ID=your_tenant_id_herenpm run buildnpm startStart the OAuth flow to authenticate with Microsoft Graph API.
Send an email through Outlook.
- to: Recipient email address (required)
- subject: Email subject (required)
- body: Email body content (required)
- cc: CC recipients (optional)
- bcc: BCC recipients (optional)
List recent emails from your inbox.
- limit: Number of emails to retrieve (default: 10)
- folder: Folder to search in (default: "inbox")
Search emails by criteria.
- query: Search query string
- from: Filter by sender email
- date_from: Filter emails from this date (YYYY-MM-DD)
- date_to: Filter emails until this date (YYYY-MM-DD)
- limit: Number of emails to retrieve (default: 10)
Read a specific email by ID.
- email_id: Email message ID (required)
Add this server to your Claude Desktop configuration file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"simple-outlook-mcp": {
"command": "node",
"args": ["/Users/ricardozhang/Desktop/AI_Agents/simple-outlook-mcp/build/index.js"],
"env": {
"MICROSOFT_CLIENT_ID": "your_client_id",
"MICROSOFT_CLIENT_SECRET": "your_client_secret",
"MICROSOFT_TENANT_ID": "your_tenant_id"
}
}
}
}-
Authenticate:
Please authenticate with Outlook -
Send an email:
Send an email to john@example.com with subject "Meeting Tomorrow" and body "Hi John, let's meet at 2 PM tomorrow." -
List recent emails:
Show me my last 5 emails -
Search emails:
Find emails from alice@example.com from the last week
- Ensure your Azure app has the correct permissions
- Check that the redirect URI matches exactly:
http://localhost:3000/auth/callback - Verify your client ID, secret, and tenant ID are correct
- Make sure you're using Node.js v18 or higher
- Run
npm installto ensure all dependencies are installed - Check that TypeScript compiles without errors:
npm run build
- Ensure the Azure app has
Mail.ReadWriteandMail.Sendpermissions - Admin consent may be required for organizational accounts
# Watch mode for development
npm run watch
# Build only
npm run build
# Start after build
npm startMIT License - see LICENSE file for details.