@mcp-z/mcp-outlook
    Preparing search index...

    @mcp-z/mcp-outlook

    @mcp-z/mcp-outlook

    Docs: https://mcp-z.github.io/mcp-outlook Outlook MCP server for searching, reading, and sending Microsoft 365 mail.

    • Search and read messages
    • Send and reply to emails
    • Manage categories and export messages to CSV

    MCP supports stdio and HTTP.

    Stdio

    {
    "mcpServers": {
    "outlook": {
    "command": "npx",
    "args": ["-y", "@mcp-z/mcp-outlook"]
    }
    }
    }

    HTTP

    {
    "mcpServers": {
    "outlook": {
    "type": "http",
    "url": "http://localhost:9003/mcp",
    "start": {
    "command": "npx",
    "args": ["-y", "@mcp-z/mcp-outlook", "--port=9003"]
    }
    }
    }
    }

    start is an extension used by npx @mcp-z/cli up to launch HTTP servers for you.

    1. Go to Azure Portal.
    2. Navigate to Azure Active Directory > App registrations.
    3. Click New registration.
    4. Choose a name and select a supported account type.
    5. Copy the Application (client) ID and Directory (tenant) ID.
    6. Select your MCP transport (stdio for local and http for remote) and platform
    1. Enable OAuth2 scopes in API Permissions: openid profile offline_access https://graph.microsoft.com/User.Read https://graph.microsoft.com/Mail.ReadWrite https://graph.microsoft.com/Mail.Send https://graph.microsoft.com/MailboxSettings.ReadWrite

    Configure via environment variables or the env block in .mcp.json. See server.json for the full list of options.

    Environment variables:

    MS_CLIENT_ID=your-client-id
    MS_TENANT_ID=common
    MS_CLIENT_SECRET=your-client-secret

    Example (stdio) - Create .mcp.json:

    {
    "mcpServers": {
    "outlook": {
    "command": "npx",
    "args": ["-y", "@mcp-z/mcp-outlook"],
    "env": {
    "MS_CLIENT_ID": "your-client-id",
    "MS_TENANT_ID": "common"
    }
    }
    }
    }

    Example (http) - Create .mcp.json:

    {
    "mcpServers": {
    "outlook": {
    "type": "http",
    "url": "http://localhost:3000",
    "start": {
    "command": "npx",
    "args": ["-y", "@mcp-z/mcp-outlook", "--port=3000"],
    "env": {
    "MS_CLIENT_ID": "your-client-id",
    "MS_TENANT_ID": "common"
    }
    }
    }
    }
    }

    Local (default): omit REDIRECT_URI → ephemeral loopback. Cloud: set REDIRECT_URI to your public /oauth/callback and expose the service publicly.

    Note: start block is a helper in "npx @mcp-z/cli up" for starting an http server from your .mpc.json. See @mcp-z/cli for details.

    Useful for headless or remote environments.

    {
    "mcpServers": {
    "outlook": {
    "command": "npx",
    "args": ["-y", "@mcp-z/mcp-outlook", "--auth=device-code"],
    "env": {
    "MS_CLIENT_ID": "your-client-id",
    "MS_TENANT_ID": "common"
    }
    }
    }
    }

    HTTP only. Requires a public base URL. CSV export and /files are disabled in DCR mode; resourceStoreUri is ignored.

    {
    "mcpServers": {
    "outlook-dcr": {
    "command": "npx",
    "args": [
    "-y",
    "@mcp-z/mcp-outlook",
    "--auth=dcr",
    "--port=3456",
    "--base-url=https://oauth.example.com"
    ],
    "env": {
    "MS_CLIENT_ID": "your-client-id",
    "MS_TENANT_ID": "common",
    "MS_CLIENT_SECRET": "your-client-secret"
    }
    }
    }
    }
    # List tools
    mcp-z inspect --servers outlook --tools

    # Call a tool
    mcp-z call outlook message-search '{"query":"from:alice@example.com"}'
    1. categories-list
    2. label-add
    3. label-delete
    4. labels-list
    5. message-get
    6. message-mark-read
    7. message-move-to-trash
    8. message-respond
    9. message-search
    10. message-send
    11. messages-export-csv
    1. email
    1. draft-email
    2. query-syntax

    See server.json for all supported environment variables, CLI arguments, and defaults.