Outlook Email 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 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 |
Related MCP server: M365 MCP
Yêu cầu
Python 3.11 trở lên
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.Readoffline_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)
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 chưa có
pip install uv
# Cài dependencies
uv syncCách 2: Dùng pip thông thường
pip install "mcp[cli]" msal httpx python-dotenv html2textBướ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
│ ├── folder_utils.py
│ └── __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/với các file tương tựmail/Viết
calendar/__init__.pyvới hàmregister_calendar_tools(mcp)Thêm vào
server.py:from calendar import register_calendar_tools register_calendar_tools(mcp)
Không cần thay đổi bất kỳ file nào khác.
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
- 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