Microsoft 365 Mail runs on your own machine — the client starts it, so there is no endpoint to ping. 63 installs a week from npm. Last commit 2 Nov 2026.
Microsoft 365 Outlook mail via Graph: read, search, send, reply, forward, draft, move, delete.
We read the source, 22 h ago · rules 995398eba69f
A value the model can set ends up inside a file or shell call. That is not a flaw by itself — for a terminal server it is the job — but it is where things go wrong when it is not.
fs.writeFileSync(outFd, pdfBuffer);
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
const fullPath = path.join(stagingDir, filename);
const child = spawn(process.execPath, [script], {
if (isUnder(resolvedAbs, sshDir)) return { hit: true, reason: '~/.ssh/** is sensitive' };
<script src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
const entries = fs.readdirSync(workspacePath, { withFileTypes: true });
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
That is not a flaw by itself — but it is where things go wrong when it is not the job. We re-read this code on every release. Watch it and you hear from us the day another one appears.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add mcp-server-microsoft-mail -e 'MS_CLIENT_ID=<MS_CLIENT_ID>' -e 'MS_CONFIG_DIR=<MS_CONFIG_DIR>' -- npx -y @mindstone/mcp-server-microsoft-mail
{
"mcpServers": {
"mcp-server-microsoft-mail": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-mail"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>"
}
}
}
}
[mcp_servers.mcp-server-microsoft-mail]
command = "npx"
args = ["-y", "@mindstone/mcp-server-microsoft-mail"]
env = { MS_CLIENT_ID = "<MS_CLIENT_ID>", MS_CONFIG_DIR = "<MS_CONFIG_DIR>" }
{
"mcpServers": {
"mcp-server-microsoft-mail": {
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-mail"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>"
}
}
}
}
{
"servers": {
"mcp-server-microsoft-mail": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@mindstone/mcp-server-microsoft-mail"
],
"env": {
"MS_CLIENT_ID": "<MS_CLIENT_ID>",
"MS_CONFIG_DIR": "<MS_CONFIG_DIR>"
}
}
}
}
Put your own values in place of
<MS_CLIENT_ID> (Microsoft Entra (Azure AD) application client ID), <MS_CONFIG_DIR> (Path to the per-user Microsoft config directory (credentials/, accounts.json)).
The author’s registry entry marks them as required.
Optional settings from the registry entry, left out of the block above:
MS_ACCOUNT_EMAIL (Account email when running in multi-account per-instance mode (falls back to the first account in accounts.json)), MS_MCP_PACKAGE_ID (Logical package ID surfaced in error responses), MICROSOFT_REQUEST_TIMEOUT_MS (Override the upstream Microsoft Graph request timeout in milliseconds (max 300000 = 5 min)), MCP_WORKSPACE_PATH (Workspace root where download_attachment saves files (falls back to the OS temp directory when unset)).
Outlook mail and OneDrive files via Microsoft Graph — read, search, send and organize.
Microsoft Outlook (mail) MCP server — read, search, and send email through Microsoft Graph.
Personal Outlook.com / Hotmail inbox: read, search, file, delete, unsubscribe via Microsoft Graph.
Read, search, send and clean up Outlook.com / Hotmail mail through Microsoft Graph.
Microsoft 365 mail MCP: reads mail, drafts into Outlook; sending is opt-in (IRIS_ENABLE_SEND).
MCP server for Microsoft Graph: Outlook mail and calendar, plus read-only Microsoft Teams
Microsoft 365 Outlook calendar via Graph: list, get, create, update, respond, free/busy.
A MCP server for Outlook email that lets you search, read, and draft emails and replies.
Answers built from our own checks of this server.