Outlook Email MCP Server
This server integrates Microsoft 365/Outlook email and SharePoint Excel capabilities into Claude Desktop via the Microsoft Graph API, enabling the following:
Authentication & Session Management
auth_login– Start login using Device Code Flowauth_confirm– Complete login after browser authenticationauth_status– Check current login statusauth_logout– Log out and clear saved tokens
Reading & Searching Emails
list_emails– List emails in a folder (inbox, drafts, sent, deleted, junk, archive, or custom) with a configurable limitread_email– Read the full content of an email by ID, with an option to mark it as readsearch_emails– Search emails by keyword (KQL), sender, subject, unread status, or attachment presence
Drafts Management
create_draft– Create a new draft with recipients (To/CC/BCC), subject, body, and importancelist_drafts– List all existing draftsupdate_draft– Update a draft's subject, body, or recipientsdelete_draft– Permanently delete a draftsend_draft– Send an existing draft
Sending Emails
send_email– Compose and send an email immediately (plain text or HTML), without saving as a draft
Email Management
mark_email_as_read– Mark an email as read or unread
Attachments
list_attachments– List all attachments for a given emailread_attachment– Read attachment content; supports txt, csv, json, html, xml, md, xlsx, pdf, and docx formats
SharePoint Integration
read_sharepoint_excel– Read an Excel (.xlsx) file from a SharePoint Online URL, with options for sheet name and max rows
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 Email MCP ServerList my unread emails from inbox"
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 Email MCP Server
MCP Server cho Claude Desktop để đọc và quản lý email Microsoft 365 / Outlook qua Microsoft Graph API.
Tính năng
Tool | Mô tả |
| Bắt đầu đăng nhập — trả về URL và mã xác thực |
| Hoàn tất đăng nhập sau khi xác thực trong browser |
| Kiểm tra trạng thái đăng nhập hiện tại |
| Đăng xuất, xóa token đã lưu |
| Liệt kê email theo folder |
| Đọc nội dung đầy đủ một email |
| Tìm kiếm email với nhiều điều kiện |
| Tạo email nháp mới |
| Liệt kê tất cả email nháp |
| Sửa nội dung email nháp |
| Xóa email nháp |
| Gửi email nháp đã tạo |
| Soạn và gửi email ngay |
| Đánh dấu email đã đọc / chưa đọc |
| Liệt kê file đính kèm của một email |
| Đọc nội dung file đính kèm (text/xlsx/pdf/docx/ảnh) |
| Đọc nội dung file Excel từ SharePoint Online |
| Đọc file Excel từ SharePoint, chỉ lấy các dòng khớp filter |
Related MCP server: outlook-mcp-server
Yêu cầu
Python 3.11 trở lên (nếu dùng
uvở Bước 3 - Cách 1, không cần cài Python trước —uvtự tải)Tài khoản Microsoft 365 hoặc Outlook.com
Quyền truy cập Azure Portal (để đăng ký app)
Hướng dẫn cài đặt
Bước 1: Tải source code
Tải hoặc clone repo này về máy, ví dụ vào thư mục:
C:\Projects\mcp-server\Ghi nhớ đường dẫn này — bạn sẽ dùng ở Bước 4.
Bước 2: Đăng ký Azure App
Bước này chỉ làm một lần duy nhất. Nếu đã có
AZURE_CLIENT_ID, bỏ qua.
Truy cập portal.azure.com và đăng nhập
Tìm "App registrations" → nhấn "New registration"
Điền thông tin:
Name:
M365 MCP Server(hoặc tên bất kỳ)Supported account types: chọn theo nhu cầu:
Accounts in any organizational directory and personal Microsoft accounts— nếu muốn dùng cả tài khoản cá nhân lẫn tổ chứcAccounts in this organizational directory only— nếu chỉ dùng trong nội bộ tổ chức
Redirect URI: để trống
Nhấn Register
Sau khi tạo xong, copy Application (client) ID — đây là
AZURE_CLIENT_ID
Cấp quyền API
Vào tab "API permissions" → "Add a permission" → "Microsoft Graph" → "Delegated permissions"
Tìm và thêm các quyền sau:
Mail.ReadMail.ReadWriteMail.SendUser.ReadSites.Read.All— cần choread_sharepoint_excel/filter_sharepoint_excelFiles.Read.All— cần choread_sharepoint_excel/filter_sharepoint_exceloffline_access
Nhấn "Grant admin consent for [tên tổ chức]" nếu bạn là admin (tùy chọn — xem phần Troubleshooting nếu không có quyền này)
Nếu app đã tạo trước đó và chỉ có 4 quyền đầu, quay lại "API permissions" để bổ sung
Sites.Read.All/Files.Read.All, nếu không 2 tool SharePoint sẽ báo lỗi 403.
Bật Device Code Flow
Vào tab "Authentication"
Kéo xuống phần "Advanced settings"
Bật "Allow public client flows" → Yes
Nhấn Save
Bước 3: Cài đặt dependencies
Mở terminal, điều hướng vào thư mục project:
cd "C:\Projects\mcp-server"Cách 1: Dùng uv (Khuyên dùng — tự quản lý virtual env)
Cài uv (nếu máy chưa có):
Windows (PowerShell):
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"macOS / Linux:
curl -LsSf https://astral.sh/uv/install.sh | shHoặc nếu máy đã có sẵn Python + pip:
pip install uvSau khi cài xong, đóng và mở lại terminal để PATH được cập nhật, rồi kiểm tra bằng
uv --version.uvtự quản lý phiên bản Python — không cần cài Python 3.11 riêng,uv syncbên dưới sẽ tự tải nếu máy chưa có.
Cài dependencies:
uv syncCách 2: Dùng pip thông thường
pip install "mcp[cli]" msal httpx python-dotenv html2text openpyxl pypdf python-docxBước 4: Tạo file .env
Trong thư mục project, copy file mẫu:
# Windows
copy .env.example .env
# macOS / Linux
cp .env.example .envMở file .env và điền AZURE_CLIENT_ID lấy từ Bước 2:
AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_TENANT_ID=commonGiá trị AZURE_TENANT_ID:
Giá trị | Dùng khi |
| Tài khoản cá nhân (Outlook.com) hoặc hỗn hợp |
| Chỉ tài khoản tổ chức (work/school) |
| Giới hạn đúng một tổ chức cụ thể |
Bước 5: Cấu hình Claude Desktop
Mở file cấu hình Claude Desktop:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Thêm vào trong mcpServers (thay đường dẫn bằng đường dẫn thực tế trên máy bạn):
Cách 1: Dùng uv (Khuyên dùng)
{
"mcpServers": {
"outlook-email": {
"command": "uv",
"args": [
"--directory",
"C:\\Projects\\mcp-server",
"run",
"server.py"
]
}
}
}Cách 2: Dùng python trực tiếp
{
"mcpServers": {
"outlook-email": {
"command": "python",
"args": [
"C:\\Projects\\mcp-server\\server.py"
]
}
}
}Lưu ý Windows: Dùng
\\thay vì\trong đường dẫn JSON.
Restart Claude Desktop sau khi lưu file config.
Bước 6: Đăng nhập lần đầu
Sau khi restart Claude Desktop:
Mở cuộc trò chuyện mới
Kiểm tra biểu tượng MCP tools xuất hiện (icon công cụ)
Yêu cầu Claude gọi tool
auth_login:"Hãy đăng nhập vào Outlook email cho tôi"
Claude sẽ trả về URL và mã xác thực ngay trong chat, ví dụ:
1. Mở trình duyệt và truy cập: https://login.microsoft.com/device 2. Nhập mã xác thực: ABCD1234 3. Đăng nhập bằng tài khoản Microsoft của bạn 4. Sau khi xác thực xong, gọi auth_confirmThực hiện theo hướng dẫn trong chat, sau đó yêu cầu Claude gọi
auth_confirm:"Tôi đã xác thực xong, hãy xác nhận đăng nhập"
Claude thông báo đăng nhập thành công.
Token được lưu tại
~/.outlook-mcp-tokens.jsonvà tự động refresh — có hiệu lực 90 ngày.
Sử dụng
Sau khi đăng nhập, bạn có thể dùng ngôn ngữ tự nhiên:
"Kiểm tra xem tôi đã đăng nhập chưa"
"Liệt kê 10 email mới nhất trong inbox"
"Tìm email từ boss@company.com"
"Tạo email nháp gửi cho colleague@company.com với tiêu đề Meeting tomorrow"
"Gửi email cho client@example.com nội dung cảm ơn hợp tác"
"Đánh dấu email vừa đọc là chưa đọc"Troubleshooting
"Need admin approval" khi đăng nhập
Tài khoản tổ chức (work/school) yêu cầu admin của tổ chức phải grant consent cho app.
Nếu bạn là admin:
Azure Portal → Enterprise Applications → tìm app → Permissions → Grant admin consent
Nếu bạn không phải admin:
Nhờ IT admin của tổ chức vào Azure Portal, tìm app theo tên, và grant consent
Hoặc admin nhấn "Have an admin account? Sign in with that account" ngay trên màn hình lỗi
Giới hạn người dùng (tùy chọn cho admin):
Azure Portal → Enterprise Applications → tên app → Properties → bật "Assignment required"
Sau đó vào Users and groups → chỉ add những người được phép dùng
MCP server không xuất hiện trong Claude Desktop
Kiểm tra đường dẫn trong
claude_desktop_config.jsoncó đúng khôngĐảm bảo đã restart Claude Desktop hoàn toàn (thoát hẳn, không chỉ đóng cửa sổ)
Chạy thử
python server.pytrong terminal để kiểm tra lỗi
Lỗi sau khi gọi auth_confirm
Đảm bảo bạn đã hoàn thành xác thực trên browser trước khi gọi
auth_confirmMã xác thực hết hạn sau ~15 phút — nếu quá thời gian, gọi lại
auth_loginđể lấy mã mới
Token hết hạn
Token tự động refresh. Nếu bị lỗi xác thực sau 90 ngày, gọi lại auth_login để đăng nhập mới.
Cấu trúc dự án
mcp-server/
├── server.py # Entry point
├── config.py # Cấu hình và constants
├── pyproject.toml # Dependencies
├── .env # Biến môi trường (KHÔNG commit file này)
├── .env.example # File mẫu
├── auth/ # Xác thực Microsoft
│ ├── device_flow.py # MSAL Device Code Flow
│ ├── token_cache.py # Lưu trữ token
│ ├── tools.py # MCP tools: login/confirm/status/logout
│ └── __init__.py
├── graph/ # Microsoft Graph API client
│ ├── client.py # HTTP client, pagination
│ └── __init__.py
├── mail/ # Email operations
│ ├── list_emails.py
│ ├── read_email.py
│ ├── search_emails.py
│ ├── drafts.py # create/list/update/delete/send draft
│ ├── send_email.py
│ ├── mark_as_read.py
│ ├── attachments.py # list_attachments, read_attachment
│ ├── folder_utils.py
│ └── __init__.py
├── sharepoint/ # Đọc file Excel từ SharePoint Online
│ ├── read_excel.py
│ ├── filter_excel.py
│ ├── excel_common.py # helper resolve URL / download / parse JSON dùng chung
│ └── __init__.py
└── utils/ # Tiện ích dùng chung
├── html_sanitizer.py
└── formatting.pyMở rộng
Để thêm tính năng mới (ví dụ Calendar):
Tạo thư mục
calendar_tools/với các file tương tựmail/(không đặt têncalendar/— trùng tên module chuẩn của Python, sẽ gây lỗi import)Viết
calendar_tools/__init__.pyvới hàmregister_calendar_tools(mcp)Thêm vào
server.py:from calendar_tools import register_calendar_tools register_calendar_tools(mcp)Thêm package vào
pyproject.toml→[tool.hatch.build.targets.wheel] packages
Không cần thay đổi file nào khác.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCquality-maintenanceAn MCP server that enables interaction with Microsoft 365 services like Outlook, OneDrive, Teams, and SharePoint via the Microsoft Graph API. It supports comprehensive operations including email management, file access, and organizational collaboration for personal and work accounts.Last updated78
- FlicenseAqualityCmaintenanceA lightweight MCP server for personal Microsoft Outlook/Hotmail accounts, enabling email search, reading, attachment management, and folder operations via Microsoft Graph API with OAuth device-code flow.Last updated61
- AlicenseAqualityAmaintenanceMCP server that provides 62 tools to manage Outlook mail, calendar, contacts, and tasks for personal Microsoft accounts via Microsoft Graph API.Last updated6222MIT
- Alicense-qualityDmaintenanceA Python-based MCP server for Microsoft 365 Outlook email operations using OAuth 2.0 Client Credentials Flow, enabling automated email management for autonomous agents.Last updatedMIT
Related MCP Connectors
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Outlook Mail (Microsoft 365) MCP Pack
Hosted email MCP for AI agents with inboxes, send/receive, memory, recovery, and credits.
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/nhatho0001/M365-MCP-Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server