Microsoft 365 administration via Graph API application permissions (read-only by default).
Connect Runs on your machine
claude mcp add ms-365-admin -e MS365_ADMIN_MCP_TENANT_ID=<MS365_ADMIN_MCP_TENANT_ID> -e MS365_ADMIN_MCP_CLIENT_ID=<MS365_ADMIN_MCP_CLIENT_ID> -e MS365_ADMIN_MCP_CLIENT_SECRET=<MS365_ADMIN_MCP_CLIENT_SECRET> -e MS365_ADMIN_MCP_KEYVAULT_URL=<MS365_ADMIN_MCP_KEYVAULT_URL> -e MS365_ADMIN_MCP_CLOUD_TYPE=<MS365_ADMIN_MCP_CLOUD_TYPE> -e MS365_ADMIN_MCP_MAX_TOP=<MS365_ADMIN_MCP_MAX_TOP> -e READ_ONLY=<READ_ONLY> -e ENABLED_TOOLS=<ENABLED_TOOLS> -- npx -y @okapi-ca/[email protected]
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/[email protected]"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "<MS365_ADMIN_MCP_TENANT_ID>",
"MS365_ADMIN_MCP_CLIENT_ID": "<MS365_ADMIN_MCP_CLIENT_ID>",
"MS365_ADMIN_MCP_CLIENT_SECRET": "<MS365_ADMIN_MCP_CLIENT_SECRET>",
"MS365_ADMIN_MCP_KEYVAULT_URL": "<MS365_ADMIN_MCP_KEYVAULT_URL>",
"MS365_ADMIN_MCP_CLOUD_TYPE": "<MS365_ADMIN_MCP_CLOUD_TYPE>",
"MS365_ADMIN_MCP_MAX_TOP": "<MS365_ADMIN_MCP_MAX_TOP>",
"READ_ONLY": "<READ_ONLY>",
"ENABLED_TOOLS": "<ENABLED_TOOLS>"
}
}
}
}
{
"mcpServers": {
"ms-365-admin": {
"command": "npx",
"args": [
"-y",
"@okapi-ca/[email protected]"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "<MS365_ADMIN_MCP_TENANT_ID>",
"MS365_ADMIN_MCP_CLIENT_ID": "<MS365_ADMIN_MCP_CLIENT_ID>",
"MS365_ADMIN_MCP_CLIENT_SECRET": "<MS365_ADMIN_MCP_CLIENT_SECRET>",
"MS365_ADMIN_MCP_KEYVAULT_URL": "<MS365_ADMIN_MCP_KEYVAULT_URL>",
"MS365_ADMIN_MCP_CLOUD_TYPE": "<MS365_ADMIN_MCP_CLOUD_TYPE>",
"MS365_ADMIN_MCP_MAX_TOP": "<MS365_ADMIN_MCP_MAX_TOP>",
"READ_ONLY": "<READ_ONLY>",
"ENABLED_TOOLS": "<ENABLED_TOOLS>"
}
}
}
}
{
"servers": {
"ms-365-admin": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@okapi-ca/[email protected]"
],
"env": {
"MS365_ADMIN_MCP_TENANT_ID": "<MS365_ADMIN_MCP_TENANT_ID>",
"MS365_ADMIN_MCP_CLIENT_ID": "<MS365_ADMIN_MCP_CLIENT_ID>",
"MS365_ADMIN_MCP_CLIENT_SECRET": "<MS365_ADMIN_MCP_CLIENT_SECRET>",
"MS365_ADMIN_MCP_KEYVAULT_URL": "<MS365_ADMIN_MCP_KEYVAULT_URL>",
"MS365_ADMIN_MCP_CLOUD_TYPE": "<MS365_ADMIN_MCP_CLOUD_TYPE>",
"MS365_ADMIN_MCP_MAX_TOP": "<MS365_ADMIN_MCP_MAX_TOP>",
"READ_ONLY": "<READ_ONLY>",
"ENABLED_TOOLS": "<ENABLED_TOOLS>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
MS365_ADMIN_MCP_TENANT_IDRequired | Azure AD tenant ID (specific GUID, not 'common'). |
MS365_ADMIN_MCP_CLIENT_IDRequired | App registration client ID with the required application permissions. |
MS365_ADMIN_MCP_CLIENT_SECRETRequired, secret | App registration client secret. Prefer Azure Key Vault via MS365_ADMIN_MCP_KEYVAULT_URL for production. |
MS365_ADMIN_MCP_KEYVAULT_URLOptional | Optional Azure Key Vault URL. When set, secrets are pulled from the vault and override the env-var values above. |
MS365_ADMIN_MCP_CLOUD_TYPEOptional | Cloud environment: 'global' (default) or 'china' (21Vianet). |
MS365_ADMIN_MCP_MAX_TOPOptional | Cap on the $top query parameter to limit result size. |
READ_ONLYOptional | Set to 'true' or '1' to force read-only mode (default behavior; mutations require --allow-writes). |
ENABLED_TOOLSOptional | Regex to filter the catalog of available tools. |
Details
| Package | @okapi-ca/[email protected] (NPM, stdio) |
| First published | 21 May 2026 |
| Last updated | 21 May 2026 |
| Registry name | io.github.okapi-ca/ms-365-admin |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
