freshcrate
Home > MCP Servers > ms-365-mcp-server

ms-365-mcp-server

A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API

Description

A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Office services through the Graph API

README

ms-365-mcp-server

npm version build status license

Microsoft 365 MCP Server

A Model Context Protocol (MCP) server for interacting with Microsoft 365 and Microsoft Office services through the Graph API.

Supported Clouds

This server supports multiple Microsoft cloud environments:

Cloud Description Auth Endpoint Graph API Endpoint
Global (default) International Microsoft 365 login.microsoftonline.com graph.microsoft.com
China (21Vianet) Microsoft 365 operated by 21Vianet login.chinacloudapi.cn microsoftgraph.chinacloudapi.cn

Prerequisites

  • Node.js >= 20 (recommended)
  • Node.js 14+ may work with dependency warnings

Features

  • Authentication via Microsoft Authentication Library (MSAL)
  • Comprehensive Microsoft 365 service integration
  • Read-only mode support for safe operations
  • Tool filtering for granular access control

Output Format: JSON vs TOON

The server supports two output formats that can be configured globally:

JSON Format (Default)

Standard JSON output with pretty-printing:

{
  "value": [
    {
      "id": "1",
      "displayName": "Alice Johnson",
      "mail": "alice@example.com",
      "jobTitle": "Software Engineer"
    }
  ]
}

(experimental) TOON Format

Token-Oriented Object Notation for efficient LLM token usage:

value[1]{id,displayName,mail,jobTitle}:
  "1",Alice Johnson,alice@example.com,Software Engineer

Benefits:

  • 30-60% fewer tokens vs JSON
  • Best for uniform array data (lists of emails, calendar events, files, etc.)
  • Ideal for cost-sensitive applications at scale

Usage: (experimental) Enable TOON format globally:

Via CLI flag:

npx @softeria/ms-365-mcp-server --toon

Via Claude Desktop configuration:

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--toon"]
    }
  }
}

Via environment variable:

MS365_MCP_OUTPUT_FORMAT=toon npx @softeria/ms-365-mcp-server

Supported Services & Tools

The server provides 200+ tools covering most of the Microsoft Graph API surface. Each tool maps 1-to-1 to a Graph API endpoint and is defined declaratively in src/endpoints.json.

Personal Account Tools (Available by default)

Email (Outlook), Calendar, OneDrive Files, Excel, OneNote, To Do Tasks, Planner, Contacts, User Profile, Search

Organization Account Tools (Requires --org-mode flag)

Teams & Chats, Online Meetings, Transcripts & Recordings, Attendance Reports, SharePoint Sites & Lists, Shared Mailboxes & Calendars, User Management, Presence, Virtual Events

Required Graph API Permissions

Permissions are requested dynamically based on which tools are enabled. Use --list-permissions to see the exact permissions for your configuration:

# Personal mode (default)
npx @softeria/ms-365-mcp-server --list-permissions

# Organization mode (includes Teams, SharePoint, etc.)
npx @softeria/ms-365-mcp-server --org-mode --list-permissions

# Filtered by preset
npx @softeria/ms-365-mcp-server --preset mail --list-permissions

This is useful for enterprise environments where Graph API permissions must be pre-approved and admin-consented before deploying a new version.

Organization/Work Mode

To access work/school features (Teams, SharePoint, etc.), enable organization mode using any of these flags:

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
    }
  }
}

Organization mode must be enabled from the start to access work account features. Without this flag, only personal account features (email, calendar, OneDrive, etc.) are available.

Shared Mailbox Access

To access shared mailboxes, you need:

  1. Organization mode: Shared mailbox tools require --org-mode flag (work/school accounts only)
  2. Delegated permissions: Mail.Read.Shared or Mail.Send.Shared scopes
  3. Exchange permissions: The signed-in user must have been granted access to the shared mailbox
  4. Usage: Use the shared mailbox's email address as the user-id parameter in the shared mailbox tools

Finding shared mailboxes: Use the list-users tool to discover available users and shared mailboxes in your organization.

Example: list-shared-mailbox-messages with user-id set to shared-mailbox@company.com

Quick Start Example

Test login in Claude Desktop:

Login example

Examples

Image

Integration

Claude Desktop

To add this MCP server to Claude Desktop, edit the config file under Settings > Developer.

Personal Account (MSA)

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server"]
    }
  }
}

Work/School Account (Global)

{
  "mcpServers": {
    "ms365": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode"]
    }
  }
}

Work/School Account (China 21Vianet)

{
  "mcpServers": {
    "ms365-china": {
      "command": "npx",
      "args": ["-y", "@softeria/ms-365-mcp-server", "--org-mode", "--cloud", "china"]
    }
  }
}

Claude Code CLI

Personal Account (MSA)

claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server

Work/School Account (Global)

# macOS/Linux
claude mcp add ms365 -- npx -y @softeria/ms-365-mcp-server --org-mode

# Windows (use cmd /c wrapper)
claude mcp add ms365 -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode"

Work/School Account (China 21Vianet)

# macOS/Linux
claude mcp add ms365-china -- npx -y @softeria/ms-365-mcp-server --org-mode --cloud china

# Windows (use cmd /c wrapper)
claude mcp add ms365-china -s user -- cmd /c "npx -y @softeria/ms-365-mcp-server --org-mode --cloud china"

For other interfaces that support MCPs, please refer to their respective documentation for the correct integration method.

Open WebUI

Open WebUI supports MCP servers via HTTP transport with OAuth 2.1.

  1. Start the server with HTTP mode:

    npx @softeria/ms-365-mcp-server --http
  2. In Open WebUI, go to Admin Settings β†’ Tools (/admin/settings/tools) β†’ Add Connection:

    • Type: MCP Streamable HTTP
    • URL: Your MCP server URL with /mcp path
    • Auth: OAuth 2.1
  3. Click Register Client.

Note: Dynamic client registration is enabled by default in HTTP mode. Use --no-dynamic-registration to disable it. If using a custom Azure Entra app, add your redirect URI under "Mobile and desktop applications" platform (not "Single-page application").

Quick test setup using the default Azure app (ID ms-365 and localhost:8080 are pre-configured):

docker run -d -p 8080:8080 \
  -e WEBUI_AUTH=false \
  -e OPENAI_API_KEY \
  ghcr.io/open-webui/open-webui:main

npx @softeria/ms-365-mcp-server --http

Then add connection with URL http://localhost:3000/mcp and ID ms-365.

Open WebUI MCP Connection

Running in Docker behind a reverse proxy? Set --public-url https://your-domain.com so the OAuth authorize URL handed to the user's browser is reachable from outside the container network. See docs/deployment.md for the full guide.

Local Development

For local development or testing:

# From the project directory
claude mcp add ms -- npx tsx src/index.ts --org-mode

Or configure Claude Desktop manually:

{
  "mcpServers": {
    "ms365": {
      "command": "node",
      "args": ["/absolute/path/to/ms-365-mcp-server/dist/index.js", "--org-mode"]
    }
  }
}

Note: Run npm run build after code changes to update the dist/ folder.

Authentication

⚠️ You must authenticate before using tools.

The server supports three authentication methods:

1. Device Code Flow (Default)

For interactive authentication via device code:

  • MCP client login:
    • Call the login tool (auto-checks existing token)
    • If needed, get URL+code, visit in browser
    • Use verify-login tool to confirm
  • CLI login:
    npx @softeria/ms-365-mcp-server --login
    Follow the URL and code prompt in the terminal.

Tokens are cached securely in your OS credential store (fallback to file).

2. OAuth Authorization Code Flow (HTTP mode only)

When running with --http, the server requires OAuth authentication:

npx @softeria/ms-365-mcp-server --http 3000

This mode:

  • Advertises OAuth capabilities to MCP clients
  • Provides OAuth endpoints at /auth/* (authorize, token, metadata)
  • Requires Authorization: Bearer <token> for all MCP requests
  • Validates tokens with Microsoft Graph API
  • Disables login/logout tools by default (use --enable-auth-tools to enable them)

MCP clients will automatically handle the OAuth flow when they see the advertised capabilities.

Setting up Azure AD for OAuth Testing

To use OAuth mode with custom Azure credentials (recommended for production), you'll need to set up an Azure AD app registration:

  1. Create Azure AD App Registration:
  • Go to Azure Portal
  • Navigate to Azure Active Directory β†’ App registrations β†’ New registration
  • Set name: "MS365 MCP Server"
  1. Configure Redirect URIs:
  • Configure the OAuth callback URI: Go to your app registration and on the left side, go to Authentication.
  • Under Platform configurations:
    • Click Add a platform (if you don’t already see one for "Mobile and desktop applications" / "Public client").
    • Choose Mobile and desktop applications or Public client/native (mobile & desktop) (label depends on portal version).
  1. Testing with MCP Inspector (npm run inspector):
  • Go to your app registration and on the left side, go to Authentication.
  • Under Platform configurations:
    • Click Add a platform (if you don’t already see one for "Web").
    • Choose Web.
    • Configure the following redirect URIs
      • http://localhost:6274/oauth/callback
      • http://localhost:6274/oauth/callback/debug
      • http://localhost:3000/callback (optional, for server callback)
  1. Get Credentials:
  • Copy the Application (client) ID from Overview page
  • Go to Certificates & secrets β†’ New client secret β†’ Copy the secret value (optional for public apps)
  1. Configure Environment Variables: Create a .env file in your project root:
    MS365_MCP_CLIENT_ID=your-azure-ad-app-client-id-here
    MS365_MCP_CLIENT_SECRET=your-secret-here  # Optional for public apps
    MS365_MCP_TENANT_ID=common

With these configured, the server will use your custom Azure app instead of the built-in one.

3. Bring Your Own Token (BYOT)

If you are running ms-365-mcp-server as part of a larger system that manages Microsoft OAuth tokens externally, you can provide an access token directly to this MCP server:

MS365_MCP_OAUTH_TOKEN=your_oauth_token npx @softeria/ms-365-mcp-server

This method:

  • Bypasses the interactive authentication flows
  • Use your pre-existing OAuth token for Microsoft Graph API requests
  • Does not handle token refresh (token lifecycle management is your responsibility)

Note: HTTP mode requires authentication. For unauthenticated testing, use stdio mode with device code flow.

Authentication Tools: In HTTP mode, login/logout tools are disabled by default since OAuth handles authentication. Use --enable-auth-tools if you need them available.

Multi-Account Support

Use a single server instance to serve multiple Microsoft accounts. When more than one account is logged in, an account parameter is automatically injected into every tool, allowing you to specify which account to use per tool call.

Login multiple accounts (one-time per account):

# Login first account (device code flow)
npx @softeria/ms-365-mcp-server --login
# Follow the device code prompt, sign in as personal@outlook.com

# Login second account
npx @softeria/ms-365-mcp-server --login
# Follow the device code prompt, sign in as work@company.com

List configured accounts:

npx @softeria/ms-365-mcp-server --list-accounts

Use in tool calls: Pass "account": "work@company.com" in any tool request:

{ "tool": "list-mail-messages", "arguments": { "account": "work@company.com" } }

Behavior:

  • With a single account configured, it auto-selects (no account parameter needed).
  • With multiple accounts and no account parameter, the server uses the selected default or returns a helpful error listing available accounts.
  • 100% backward compatible: existing single-account setups work unchanged.
  • The account parameter accepts email address (e.g. user@outlook.com) or MSAL homeAccountId.

For MCP multiplexers (Legate, Governor): Multi-account mode replaces the N-process pattern. Instead of spawning one server per account, a single instance handles all accounts via the account parameter, reducing tool duplication from NΓ—110 to 110.

Tool Presets

To reduce initial connection overhead, use preset tool categories instead of loading all 90+ tools:

npx @softeria/ms-365-mcp-server --preset mail
npx @softeria/ms-365-mcp-server --list-presets  # See all available presets

Available presets: mail, calendar, files, personal, work, excel, contacts, tasks, onenote, search, users, all

Dynamic Tool Discovery

Instead of loading all 90+ tools upfront, use dynamic discovery so the LLM finds and loads tools only when it needs them:

npx @softeria/ms-365-mcp-server --discovery

Keeps the initial context small and cuts token usage, especially useful for long sessions or cost-sensitive setups (e.g. Open WebUI running against a paid API).

CLI Options

The following options can be used when running ms-365-mcp-server directly from the command line:

--login           Login using device code flow
--logout          Log out and clear saved credentials
--verify-login    Verify login without starting the server
--list-permissions List all required Graph API permissions and exit (respects --org-mode, --preset, --enabled-tools)
--org-mode        Enable organization/work mode from start (includes Teams, SharePoint, etc.)
--work-mode       Alias for --org-mode
--force-work-scopes Backwards compatibility alias for --org-mode (deprecated)
--cloud <type>    Microsoft cloud environment: global (default) or china (21Vianet)

Server Options

When running as an MCP server, the following options can be used:

-v                Enable verbose logging
--read-only       Start server in read-only mode, disabling write operations
--http [port]     Use Streamable HTTP transport instead of stdio (optionally specify port, default: 3000)
                  Starts Express.js server with MCP endpoint at /mcp
--enable-auth-tools Enable login/logout tools when using HTTP mode (disabled by default in HTTP mode)
--no-dynamic-registration Disable OAuth Dynamic Client Registration (enabled by default in HTTP mode)
--enabled-tools <pattern> Filter tools using regex pattern (e.g., "excel|contact" to enable Excel and Contact tools)
--preset <names>  Use preset tool categories (comma-separated). See "Tool Presets" section above
--list-presets    List all available presets and exit
--toon            (experimental) Enable TOON output format for 30-60% token reduction
--discovery       Dynamic tool discovery: loads tools on demand to reduce initial token usage (see "Dynamic Tool Discovery" above)
--public-url <url> Public base URL for OAuth when behind a reverse proxy (see Open WebUI section and docs/deployment.md)

Environment variables:

  • READ_ONLY=true|1: Alternative to --read-only flag
  • ENABLED_TOOLS: Filter tools using a regex pattern (alternative to --enabled-tools flag)
  • MS365_MCP_ORG_MODE=true|1: Enable organization/work mode (alternative to --org-mode flag)
  • MS365_MCP_FORCE_WORK_SCOPES=true|1: Backwards compatibility for MS365_MCP_ORG_MODE
  • MS365_MCP_OUTPUT_FORMAT=toon: Enable TOON output format (alternative to --toon flag)
  • MS365_MCP_MAX_TOP=<n>: Hard cap for Graph $top / top on list requests (positive integer). When the model passes a larger value, the server clamps it to n so responses stay smaller. Example: MS365_MCP_MAX_TOP=15
  • MS365_MCP_BODY_FORMAT=html: Return email bodies as HTML instead of plain text (default: text)
  • MS365_MCP_CLOUD_TYPE=global|china: Microsoft cloud environment (alternative to --cloud flag)
  • LOG_LEVEL: Set logging level (default: 'info')
  • SILENT=true|1: Disable console output
  • MS365_MCP_CLIENT_ID: Custom Azure app client ID (defaults to built-in app)
  • MS365_MCP_TENANT_ID: Custom tenant ID (defaults to 'common' for multi-tenant)
  • MS365_MCP_OAUTH_TOKEN: Pre-existing OAuth token for Microsoft Graph API (BYOT method)
  • MS365_MCP_KEYVAULT_URL: Azure Key Vault URL for secrets management (see Azure Key Vault section)
  • MS365_MCP_TOKEN_CACHE_PATH: Custom file path for MSAL token cache (see Token Storage below)
  • MS365_MCP_SELECTED_ACCOUNT_PATH: Custom file path for selected account metadata (see Token Storage below)

Token Storage

Authentication tokens are stored using the OS credential store (via keytar) when available. If keytar is not installed or fails (common on headless Linux), the server falls back to file-based storage.

Default fallback paths are relative to the installed package directory. This means tokens can be lost when the package is reinstalled or updated via npm.

To persist tokens across updates, set custom paths outside the package directory:

export MS365_MCP_TOKEN_CACHE_PATH="$HOME/.config/ms365-mcp/.token-cache.json"
export MS365_MCP_SELECTED_ACCOUNT_PATH="$HOME/.config/ms365-mcp/.selected-account.json"

Parent directories are created automatically. Files are written with 0600 permissions.

Security note: File-based token storage writes sensitive credentials to disk. Ensure the chosen directory has appropriate access controls. The OS credential store (keytar) is preferred when available.

Hosted/sandboxed environments (e.g. Anthropic Cowork): Set MS365_MCP_TOKEN_CACHE_PATH and MS365_MCP_SELECTED_ACCOUNT_PATH to a persistent mount so tokens survive between sessions.

Azure Key Vault Integration

For production deployments, you can store secrets in Azure Key Vault instead of environment variables. This is particularly useful for Azure Container Apps with managed identity.

Setup

  1. Create a Key Vault (if you don't have one):

    az keyvault create --name your-keyvault-name --resource-group your-rg --location eastus
  2. Add secrets to Key Vault:

    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-client-id --value "your-client-id"
    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-tenant-id --value "your-tenant-id"
    # Optional: if using confidential client flow
    az keyvault secret set --vault-name your-keyvault-name --name ms365-mcp-client-secret --value "your-secret"
  3. Grant access to Key Vault:

    For Azure Container Apps with managed identity:

    # Get the managed identity principal ID
    PRINCIPAL_ID=$(az containerapp show --name your-app --resource-group your-rg --query identity.principalId -o tsv)
    
    # Grant access to Key Vault secrets
    az keyvault set-policy --name your-keyvault-name --object-id $PRINCIPAL_ID --secret-permissions get list

    For local development with Azure CLI:

    # Your Azure CLI identity already has access if you have appropriate RBAC roles
    az login
  4. Configure the server:

    MS365_MCP_KEYVAULT_URL=https://your-keyvault-name.vault.azure.net npx @softeria/ms-365-mcp-server

Secret Name Mapping

Key Vault Secret Name Environment Variable Required
ms365-mcp-client-id MS365_MCP_CLIENT_ID Yes
ms365-mcp-tenant-id MS365_MCP_TENANT_ID No (defaults to 'common')
ms365-mcp-client-secret MS365_MCP_CLIENT_SECRET No

Authentication

The Key Vault integration uses DefaultAzureCredential from the Azure Identity SDK, which automatically tries multiple authentication methods in order:

  1. Environment variables (AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID)
  2. Managed Identity (recommended for Azure Container Apps)
  3. Azure CLI credentials (for local development)
  4. Visual Studio Code credentials
  5. Azure PowerShell credentials

Optional Dependencies

The Azure Key Vault packages (@azure/identity and @azure/keyvault-secrets) are optional dependencies. They are only loaded when MS365_MCP_KEYVAULT_URL is configured. If you don't use Key Vault, these packages are not required.

Production Deployment

See docs/deployment.md for a full guide to hosting the server for organization-wide access, including Docker, Azure Container Apps, Azure App Service, Azure AD app registration, reverse proxy setup, client configuration, and exposed endpoints.

Contributing

We welcome contributions! Before submitting a pull request, please ensure your changes meet our quality standards.

Run the verification script to check all code quality requirements:

npm run verify

For Developers

After cloning the repository, you may need to generate the client code from the Microsoft Graph OpenAPI specification:

npm run generate

Support

If you're having problems or need help:

License

MIT Β© 2026 Softeria

Release History

VersionChangesUrgencyDate
v0.85.0# [0.85.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.84.0...v0.85.0) (2026-04-21) ### Features * add create-chat endpoint for Teams chats ([#394](https://github.com/softeria/ms-365-mcp-server/issues/394)) ([71cee0d](https://github.com/softeria/ms-365-mcp-server/commit/71cee0dfd9c36727e832e5fa022e0acca13d9942)) High4/21/2026
v0.84.0# [0.84.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.83.0...v0.84.0) (2026-04-21) ### Features * add groups write endpoints (create/update/delete, member/owner management) ([#378](https://github.com/softeria/ms-365-mcp-server/issues/378)) ([91dbe2a](https://github.com/softeria/ms-365-mcp-server/commit/91dbe2a0abd839788f78b034e4df1db9e51f4f43)), closes [#324](https://github.com/softeria/ms-365-mcp-server/issues/324) High4/21/2026
v0.83.0# [0.83.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.82.0...v0.83.0) (2026-04-20) ### Features * return 401 + WWW-Authenticate so MCP clients drive token refresh ([#406](https://github.com/softeria/ms-365-mcp-server/issues/406)) ([ab88cda](https://github.com/softeria/ms-365-mcp-server/commit/ab88cdaa390ea7b46a9ed662653705a12e2759f6)) High4/20/2026
v0.82.0# [0.82.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.81.0...v0.82.0) (2026-04-20) ### Features * add calendar event actions and delta sync endpoints ([#397](https://github.com/softeria/ms-365-mcp-server/issues/397)) ([fc18beb](https://github.com/softeria/ms-365-mcp-server/commit/fc18beb7e3dbeb273599729600f1442126b33f05)) High4/20/2026
v0.81.0# [0.81.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.80.0...v0.81.0) (2026-04-17) ### Features * add trending insights endpoint ([#377](https://github.com/softeria/ms-365-mcp-server/issues/377)) ([751dae1](https://github.com/softeria/ms-365-mcp-server/commit/751dae1f311604416ada83506c27f2f92e4e4001)) High4/17/2026
v0.80.0# [0.80.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.6...v0.80.0) (2026-04-17) ### Features * split public and internal URLs in OAuth metadata ([#402](https://github.com/softeria/ms-365-mcp-server/issues/402)) ([2327818](https://github.com/softeria/ms-365-mcp-server/commit/23278183591829b476dae5d3cb3ffdfd89163879)) High4/17/2026
v0.79.6## [0.79.6](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.5...v0.79.6) (2026-04-16) ### Bug Fixes * rework --discovery with BM25 search and get-tool-schema - finally! Hopefully! ([#398](https://github.com/softeria/ms-365-mcp-server/issues/398)) ([a87ad4f](https://github.com/softeria/ms-365-mcp-server/commit/a87ad4f07e9785a4313c207c110e8dfc69eb9bfe)) High4/16/2026
v0.79.5## [0.79.5](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.4...v0.79.5) (2026-04-15) ### Bug Fixes * restrict default CORS origin from wildcard to localhost ([#385](https://github.com/softeria/ms-365-mcp-server/issues/385)) ([2c2727b](https://github.com/softeria/ms-365-mcp-server/commit/2c2727bcc2e874f198685d7e82dd2f92ab5a4ce6)) High4/15/2026
v0.79.4## [0.79.4](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.3...v0.79.4) (2026-04-14) ### Bug Fixes * validate --enabled-tools regex at startup ([#386](https://github.com/softeria/ms-365-mcp-server/issues/386)) ([58f11a3](https://github.com/softeria/ms-365-mcp-server/commit/58f11a3c7e1ee9a3f4a7c171438245b0e6e82b52)) High4/14/2026
v0.79.3## [0.79.3](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.2...v0.79.3) (2026-04-14) ### Bug Fixes * bound PKCE store size to prevent memory exhaustion ([#384](https://github.com/softeria/ms-365-mcp-server/issues/384)) ([9103b79](https://github.com/softeria/ms-365-mcp-server/commit/9103b79677db0805edc5172a48f1e8571f8f6343)) High4/14/2026
v0.79.2## [0.79.2](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.1...v0.79.2) (2026-04-14) ### Bug Fixes * add item count limit to fetchAllPages to prevent memory exhaustion ([#383](https://github.com/softeria/ms-365-mcp-server/issues/383)) ([efefd8a](https://github.com/softeria/ms-365-mcp-server/commit/efefd8a3773dfcc6ae8fd218a61126a4c95b1bc7)) * move log directory to user home with secure permissions ([#382](https://github.com/softeria/ms-365-mcp-server/issues/382)) ([654d717](https:High4/14/2026
v0.79.1## [0.79.1](https://github.com/softeria/ms-365-mcp-server/compare/v0.79.0...v0.79.1) (2026-04-14) ### Bug Fixes * add logs/ to .gitignore to prevent accidental commit of sensitive data ([#381](https://github.com/softeria/ms-365-mcp-server/issues/381)) ([f753ad9](https://github.com/softeria/ms-365-mcp-server/commit/f753ad951e94834601a7efc6eab93dbdcbb00612)) High4/14/2026
v0.79.0# [0.79.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.78.0...v0.79.0) (2026-04-14) ### Features * readOnly has been enhanced. a readOnly attribute has been introduce so that any Graph API endpoint is actually reading the data although the METHOD is POST. ([#372](https://github.com/softeria/ms-365-mcp-server/issues/372)) ([4421f5a](https://github.com/softeria/ms-365-mcp-server/commit/4421f5aee7830bac775d9ff7ccb47615ab920c0d)) High4/14/2026
v0.78.0# [0.78.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.77.0...v0.78.0) (2026-04-14) ### Features * add MCP server instructions and context handling ([#366](https://github.com/softeria/ms-365-mcp-server/issues/366)) ([c0a366b](https://github.com/softeria/ms-365-mcp-server/commit/c0a366bd5146917e0876dcca839fb12e4428b1c3)) High4/14/2026
v0.77.0# [0.77.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.76.0...v0.77.0) (2026-04-14) ### Features * add places endpoints (rooms, room lists, update) ([#379](https://github.com/softeria/ms-365-mcp-server/issues/379)) ([baf8b20](https://github.com/softeria/ms-365-mcp-server/commit/baf8b20c2ddc33342414c2d85eb265f65c64f97b)) Medium4/14/2026
v0.76.0# [0.76.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.75.0...v0.76.0) (2026-04-13) ### Bug Fixes * apply prettier formatting to src/index.ts ([982e5e3](https://github.com/softeria/ms-365-mcp-server/commit/982e5e35c5851c8a2323ae623b7adb1a6ef369c7)) ### Features * --list-permissions now respects --read-only flag ([fdd9cc6](https://github.com/softeria/ms-365-mcp-server/commit/fdd9cc6ebb708e793f081722adc273f8847d4967)) * add --list-permissions CLI flag and simplify README ([ed973Medium4/13/2026
v0.75.0# [0.75.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.74.0...v0.75.0) (2026-04-10) ### Features * add channel files folder and OneDrive search endpoints ([dccdfbb](https://github.com/softeria/ms-365-mcp-server/commit/dccdfbb9f43d62171ac15004495d2376ffa9924b)) Medium4/10/2026
v0.74.0# [0.74.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.73.1...v0.74.0) (2026-04-10) ### Bug Fixes * use workScopes for list-my-memberships ([bd69e0f](https://github.com/softeria/ms-365-mcp-server/commit/bd69e0f28add2e5265ffb72ece8633e5b1713bff)) ### Features * add group membership and directory endpoints ([c4e39f2](https://github.com/softeria/ms-365-mcp-server/commit/c4e39f2d92132be39e1db9239702acdf7878e154)) Medium4/10/2026
v0.73.1## [0.73.1](https://github.com/softeria/ms-365-mcp-server/compare/v0.73.0...v0.73.1) (2026-04-05) ### Bug Fixes * remove update-team endpoint that breaks org-mode login ([7373ecc](https://github.com/softeria/ms-365-mcp-server/commit/7373ecccb2b0ed033f785ed36ed9c1f8b09c150f)) Medium4/5/2026
v0.73.0# [0.73.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.72.0...v0.73.0) (2026-04-05) ### Features * add virtual events webinar endpoints ([48cbc23](https://github.com/softeria/ms-365-mcp-server/commit/48cbc23ec1fa38f283d8500b9ca10fd0582986c5)) Medium4/5/2026
v0.72.0# [0.72.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.71.0...v0.72.0) (2026-04-05) ### Bug Fixes * correct sharedWithMe path and remove workScopes from drive endpoints ([537932f](https://github.com/softeria/ms-365-mcp-server/commit/537932f53dc51304163341f850c09db6f9438543)) ### Features * add drive item metadata, sharing, permissions, and versions ([6a0b31b](https://github.com/softeria/ms-365-mcp-server/commit/6a0b31bee246215802ff81f5763c07708bb140ea)) Medium4/5/2026
v0.71.0# [0.71.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.70.0...v0.71.0) (2026-04-05) ### Bug Fixes * correct delta paths to match OpenAPI spec and remove workScopes ([df93df2](https://github.com/softeria/ms-365-mcp-server/commit/df93df2022ecc6574b58d144049199b6771ee655)) * remove invalid get-my-drive-delta entry ([52d81d9](https://github.com/softeria/ms-365-mcp-server/commit/52d81d92b79019c453cdc2ebab38e8fe89700867)) ### Features * add OneDrive delta sync endpoints ([f813cd1](hMedium4/5/2026
v0.70.0# [0.70.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.69.0...v0.70.0) (2026-04-05) ### Bug Fixes * correct update-team-channel scope to ChannelSettings.ReadWrite.All ([1b9f6ff](https://github.com/softeria/ms-365-mcp-server/commit/1b9f6ff61b1654e208a828f823328e1155e41862)) * use {conversationMember-id} to match OpenAPI spec ([718d12c](https://github.com/softeria/ms-365-mcp-server/commit/718d12c7fb1bb594b165a1a405b5a168ffe649ad)) ### Features * add Teams and channel management Medium4/5/2026
v0.69.0# [0.69.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.68.0...v0.69.0) (2026-04-05) ### Features * add --base-url flag and MS365_MCP_BASE_URL env var for reverse proxy support ([64b308c](https://github.com/softeria/ms-365-mcp-server/commit/64b308cb36448c9ee0e71e3b96df0199fcc8c73e)), closes [#278](https://github.com/softeria/ms-365-mcp-server/issues/278) Medium4/5/2026
v0.68.0# [0.68.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.67.0...v0.68.0) (2026-04-05) ### Features * add chat message pin/unpin endpoints ([8b080cf](https://github.com/softeria/ms-365-mcp-server/commit/8b080cfc250f3fcdc20ff18c338c6d8b8102a543)), closes [#286](https://github.com/softeria/ms-365-mcp-server/issues/286) Medium4/5/2026
v0.67.0# [0.67.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.66.0...v0.67.0) (2026-04-05) ### Features * add message reaction endpoints for Teams channels and chats ([603651c](https://github.com/softeria/ms-365-mcp-server/commit/603651c1dffd74c8cb71d5e96608c869b098ef6d)), closes [#211](https://github.com/softeria/ms-365-mcp-server/issues/211) Medium4/5/2026
v0.66.0# [0.66.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.65.0...v0.66.0) (2026-04-05) ### Features * add shared calendar endpoints ([82b9858](https://github.com/softeria/ms-365-mcp-server/commit/82b985843c48c87c6ebb8f9422387df26ee00a64)), closes [#292](https://github.com/softeria/ms-365-mcp-server/issues/292) Medium4/5/2026
v0.65.0# [0.65.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.64.0...v0.65.0) (2026-04-05) ### Features * add getSchedule endpoint for free/busy lookup ([0cdd896](https://github.com/softeria/ms-365-mcp-server/commit/0cdd8962b745f36a4151c9fc96f9ab6be1630c63)), closes [#296](https://github.com/softeria/ms-365-mcp-server/issues/296) Medium4/5/2026
v0.64.0# [0.64.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.63.2...v0.64.0) (2026-04-05) ### Features * add upload session endpoints for large file uploads ([fdd74f1](https://github.com/softeria/ms-365-mcp-server/commit/fdd74f1b334af86c19685fe81f0faaafa6f17812)), closes [#56](https://github.com/softeria/ms-365-mcp-server/issues/56) Medium4/5/2026
v0.63.2## [0.63.2](https://github.com/softeria/ms-365-mcp-server/compare/v0.63.1...v0.63.2) (2026-04-05) ### Bug Fixes * implement two-leg PKCE to fix claude.ai web OAuth flow ([#266](https://github.com/softeria/ms-365-mcp-server/issues/266)) ([741884e](https://github.com/softeria/ms-365-mcp-server/commit/741884e1a57aa3779cf7a3de4557772096990d54)) * use TTL-based cleanup for pkceStore and fix prettier formatting ([8f46270](https://github.com/softeria/ms-365-mcp-server/commit/8f462706c959015524145ffaMedium4/5/2026
v0.63.1## [0.63.1](https://github.com/softeria/ms-365-mcp-server/compare/v0.63.0...v0.63.1) (2026-04-05) ### Bug Fixes * add endpoint validation test and fix orphaned configs ([dafb435](https://github.com/softeria/ms-365-mcp-server/commit/dafb43580cc3880243eb8ca06cf9d0fba526ac4b)) * polyfill File global for Node 18 in endpoint validation test ([25ea7a8](https://github.com/softeria/ms-365-mcp-server/commit/25ea7a823aed05987532e32a81ad047a53d8c894)) * use dynamic import for generated client in validatMedium4/5/2026
v0.63.0# [0.63.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.62.0...v0.63.0) (2026-04-05) ### Features * add OneNote CRUD endpoints ([da67a0c](https://github.com/softeria/ms-365-mcp-server/commit/da67a0ca5426e6e496663cb12eb43fb45f4051f2)) Medium4/5/2026
v0.62.0# [0.62.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.61.0...v0.62.0) (2026-04-04) ### Bug Fixes * use {workbookTable-id} to match OpenAPI spec ([2896bcd](https://github.com/softeria/ms-365-mcp-server/commit/2896bcd401894c15664fdede183dc6d0da4ea2f4)) ### Features * add Excel table endpoints ([8ef9b1a](https://github.com/softeria/ms-365-mcp-server/commit/8ef9b1affe74ab222f95583cfacbe5588d569612)) Medium4/4/2026
v0.61.0# [0.61.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.60.0...v0.61.0) (2026-04-04) ### Bug Fixes * use parameterized mailFolder-id instead of hardcoded inbox in messageRules paths ([589a706](https://github.com/softeria/ms-365-mcp-server/commit/589a7063599719fd21287e42c3d6a12c15b6d939)) ### Features * add inbox mail rules CRUD endpoints ([cf95a0e](https://github.com/softeria/ms-365-mcp-server/commit/cf95a0e0c18296744adaf67c3303dd3d2b6e4627)) Medium4/4/2026
v0.60.0# [0.60.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.59.0...v0.60.0) (2026-04-04) ### Bug Fixes * use workScopes for org-only endpoints (manager, directReports, people) ([4f53dce](https://github.com/softeria/ms-365-mcp-server/commit/4f53dce78ab3a5ebc36186621ade2aba1cf74918)) ### Features * add user org hierarchy, profile photo, and people endpoints ([11a8f68](https://github.com/softeria/ms-365-mcp-server/commit/11a8f68c3ba1c7266be935a5007f326f128c50b6)) Medium4/4/2026
v0.59.0# [0.59.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.58.0...v0.59.0) (2026-04-04) ### Bug Fixes * remove workScopes from transcript metadata endpoint ([8440e32](https://github.com/softeria/ms-365-mcp-server/commit/8440e32673cf5ed84c3f33771f150e1d39d5802a)) * use workScopes for get-meeting-transcript to match existing endpoints ([31aa5de](https://github.com/softeria/ms-365-mcp-server/commit/31aa5de9c95f82aef7f77755124898fb94d5b1b8)) ### Features * add transcript and recordingMedium4/4/2026
v0.58.0# [0.58.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.57.0...v0.58.0) (2026-04-04) ### Bug Fixes * remove scopes from org-only presence endpoints ([0be570e](https://github.com/softeria/ms-365-mcp-server/commit/0be570ecad99f6d0286a99c346afb884896746da)) * use workScopes for get-my-presence endpoint ([244d9b7](https://github.com/softeria/ms-365-mcp-server/commit/244d9b7df868d12424d74f41703bad2044345222)) ### Features * add user presence endpoints ([99c02ad](https://github.com/sMedium4/4/2026
v0.57.0# [0.57.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.56.0...v0.57.0) (2026-04-04) ### Bug Fixes * remove workScopes from /me/ online meeting endpoints ([9ecffd9](https://github.com/softeria/ms-365-mcp-server/commit/9ecffd90d03b355babad732cd981ac3150aee5f7)) * use workScopes for online meeting CRUD endpoints ([c2156ed](https://github.com/softeria/ms-365-mcp-server/commit/c2156ed60fefffe834148574b9f94d70bbe9d457)) ### Features * add online meeting CRUD endpoints ([68a9ce0](httMedium4/4/2026
v0.56.0# [0.56.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.55.0...v0.56.0) (2026-04-04) ### Bug Fixes * update --login help text and add interactive auth test ([4f8e14f](https://github.com/softeria/ms-365-mcp-server/commit/4f8e14f965d35345dccf8b1f6c756c1e0b1dcca1)) ### Features * add --auth-browser flag for browser-based interactive OAuth in stdio mode ([e7d692a](https://github.com/softeria/ms-365-mcp-server/commit/e7d692a0337ff30897aa0b4549324c8615e22aee)) Medium4/4/2026
v0.55.0# [0.55.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.54.1...v0.55.0) (2026-04-03) ### Features * add move/rename and create folder tools for OneDrive ([cc316e0](https://github.com/softeria/ms-365-mcp-server/commit/cc316e045061603a175ee3a552b3f953d859877c)), closes [#309](https://github.com/softeria/ms-365-mcp-server/issues/309) Medium4/3/2026
v0.54.1## [0.54.1](https://github.com/softeria/ms-365-mcp-server/compare/v0.54.0...v0.54.1) (2026-03-31) ### Bug Fixes * remove nonexistent upload-new-file from README ([#344](https://github.com/softeria/ms-365-mcp-server/issues/344)) ([be9da2b](https://github.com/softeria/ms-365-mcp-server/commit/be9da2b0e85b747853b8b8279ec7b965933fd23d)), closes [#277](https://github.com/softeria/ms-365-mcp-server/issues/277) Medium3/31/2026
v0.54.0# [0.54.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.53.4...v0.54.0) (2026-03-31) ### Features * enable dynamic client registration by default in HTTP mode ([#343](https://github.com/softeria/ms-365-mcp-server/issues/343)) ([db73bdf](https://github.com/softeria/ms-365-mcp-server/commit/db73bdf7854b517847d58eac1e1b16ea3874e2fb)) ### Reverts * undo PKCE code_challenge removal that broke Claude Code OAuth ([#342](https://github.com/softeria/ms-365-mcp-server/issues/342)) ([47e1Medium3/31/2026
v0.53.4## [0.53.4](https://github.com/softeria/ms-365-mcp-server/compare/v0.53.3...v0.53.4) (2026-03-31) ### Bug Fixes * stop forwarding PKCE code_challenge to Microsoft OAuth endpoint ([#341](https://github.com/softeria/ms-365-mcp-server/issues/341)) ([15b7bba](https://github.com/softeria/ms-365-mcp-server/commit/15b7bba5404728cd47ffe3010ec9ce10065931b7)), closes [#266](https://github.com/softeria/ms-365-mcp-server/issues/266) Medium3/31/2026
v0.53.3## [0.53.3](https://github.com/softeria/ms-365-mcp-server/compare/v0.53.2...v0.53.3) (2026-03-31) ### Bug Fixes * preserve [@odata](https://github.com/odata).nextLink so fetchAllPages pagination works ([#340](https://github.com/softeria/ms-365-mcp-server/issues/340)) ([61094fc](https://github.com/softeria/ms-365-mcp-server/commit/61094fcb7ca1838970380848fffc24c8a826c74f)), closes [#333](https://github.com/softeria/ms-365-mcp-server/issues/333) Medium3/31/2026
v0.53.2## [0.53.2](https://github.com/softeria/ms-365-mcp-server/compare/v0.53.1...v0.53.2) (2026-03-31) ### Bug Fixes * **server:** create McpServer per HTTP request to fix concurrent transport error ([#305](https://github.com/softeria/ms-365-mcp-server/issues/305)) ([5a92bde](https://github.com/softeria/ms-365-mcp-server/commit/5a92bde84a89c23a5ddd1f1e08a428501c4f83b1)) Medium3/31/2026
v0.53.1## [0.53.1](https://github.com/softeria/ms-365-mcp-server/compare/v0.53.0...v0.53.1) (2026-03-31) ### Bug Fixes * remove invalid personal scopes from org-only endpoints and add validation test ([#339](https://github.com/softeria/ms-365-mcp-server/issues/339)) ([7d7936d](https://github.com/softeria/ms-365-mcp-server/commit/7d7936d63a3b5837c46b5b090872140461857168)) Medium3/31/2026
v0.53.0# [0.53.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.52.0...v0.53.0) (2026-03-31) ### Features * add To Do task linked resources endpoints ([#328](https://github.com/softeria/ms-365-mcp-server/issues/328)) ([45cd79c](https://github.com/softeria/ms-365-mcp-server/commit/45cd79caf797cdd72c0e239349de121a8c4d38c8)) Medium3/31/2026
v0.52.0# [0.52.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.51.0...v0.52.0) (2026-03-31) ### Features * add calendar CRUD endpoints ([#322](https://github.com/softeria/ms-365-mcp-server/issues/322)) ([05337a6](https://github.com/softeria/ms-365-mcp-server/commit/05337a622dc128b9af60c682ceb53401db03a90c)) Medium3/31/2026
v0.51.0# [0.51.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.50.0...v0.51.0) (2026-03-31) ### Features * add SharePoint list item CRUD endpoints ([#319](https://github.com/softeria/ms-365-mcp-server/issues/319)) ([feee177](https://github.com/softeria/ms-365-mcp-server/commit/feee1775584989722c3e14dfd05f035feb9c8e52)) Medium3/31/2026
v0.50.0# [0.50.0](https://github.com/softeria/ms-365-mcp-server/compare/v0.49.0...v0.50.0) (2026-03-31) ### Features * add calendar event response endpoints ([#318](https://github.com/softeria/ms-365-mcp-server/issues/318)) ([c8798e1](https://github.com/softeria/ms-365-mcp-server/commit/c8798e1eba2b360bd5eb6c0b1caba2b3d064e434)) Medium3/31/2026

Dependencies & License Audit

Loading dependencies...

Similar Packages

stigixStigix is a lab platform to validate SD‑WAN and SASE. ​ It unifies SaaS traffic generation, security tests, convergence probes, and voice/IoT/VyOS simulations in one web UIv1.2.2-patch.81
kibiRepo-local, per-git-branch, queryable knowledge base for LLM Agents.kibi-opencode@0.8.0
claw-pilotMulti-agent orchestration runtime with task board, flow engine, budget control, MCP integration and real-time dashboard. Self-hosted on Linux/macOS.v0.81.1
trace-mcpMCP server for Claude Code and Codex. One tool call replaces ~42 minutes of agent explorationv1.28.0
@baseplate-dev/plugin-aiAI agent integration plugin for Baseplate β€” generates AGENTS.md, CLAUDE.md, .mcp.json, and .agents/ configuration files0.6.8