Model Context Protocol server for the Microsoft Entra SCIM 2.0 Provisioning API (GA April 2026). Exposes user and group lifecycle operations against https://graph.microsoft.com/rp/scim as MCP tools for AI agents
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add microsoft-entra-scim --env ENTRA_CLIENT_SECRET='<ENTRA_CLIENT_SECRET>' --env ENTRA_CLIENT_CERT_PASSWORD='<ENTRA_CLIENT_CERT_PASSWORD>' --env ENTRA_SCIM_STATIC_TOKEN='<ENTRA_SCIM_STATIC_TOKEN>' -- npx -y entra-scim-mcp~/.codex/config.toml
[mcp_servers.microsoft-entra-scim]
command = "npx"
args = ["-y", "entra-scim-mcp"]
env = { ENTRA_CLIENT_SECRET = "<ENTRA_CLIENT_SECRET>", ENTRA_CLIENT_CERT_PASSWORD = "<ENTRA_CLIENT_CERT_PASSWORD>", ENTRA_SCIM_STATIC_TOKEN = "<ENTRA_SCIM_STATIC_TOKEN>" }
# codex mcp add microsoft-entra-scim --env ENTRA_CLIENT_SECRET='<ENTRA_CLIENT_SECRET>' --env ENTRA_CLIENT_CERT_PASSWORD='<ENTRA_CLIENT_CERT_PASSWORD>' --env ENTRA_SCIM_STATIC_TOKEN='<ENTRA_SCIM_STATIC_TOKEN>' -- npx -y entra-scim-mcp~/.cursor/mcp.json
{
"mcpServers": {
"microsoft-entra-scim": {
"command": "npx",
"args": [
"-y",
"entra-scim-mcp"
],
"env": {
"ENTRA_CLIENT_SECRET": "<ENTRA_CLIENT_SECRET>",
"ENTRA_CLIENT_CERT_PASSWORD": "<ENTRA_CLIENT_CERT_PASSWORD>",
"ENTRA_SCIM_STATIC_TOKEN": "<ENTRA_SCIM_STATIC_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"microsoft-entra-scim": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"entra-scim-mcp"
],
"env": {
"ENTRA_CLIENT_SECRET": "<ENTRA_CLIENT_SECRET>",
"ENTRA_CLIENT_CERT_PASSWORD": "<ENTRA_CLIENT_CERT_PASSWORD>",
"ENTRA_SCIM_STATIC_TOKEN": "<ENTRA_SCIM_STATIC_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"microsoft-entra-scim": {
"command": "npx",
"args": [
"-y",
"entra-scim-mcp"
],
"env": {
"ENTRA_CLIENT_SECRET": "<ENTRA_CLIENT_SECRET>",
"ENTRA_CLIENT_CERT_PASSWORD": "<ENTRA_CLIENT_CERT_PASSWORD>",
"ENTRA_SCIM_STATIC_TOKEN": "<ENTRA_SCIM_STATIC_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"microsoft-entra-scim": {
"command": "npx",
"args": [
"-y",
"entra-scim-mcp"
],
"env": {
"ENTRA_CLIENT_SECRET": "<ENTRA_CLIENT_SECRET>",
"ENTRA_CLIENT_CERT_PASSWORD": "<ENTRA_CLIENT_CERT_PASSWORD>",
"ENTRA_SCIM_STATIC_TOKEN": "<ENTRA_SCIM_STATIC_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"microsoft-entra-scim": {
"command": "npx",
"args": [
"-y",
"entra-scim-mcp"
],
"env": {
"ENTRA_CLIENT_SECRET": "<ENTRA_CLIENT_SECRET>",
"ENTRA_CLIENT_CERT_PASSWORD": "<ENTRA_CLIENT_CERT_PASSWORD>",
"ENTRA_SCIM_STATIC_TOKEN": "<ENTRA_SCIM_STATIC_TOKEN>"
}
}
}
}Environment variables
ENTRA_CLIENT_SECRETENTRA_CLIENT_CERT_PASSWORDENTRA_SCIM_STATIC_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.