World Monitor
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 99 tools.
Microsoft 365 administration via Graph API application permissions (read-only by default).
Pick the AI app you use, then copy the settings.
Passed 3/3 checks · Runs on your computer · ✓ Commands checked Nov 14, 2026
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude, with some setup first
You need a Microsoft 365 Admin key (create it on the maker’s site) · 2 setting(s) to fill in (MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID) · Install Node.js on your computer first (one time) · Only the Claude desktop app (Windows or Mac), not the web or phone
One time only; it works for every server that needs Node.js
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
MS365_ADMIN_MCP_TENANT_ID Azure AD tenant ID (specific GUID, not 'common').MS365_ADMIN_MCP_CLIENT_ID App registration client ID with the required application permissions.Descriptions are as written by the maker.
SettingsDeveloperEdit Config
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value"
}
}
}
}Paste the key only into the app’s field, never into a chat or to anyone
Use Microsoft 365 Admin and tell me what you can do for me, then show me one thing✓ If Claude says it is using Microsoft 365 Admin or shows a Microsoft 365 Admin tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MS365_ADMIN_MCP_KEYVAULT_URL Optional Azure Key Vault URL. When set, secrets are pulled from the vault and override the env-var values above.MS365_ADMIN_MCP_CLOUD_TYPE Cloud environment: 'global' (default) or 'china' (21Vianet).MS365_ADMIN_MCP_MAX_TOP Cap on the $top query parameter to limit result size.READ_ONLY Set to 'true' or '1' to force read-only mode (default behavior; mutations require --allow-writes).ENABLED_TOOLS Regex to filter the catalog of available tools.Descriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect Microsoft 365 Admin yet
Microsoft 365 Admin runs on your computer, but ChatGPT can only connect servers that run on the web
A · Use an app that can connect Microsoft 365 Admin
B · Others in Other that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code, with some setup first
You need a Microsoft 365 Admin key (create it on the maker’s site) · 2 setting(s) to fill in (MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID) · Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
MS365_ADMIN_MCP_TENANT_ID Azure AD tenant ID (specific GUID, not 'common').MS365_ADMIN_MCP_CLIENT_ID App registration client ID with the required application permissions.Descriptions are as written by the maker.
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --scope user ms-365-admin --env MS365_ADMIN_MCP_TENANT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_SECRET=your-value -- npx -y @okapi-ca/ms-365-admin-mcp-serverReplace “your-value” with your key before pressing Enter
Paste the key only into the app’s field, never into a chat or to anyone
You should see Microsoft 365 Admin listed as connected
Use Microsoft 365 Admin and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using Microsoft 365 Admin or shows a Microsoft 365 Admin tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MS365_ADMIN_MCP_KEYVAULT_URL Optional Azure Key Vault URL. When set, secrets are pulled from the vault and override the env-var values above.MS365_ADMIN_MCP_CLOUD_TYPE Cloud environment: 'global' (default) or 'china' (21Vianet).MS365_ADMIN_MCP_MAX_TOP Cap on the $top query parameter to limit result size.READ_ONLY Set to 'true' or '1' to force read-only mode (default behavior; mutations require --allow-writes).ENABLED_TOOLS Regex to filter the catalog of available tools.Descriptions are as written by the maker.
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor, with some setup first
You need a Microsoft 365 Admin key (create it on the maker’s site) · 2 setting(s) to fill in (MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID) · Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
MS365_ADMIN_MCP_TENANT_ID Azure AD tenant ID (specific GUID, not 'common').MS365_ADMIN_MCP_CLIENT_ID App registration client ID with the required application permissions.Descriptions are as written by the maker.
In the Microsoft 365 Admin settings, MS365_ADMIN_MCP_CLIENT_SECRET, MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use Microsoft 365 Admin and tell me what you can do for me, then show me one thing✓ If Cursor says it is using Microsoft 365 Admin or shows a Microsoft 365 Admin tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MS365_ADMIN_MCP_KEYVAULT_URL Optional Azure Key Vault URL. When set, secrets are pulled from the vault and override the env-var values above.MS365_ADMIN_MCP_CLOUD_TYPE Cloud environment: 'global' (default) or 'china' (21Vianet).MS365_ADMIN_MCP_MAX_TOP Cap on the $top query parameter to limit result size.READ_ONLY Set to 'true' or '1' to force read-only mode (default behavior; mutations require --allow-writes).ENABLED_TOOLS Regex to filter the catalog of available tools.Descriptions are as written by the maker.
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code, with some setup first
You need a Microsoft 365 Admin key (create it on the maker’s site) · 2 setting(s) to fill in (MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID) · Install Node.js on your computer first (one time)
One time only; it works for every server that needs Node.js
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
These are program settings, not keys. No sign-up needed; fill them in as the maker describes.
MS365_ADMIN_MCP_TENANT_ID Azure AD tenant ID (specific GUID, not 'common').MS365_ADMIN_MCP_CLIENT_ID App registration client ID with the required application permissions.Descriptions are as written by the maker.
In the Microsoft 365 Admin settings, MS365_ADMIN_MCP_CLIENT_SECRET, MS365_ADMIN_MCP_TENANT_ID, MS365_ADMIN_MCP_CLIENT_ID is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use Microsoft 365 Admin and tell me what you can do for me, then show me one thing✓ If VS Code says it is using Microsoft 365 Admin or shows a Microsoft 365 Admin tool in the answer, you are connected
The command above works without these. Add them only if you want to change something, following the maker’s description.
MS365_ADMIN_MCP_KEYVAULT_URL Optional Azure Key Vault URL. When set, secrets are pulled from the vault and override the env-var values above.MS365_ADMIN_MCP_CLOUD_TYPE Cloud environment: 'global' (default) or 'china' (21Vianet).MS365_ADMIN_MCP_MAX_TOP Cap on the $top query parameter to limit result size.READ_ONLY Set to 'true' or '1' to force read-only mode (default behavior; mutations require --allow-writes).ENABLED_TOOLS Regex to filter the catalog of available tools.Descriptions are as written by the maker.
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Claude Code
claude mcp add --scope user ms-365-admin --env MS365_ADMIN_MCP_TENANT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_ID=your-value --env MS365_ADMIN_MCP_CLIENT_SECRET=your-value -- npx -y @okapi-ca/ms-365-admin-mcp-serverClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"ms-365-admin": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@okapi-ca/ms-365-admin-mcp-server"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_ID": "your-value",
"MS365_ADMIN_MCP_CLIENT_SECRET": "your-value"
}
}
}
}MS365_ADMIN_MCP_TENANT_ID required envMS365_ADMIN_MCP_CLIENT_ID required envMS365_ADMIN_MCP_CLIENT_SECRET secret required envMS365_ADMIN_MCP_KEYVAULT_URL envMS365_ADMIN_MCP_CLOUD_TYPE envMS365_ADMIN_MCP_MAX_TOP envREAD_ONLY envENABLED_TOOLS envDescriptions are as written by the maker.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
npm: @okapi-ca/ms-365-admin-mcp-serverBased on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 14, 2026
The registry name was verified with the GitHub account okapi-ca, which owns the repo
Code last changed yesterday
Uses MIT
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: MS365_ADMIN_MCP_CLIENT_SECRET
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed yesterday, and the latest version (0.6.3) reached the registry 6 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: World Monitor, Claude Flow, Windmill
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Real-time global intelligence on conflict, markets, energy, trade, shipping and cyber. 99 tools.
AI orchestration with hive-mind swarms, neural networks, and 87 MCP tools for enterprise dev.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
A Model Context Protocol (MCP) server for Microsoft 365 administration via Graph API application permissions (client credentials).
Built on the architecture and endpoint-driven design pioneered by Softeria/ms-365-mcp-server, and complementary to it: Softeria's server uses delegated permissions for end-user productivity scenarios, while this one uses application permissions for admin operations — security monitoring, identity audits, incident response, and service health. See Acknowledgments below.
--allow-writes| Document | Purpose |
|---|---|
| docs/USE_CASES.md | 18 typical admin scenarios with sample prompts and tool lists |
| docs/playbooks/ | End-to-end security incident response playbooks |
| agent-skills/ | Drop-in skills for LLM agents (Claude Code et al.) with safety patterns |
| docs/APP_REGISTRATION.md | Step-by-step Azure AD app registration and permission consent |
| docs/HTTP_DEPLOYMENT.md | HTTP transport, JWT validation, Docker, Azure Container Apps |
| docs/AZURE_DEPLOYMENT_SECURITY.md | Threat model, required controls, and checklist for Azure production deploys |
| docs/TROUBLESHOOTING.md | Common errors and how to diagnose them |
| docs/ARCHITECTURE.md | Internal architecture and code generation pipeline |
| docs/RISK_MODEL.md | Risk classification rubric for write tools |
| CONTRIBUTING.md | How to contribute new tools, presets, and fixes |
| SECURITY.md | Vulnerability reporting and operator hardening checklist |
| CHANGELOG.md | Release history |
npm install -g @okapi-ca/ms-365-admin-mcp-server
ms-365-admin-mcp-server --help
docker pull ghcr.io/okapi-ca/ms-365-admin-mcp-server:latest
docker run --rm -i \ -e MS365_ADMIN_MCP_CLIENT_ID=... \ -e MS365_ADMIN_MCP_CLIENT_SECRET=... \ -e MS365_ADMIN_MCP_TENANT_ID=... \ ghcr.io/okapi-ca/ms-365-admin-mcp-server:latest
git clone https://github.com/okapi-ca/ms-365-admin-mcp-server.git
cd ms-365-admin-mcp-server npm install npm run generate npm run build
| Variable | Required | Description |
|---|---|---|
MS365_ADMIN_MCP_CLIENT_ID | Yes | App registration client ID |
MS365_ADMIN_MCP_CLIENT_SECRET | Yes | App registration client secret |
MS365_ADMIN_MCP_TENANT_ID | Yes | Azure AD tenant ID (must be specific) |
MS365_ADMIN_MCP_CLOUD_TYPE | No | global (default) or china |
MS365_ADMIN_MCP_KEYVAULT_URL | No | Azure Key Vault URL (overrides env vars) |
MS365_ADMIN_MCP_MAX_TOP | No | Cap $top query param to limit result size |
READ_ONLY | No | true/1 to force read-only (default behavior) |
ENABLED_TOOLS | No | Regex to filter available tools |
{
"mcpServers": { "ms365-admin": { "command": "node", "args": ["/path/to/ms-365-admin-mcp-server/dist/index.js"], "env": { "MS365_ADMIN_MCP_CLIENT_ID": "your-client-id", "MS365_ADMIN_MCP_CLIENT_SECRET": "your-client-secret", "MS365_ADMIN_MCP_TENANT_ID": "your-tenant-id" } } } }
VS Code consumes the same MCP protocol but uses a different config layout — servers instead of mcpServers, an explicit type field, and inputs for secret prompts. A ready-to-copy sample lives at .vscode/mcp.json.example; copy it to .vscode/mcp.json and VS Code will prompt for the tenant / client / secret on first start, then store them in its secret store (the real mcp.json is gitignored so resolved secrets never reach the repo).
Minimal stdio setup:
{
"inputs": [ { "type": "promptString", "id": "ms365-tenant-id", "description": "Tenant ID" }, { "type": "promptString", "id": "ms365-client-id", "description": "Client ID" }, { "type": "promptString", "id": "ms365-client-secret", "description": "Client secret", "password": true, }, ], "servers": { "ms365-admin": { "type": "stdio", "command": "ms-365-admin-mcp-server", "args": ["--preset", "security,audit,identity,health"], "env": { "MS365_ADMIN_MCP_TENANT_ID": "${input:ms365-tenant-id}", "MS365_ADMIN_MCP_CLIENT_ID": "${input:ms365-client-id}", "MS365_ADMIN_MCP_CLIENT_SECRET": "${input:ms365-client-secret}", }, }, }, }
For remote HTTP deployments, use "type": "http" with a url field (VS Code 1.103+ handles OAuth 2.0 Dynamic Client Registration natively) or fall back to the mcp-remote bridge when the native browser flow is unavailable — see the example file for both shapes.
Tools surface in Agent mode (GitHub Copilot Chat). VS Code asks for per-tool approval; the --preset flag above keeps the catalog manageable. Use Cmd/Ctrl+Shift+P → MCP: List Servers → Show Output to see logs.
Claude.ai, Claude Desktop and cloud sessions serve each connector's tools under a fixed budget of 1 MiB of input schema (compact JSON; tool names and descriptions are not counted). Tools are admitted in alphabetical order and a tool that no longer fits is dropped silently. Claude Code CLI is not affected. The limit is not documented publicly.
In a cloud session linked to a Mac, the claude-device bridge relays every local MCP server under one connector (lcl- - ), so all local servers share that budget, and this server's tools sort after most of them.
Request bodies are therefore advertised shallow (src/advertised-schema.ts): the entity's own fields with their descriptions, nested objects as free-form objects, and no Read-only. fields. Graph validates the body; the server forwards it as sent. With writes enabled the catalog advertises about 595 KB of input schema, and test/advertised-schema.test.ts fails the build above 768 KiB.
If tools still go missing in a cloud session, shrink what this server advertises (read-only mode, --preset, --enabled-tools), disable unused local servers, or register this server as its own connector so it gets a budget of its own.
If the server runs in HTTP / OAuth mode on a remote host (e.g. Azure Container Apps) and the client connects via mcp-remote, the standard flow requires a browser to reach localhost:14543/oauth/callback. When that isn't possible — macOS Platform SSO hijacks the WebKit flow, Claude Code runs in a headless Docker container, the user is on a remote SSH dev env — use the ms-365-admin-mcp-auth bootstrap to pre-seed mcp-remote's token cache instead.
npx -p @okapi-ca/ms-365-admin-mcp-server@latest ms-365-admin-mcp-auth \
--server https://your-mcp-host.azurecontainerapps.io/mcp
The helper prints a URL and a user code; you sign in on any device you trust (phone, another laptop) and the tokens are written to ~/.mcp-auth/mcp-remote- /. Claude Desktop / Claude Code then launches mcp-remote normally and finds the cached tokens without ever opening a browser.
See docs/TROUBLESHOOTING.md for Docker / remote-dev patterns and exit code reference.
--read-only Read-only mode (default)
--allow-writes Enable write operations --enabled-tools Filter tools by regex pattern --preset Use preset categories (comma-separated) --partition Tool partition served on /mcp/ in HTTP mode (default: domains) --list-presets List available presets and exit --list-tools List available tools and exit --list-permissions List required Graph API permissions and exit --verify-login