Koskamo

entra-scim-mcp

A Model Context Protocol server that exposes Microsoft Entra SCIM 2.0 Provisioning API operations as MCP tools for AI agents. It supports discovering tenant capabilities, provisioning users and groups, managing membership, and handling custom security attributes. It also includes a local mock server for testing without Azure setup.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

entra-scim-mcp logo, by darrenjrobinsonCommunity listingLocal stdioSource reviewed; not executedPublished by darrenjrobinson
You need:Entra ID P1 (or any SKU containing P1) and an Azure subscription to link for billingEnable the SCIM Provisioning API in ID Governance → Dashboard and link a billing resource groupRegister an application with the Microsoft Graph application permissions you needGrant admin consent. Create either a client secret or upload a PEM client certificate
Vendor documentation

Checks and signals

Each line is separate evidence, not a trust score.

  • Popularity 2 GitHub stars

What you can do with it

  • Provision, read, update, and deprovision users
  • Create, update, and delete groups and manage membership
  • Discover tenant SCIM capabilities
  • Manage custom security attributes

Source and maintenance

Community listingRegistry 0.4.0MIT
Last repository push
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

entra-scim-mcp 0.4.0

npm
entra-scim-mcp package definition
{
  "version": "0.4.0",
  "transport": "stdio",
  "identifier": "entra-scim-mcp",
  "registryType": "npm",
  "registryBaseUrl": "https://registry.npmjs.org",
  "environmentVariables": [
    {
      "name": "ENTRA_TENANT_ID",
      "description": "Directory (tenant) GUID. Required to authenticate against a live tenant; not needed for ENTRA_SCIM_DRY_RUN or ENTRA_SCIM_STATIC_TOKEN, which supply their own placeholder."
    },
    {
      "name": "ENTRA_CLIENT_ID",
      "description": "App registration (client) GUID. Required to authenticate against a live tenant; not needed for ENTRA_SCIM_DRY_RUN or ENTRA_SCIM_STATIC_TOKEN."
    },
    {
      "name": "ENTRA_CLIENT_SECRET",
      "description": "Client secret value. For a live tenant set exactly one of ENTRA_CLIENT_SECRET or ENTRA_CLIENT_CERT_PATH; a certificate is preferred for anything long-lived."
    },
    {
      "name": "ENTRA_CLIENT_CERT_PATH",
      "description": "Path to a PEM holding the certificate and its private key. Set exactly one of ENTRA_CLIENT_SECRET or ENTRA_CLIENT_CERT_PATH."
    },
    {
      "name": "ENTRA_CLIENT_CERT_PASSWORD",
      "description": "Password for the PEM, if it is encrypted."
    },
    {
      "name": "ENTRA_SCIM_BASE_URL",
      "description": "Override the SCIM base URL (default https://graph.microsoft.com/rp/scim). Point it at the bundled mock to try the tools without a tenant."
    },
    {
      "name": "ENTRA_SCIM_STATIC_TOKEN",
      "description": "Use a fixed bearer token instead of Azure AD. Refuses any microsoft.com/microsoft.us host and requires ENTRA_SCIM_BASE_URL; intended for the local mock only."
    },
    {
      "name": "ENTRA_SCIM_DRY_RUN",
      "description": "Set to 1 to run every client-side validation and return the request that would have been sent, without sending it or acquiring a token."
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · repository · passed · metadata changed · updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "entra-scim-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "entra-scim-mcp@0.4.0"
      ],
      "env": {
        "ENTRA_TENANT_ID": "<YOUR_ENTRA_TENANT_ID>",
        "ENTRA_CLIENT_ID": "<YOUR_ENTRA_CLIENT_ID>",
        "ENTRA_CLIENT_SECRET": "<YOUR_ENTRA_CLIENT_SECRET>",
        "ENTRA_CLIENT_CERT_PATH": "<YOUR_ENTRA_CLIENT_CERT_PATH>",
        "ENTRA_CLIENT_CERT_PASSWORD": "<YOUR_ENTRA_CLIENT_CERT_PASSWORD>",
        "ENTRA_SCIM_BASE_URL": "<YOUR_ENTRA_SCIM_BASE_URL>",
        "ENTRA_SCIM_STATIC_TOKEN": "<YOUR_ENTRA_SCIM_STATIC_TOKEN>",
        "ENTRA_SCIM_DRY_RUN": "<YOUR_ENTRA_SCIM_DRY_RUN>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "entra-scim-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "entra-scim-mcp@0.4.0"
      ],
      "env": {
        "ENTRA_TENANT_ID": "<YOUR_ENTRA_TENANT_ID>",
        "ENTRA_CLIENT_ID": "<YOUR_ENTRA_CLIENT_ID>",
        "ENTRA_CLIENT_SECRET": "<YOUR_ENTRA_CLIENT_SECRET>",
        "ENTRA_CLIENT_CERT_PATH": "<YOUR_ENTRA_CLIENT_CERT_PATH>",
        "ENTRA_CLIENT_CERT_PASSWORD": "<YOUR_ENTRA_CLIENT_CERT_PASSWORD>",
        "ENTRA_SCIM_BASE_URL": "<YOUR_ENTRA_SCIM_BASE_URL>",
        "ENTRA_SCIM_STATIC_TOKEN": "<YOUR_ENTRA_SCIM_STATIC_TOKEN>",
        "ENTRA_SCIM_DRY_RUN": "<YOUR_ENTRA_SCIM_DRY_RUN>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "entra-scim-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "entra-scim-mcp@0.4.0"
      ],
      "env": {
        "ENTRA_TENANT_ID": "<YOUR_ENTRA_TENANT_ID>",
        "ENTRA_CLIENT_ID": "<YOUR_ENTRA_CLIENT_ID>",
        "ENTRA_CLIENT_SECRET": "<YOUR_ENTRA_CLIENT_SECRET>",
        "ENTRA_CLIENT_CERT_PATH": "<YOUR_ENTRA_CLIENT_CERT_PATH>",
        "ENTRA_CLIENT_CERT_PASSWORD": "<YOUR_ENTRA_CLIENT_CERT_PASSWORD>",
        "ENTRA_SCIM_BASE_URL": "<YOUR_ENTRA_SCIM_BASE_URL>",
        "ENTRA_SCIM_STATIC_TOKEN": "<YOUR_ENTRA_SCIM_STATIC_TOKEN>",
        "ENTRA_SCIM_DRY_RUN": "<YOUR_ENTRA_SCIM_DRY_RUN>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "entra-scim-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "entra-scim-mcp@0.4.0"
      ],
      "env": {
        "ENTRA_TENANT_ID": "<YOUR_ENTRA_TENANT_ID>",
        "ENTRA_CLIENT_ID": "<YOUR_ENTRA_CLIENT_ID>",
        "ENTRA_CLIENT_SECRET": "<YOUR_ENTRA_CLIENT_SECRET>",
        "ENTRA_CLIENT_CERT_PATH": "<YOUR_ENTRA_CLIENT_CERT_PATH>",
        "ENTRA_CLIENT_CERT_PASSWORD": "<YOUR_ENTRA_CLIENT_CERT_PASSWORD>",
        "ENTRA_SCIM_BASE_URL": "<YOUR_ENTRA_SCIM_BASE_URL>",
        "ENTRA_SCIM_STATIC_TOKEN": "<YOUR_ENTRA_SCIM_STATIC_TOKEN>",
        "ENTRA_SCIM_DRY_RUN": "<YOUR_ENTRA_SCIM_DRY_RUN>"
      }
    }
  }
}

Let your agent find its tools

Find servers like entra-scim-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.