98
/ 100
5 days ago
npm

Softeria/ms-365-mcp-server

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

Softeria/ms-365-mcp-server· npm: @softeria/ms-365-mcp-server· listed on npm
Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.

Install from

M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.

// key findings
9 tools verified — handlers match their declared behaviour
3 read-only tools verified — handlers contain no write/delete/exec
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
🔐
You'll be asked for 2 credentials: MS365_MCP_CLIENT_SECRET, MS365_MCP_OAUTH_TOKEN
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// required environment variables
This server reads these from process.env. You'll be asked to provide them before it can run.
configENABLED_TOOLSFilter tools using a regex pattern (alternative to --enabled-tools flag)
configLOG_LEVELSet logging level (default: 'info')
configMS365_MCP_ALLOWED_REDIRECT_URIS
configMS365_MCP_ALLOWED_SCOPES
configMS365_MCP_AUDIT_LOG
configMS365_MCP_AUTH_CACHE_COMMANDExternal executable wrapper for provider-neutral auth-cache storage (see Token Storage below)
configMS365_MCP_BASE_URL
configMS365_MCP_BODY_FORMAThtml: Return email bodies as HTML instead of plain text (default: text)
configMS365_MCP_CLIENT_IDyour-azure-ad-app-client-id-here
🔐 secretMS365_MCP_CLIENT_SECRETyour-secret-here # Optional for public apps
configMS365_MCP_CLOUD_TYPEglobalchina: Microsoft cloud environment (alternative to --cloud flag)
configMS365_MCP_CORS_ORIGIN
configMS365_MCP_EXPECTED_HOME_ACCOUNT_IDCLI values (--expected-username, --expected-home-account-id) take precedence over MS365_MCP_EXPECTED_USERNAME and .
configMS365_MCP_EXPECTED_USERNAMEwork@company.com npx @softeria/ms-365-mcp-server --login
configMS365_MCP_FORCE_WORK_SCOPEStrue1: Backwards compatibility for MS365_MCP_ORG_MODE
configMS365_MCP_GRAPH_CIRCUIT_DISABLED
configMS365_MCP_GRAPH_MAX_RETRIES
configMS365_MCP_GRAPH_TIMEOUT_MS
configMS365_MCP_KEYVAULT_URLAzure Key Vault URL for secrets management (see Azure Key Vault section)
configMS365_MCP_LOG_DIR
configMS365_MCP_MAX_TOPn>: 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
🔐 secretMS365_MCP_OAUTH_TOKENyour_oauth_token npx @softeria/ms-365-mcp-server
configMS365_MCP_OBO
configMS365_MCP_ORG_MODEtrue1: Enable organization/work mode (alternative to --org-mode flag)
configMS365_MCP_OUTPUT_FORMATtoon npx @softeria/ms-365-mcp-server
configMS365_MCP_PUBLIC_URL
configMS365_MCP_SELECTED_ACCOUNT_PATHCustom file path for selected account metadata (see Token Storage below)
configMS365_MCP_TENANT_IDCustom tenant ID (defaults to 'common' for multi-tenant)
configMS365_MCP_TOKEN_CACHE_PATHCustom file path for MSAL token cache (see Token Storage below)
configMS365_MCP_TRUST_PROXY_AUTH
configREAD_ONLYtrue1: Alternative to --read-only flag
configSILENTtrue1: Disable console output
configVITEST
// full audit trail
The full breakdown of what we checked, the deductions that landed, the network hosts, the dependency advisories, and concrete fix guidance is available to verified publishers.
// improvement guidance — verified publishers only
We have 6 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/softeria-ms-365-mcp-server-1m9te5)](https://m8ven.ai/mcp/softeria-ms-365-mcp-server-1m9te5)
commit: 26806573ea91079566eceb7b1d15cc93f38a7e57
code hash: 3f9efff529ab49e45ba1cf3e4e8789f3959e8735a6a212e2817e9f3427d03a14
verified: 5/29/2026, 12:01:44 PM
view raw JSON →