Management MCP server

The KeenAuth management MCP server lets an AI assistant read your environment's configuration through the Model Context Protocol. It runs locally over stdio and calls the management API with your key. There is no installation package yet.

Read-only by default

Without --allow-write the server exposes only read-only tools. No tool deletes anything, in any mode.

Tool What it returns
users_list, users_get, users_search Users, with personal data masked
applications_list, applications_get, application_credentials_list Applications
apis_list, apis_get APIs
connections_list, connections_get Connections
api_keys_list, api_keys_get API keys: metadata only, the raw key is never returned
organizations_list, organizations_get Organizations: name, slug, external ID, status and timestamps; organization metadata is never returned
custom_domains_list, custom_domains_get Custom domains and their DNS records
support_access_grants_list, support_access_grants_get Support access grants
environment_settings_get Environment settings: locales, time zone, session, signup, security notifications, account recovery, MFA, front-channel logout and allowed first factors

--unmask-pii exits with code 2 in this version.

Write tools

Start the server with --allow-write to also expose write tools. This version has one:

Tool What it changes
environment_settings_update Enabled locales, default locale and default time zone only. Session, signup, account recovery, MFA, security notification and first-factor settings cannot be changed through MCP.

Every write takes two calls:

  1. The first call changes nothing. It reads the current settings and returns a preview of each field with its current and proposed value, plus a confirmation_token.
  2. The assistant shows you the preview. Only after you approve does it call the tool again with exactly the same arguments and the confirmation_token. The server then writes the change.

The confirmation_token is created by the running server, works once and expires after 5 minutes. It is bound to the tool, the exact arguments and the version of the settings that was previewed. A token used with different arguments is rejected and used up. If the settings changed after the preview, the write fails with 412 and you start again. The server makes at most 5 writes per second.

Tools that delete, revoke or rotate are not exposed, even with --allow-write. Approve each write call in your MCP client; do not set the client to approve write tools automatically.

Configuration

Variable Required Description
KEENAUTH_API_KEY yes Management API key. Use a key with read scopes only; with --allow-write, add only environment-settings:write.
KEENAUTH_BASE_URL yes Management API base URL of your environment.

--tools <pattern> narrows the tool list, for example --tools "users_*". It can only narrow; it never enables a tool that is off, and without --allow-write it cannot enable a write tool.

What the assistant sees

Audit trail

Every request the MCP server sends carries Idp-Client: keenauth-mcp/<version> and Idp-Mcp-Tool: <tool name>. When a call changes something, its audit log entry records metadata.client = mcp/<version> and metadata.mcp_tool = the tool name, next to the usual actor (the API key or M2M client). Both values are declared by the MCP server, not verified: use them to find what an assistant did, and use the actor to decide who is responsible.

Tool definitions are pinned

Tool names, descriptions and input schemas are generated from the API description at build time and fixed for each version. Their SHA-256 digest is stored in tools.digest; a change to any tool definition changes the digest and requires a security review.