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 Serversend an email to Mike about the budget and CC my manager"
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 for Microsoft Outlook integration that provides comprehensive email, contact, calendar, and folder management capabilities through the Microsoft Graph API.
๐ Quick Start
Prerequisites
Python 3.8 or higher
uv package manager
Microsoft Graph API access via Nango
Valid Outlook/Microsoft 365 account
Installation
Clone and setup:
git clone <repository-url> cd outlook-mcp uv install -e .Configure environment variables: Create a
.envfile or set these environment variables:NANGO_CONNECTION_ID=your_connection_id NANGO_INTEGRATION_ID=your_integration_id NANGO_BASE_URL=your_nango_base_url NANGO_SECRET_KEY=your_secret_keyTest the server:
uv run python outlook_mcp_server.py --help
๐ง MCP Client Configuration
Claude Desktop Configuration
Add this to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%/Claude/claude_desktop_config.json on Windows):
Other MCP Clients
For other MCP clients, use:
Command:
uvArgs:
["run", "python", "outlook_mcp_server.py"]Working Directory: Path to the outlook-mcp directory
Transport: stdio
Environment: Set the required Nango variables
๐ง Available Tools (26 Total)
Email Management (6 tools)
send_email- Send emails with TO/CC/BCC, HTML/text content, attachmentscreate_draft_email- Create draft emails for later editingsend_draft_email- Send existing draft emailsget_draft_emails- Retrieve all draft emailsupdate_draft_email- Modify existing draft emailsdelete_draft_email- Remove draft emails
Contact Management (5 tools)
create_contact- Add new contacts with full detailsget_all_contacts- Retrieve all contactsget_contact_details- Get specific contact informationupdate_contact- Modify existing contact detailsdelete_contact- Remove contacts
Calendar Management (9 tools)
get_all_calendars- List all calendarsget_calendar_details- Get specific calendar informationcreate_calendar- Create new calendars with custom colorsupdate_calendar- Modify calendar propertiesdelete_calendar- Remove calendarsget_all_events- Retrieve events from calendarsget_event_details- Get specific event informationcreate_event- Schedule new events with attendeesdelete_event- Remove calendar events
Folder Management (6 tools)
get_all_folders- List all mail foldersget_folder_details- Get specific folder informationcreate_folder- Create new mail folders (with nesting)update_folder- Rename foldersdelete_folder- Remove foldersget_many_folders- Batch retrieve multiple folders
๐ก Usage Examples
Send an Email
Create a Contact
Schedule a Meeting
๐๏ธ Project Structure
๐ Security & Authentication
This server uses Nango for secure Microsoft Graph API authentication:
No direct credential storage - All auth handled by Nango
Token management - Automatic token refresh and management
Secure communication - HTTPS-only API communication
Environment-based config - Sensitive data in environment variables
๐ Troubleshooting
Common Issues
"Missing environment variables"
Ensure all 4 Nango variables are set in your Claude configuration
Check
.envfile exists and is properly formatted for local development
"Connection failed"
Verify Nango integration is active
Check internet connectivity
Validate Nango credentials
"Tool execution failed"
Check Microsoft Graph API permissions
Verify Outlook account has necessary access
Review error messages in Claude Desktop logs
"uv command not found"
Install uv:
curl -LsSf https://astral.sh/uv/install.sh | shOr via pip:
pip install uv
Debug Mode
For local development, run with verbose output:
Testing Connection
๐งช Development & Testing
Local Development
Install in development mode:
uv install -e .Run tests:
uv run pytest tests/Check tool functionality:
uv run python -c "from outlook_mcp.tools.email import get_draft_emails; print(get_draft_emails())"
Creating Custom Tools
Add your tool function to the appropriate module in
tools/Update the server's tool list in
server.pyAdd proper input schema validation
Test with MCP client
๐ Requirements
Python 3.8+
uv >= 0.1.0 - Fast Python package installer and resolver
mcp >= 1.0.0 - Model Context Protocol library
requests >= 2.32.4 - HTTP client
python-dotenv >= 1.1.1 - Environment variable management
๐ค Contributing
Fork the repository
Create a feature branch:
git checkout -b feature/new-toolMake your changes with tests
Submit a pull request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Related Links
๐ Support
For issues and questions:
Check the troubleshooting section above
Review the GitHub issues
Create a new issue with detailed information
Built with โค๏ธ for seamless Outlook integration via MCP