okta-identity-services-adapter
Interface with Okta's centralized identity and access management platform to administer user entities, monitor account states, and manage detailed profile attributes. Enables automated provisioning workflows via secure remote procedure calls.
Author

kapilduraphe
Quick Info
Actions
Tags
Okta Identity Services Adapter (MCP Server)
This modular component facilitates seamless programmatic interaction with the Okta user directory, offering full lifecycle management for users and groups, alongside specialized functionality for streamlined employee onboarding sequences.
Necessary Preconditions
- Runtime Environment: Node.js (version 16 minimum)
- Client Application: Claude Desktop Application
- Okta Access: Valid Okta Developer Tenancy
- Credentials: An Okta Administrator API Access Key
Deployment Guide
1. Okta Tenancy Initialization
- Navigate to the Okta Developer Portal
- Establish a new tenant or log in.
- Record the organization's fully qualified domain name (e.g.,
https://dev-xxxxxxxx.okta.com)
2. API Credential Generation
- Within the Okta Console, navigate to Security settings -> API -> Tokens.
- Initiate the creation of a new token, assigning a clear label.
- Crucially, copy the generated token immediately, as it will not be displayed again.
3. Project Initialization
Install required packages: bash npm install
4. Claude Desktop Configuration
Modify the Claude Desktop configuration file as follows:
MacOS Path: bash code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows Path: bash code %AppData%\Claude\claude_desktop_config.json
Update or inject the server configuration block:
{ "mcpServers": { "okta": { "command": "node", "args": [ "PATH_TO_PROJECT_DIRECTORY/dist/index.js" ], "env": { "OKTA_ORG_URL": "https://your-domain.okta.com", "OKTA_API_TOKEN": "your-api-token" } } } }
Apply changes by restarting the Claude Desktop environment.
Exposed Functionality (Toolsets)
The adapter exposes the following functional interfaces:
Identity Administration
retrieve_user_profile
Fetches comprehensive attributes for a singular identity record in Okta, encompassing: - Identity Indices (UUID, Lifecycle State) - Timeline Data (Creation, Activation Timestamps) - Demographic Data (Full Name, Primary Email) - Organizational Context (Role, Reporting Structure) - Contact Vectors and Residency Details
query_identities_by_property
Performs targeted lookups against user profiles using diverse criteria and Okta's native search engine:
- Targeted Fields: firstName, lastName, email, managerId, orgUnit, jobTitle, divisionName, company, employeeId, costCenterCode, identityType, locationCity, region
- Supported Operators:
- eq (Equality match)
- sw (Prefix matching)
- ew (Suffix matching)
- co (Substring inclusion)
- pr (Existence check)
- Key Enhancements:
- Leverages Okta's indexed search for efficiency.
- Graceful degradation to in-memory filtering for esoteric operator requests.
- Sanitization/Obfuscation of sensitive fields in results.
- Granular control over result set pagination and status inclusion (active/inactive).
enumerate_all_identities
Returns a paginated list of user records, supporting SCIM filtering syntax (e.g., 'profile.status eq "ACTIVE"') and generalized textual searches.
enforce_user_activation
Transitions a user's state to 'Active'. Supports triggering the standard Okta activation notification.
temporarily_disable_user
Places a user account into a suspended state.
restore_user_account
Reverts a previously suspended user account to its prior operational status.
permanently_remove_user
Deletes an identity record (requires the user to be deactivated prior to execution).
fetch_user_access_geoloc
Queries system logs to ascertain the last recorded geographical point of authentication for a specified identity.
Group Hierarchy Management
catalogue_all_groups
Lists existing groups within the tenant, allowing for filtering based on group metadata (e.g., 'type eq "OKTA_GROUP"') and textual searching.
initialize_new_group
Creates a designated group entity, parameterized by display name and optional descriptive text.
fetch_group_details
Retrieves the full membership and attribute set for an identified group.
retire_group_entity
Irreversibly removes a specified group structure.
integrate_identity_into_group
Adds a designated user identifier to a specified group membership list.
eject_identity_from_group
Revokes a user's membership from a group assignment.
map_group_members
Lists all associated user identifiers belonging to a particular group, with pagination controls.
Provisioning Orchestration (Beta)
Warning: Provisioning mechanisms are under active development and should be piloted cautiously before wide-scale production deployment, subject to evolving Okta API governance.
batch_user_creation_from_csv
Ingests user data provided as a raw CSV string payload to facilitate mass account instantiation. Includes options for immediate enablement and group assignment during creation.
attribute_driven_group_synchronization
Assigns sets of users to target groups dynamically based on matching values within their profile attributes (e.g., 'All users with Title="Analyst" join the "Tier 1 Support" group').
application_entitlement_allocation
Bulk assignment of specified application access entitlements to a cohort of users.
comprehensive_onboarding_sequence
Executes a multi-step provisioning orchestration pipeline: user creation, mandatory attribute population, automatic activation, application entitlement distribution, and system welcome messaging.
Interaction Examples in Claude
Once connected, utilize natural language for operations such as:
Identity Operations
- "Retrieve comprehensive data for the user identified by ID XXXXX"
- "Identify all personnel affiliated with the 'Infrastructure' organizational unit"
- "Search for identities whose primary email address contains 'corp.local'"
- "List users possessing the 'Contractor' status designation"
- "Activate the account associated with user ID YYYYY"
- "Locate the geographical login origin for user jane.doe@org.com"
Advanced Identity Filtering
- "Find all users where the 'employeeNumber' field is populated"
- "Show identities where 'firstName' starts with 'Alex'"
Group Operations
- "Display the entire registry of organizational groupings"
- "Instantiate a new group named 'Project Phoenix Team'"
- "Assign user ZZZZ to the group named 'All Developers'"
- "What are the current members of the 'Executive Leadership' group?"
Automated Provisioning
- "Execute the bulk import process using the following new hire data: [CSV Payload]"
- "Synchronize group memberships based on the 'Role' attribute value."
Operational Resilience and Diagnostics
Error Management Framework
This adapter is engineered to gracefully handle common API exceptions: - Resource Not Found (HTTP 404) - Authorization Failures (Invalid Credentials) - Malformed Payload / Schema Validation Errors - Rate Limit Exceeded Scenarios - CSV Parsing Integrity Violations
Troubleshooting Common Failures
Tool Discovery Failure:
- Verify the integrity of environment variables (OKTA_ORG_URL must include scheme; OKTA_API_TOKEN must be valid).
- Examine the relevant MCP service logs within the Claude Desktop directory structure.
Authentication Errors: - Confirm the API key scope permits the requested operations. - Ensure the organizational URL is exactly correct, avoiding trailing slashes if not expected by the underlying SDK.
Search Operator Mismatch: - Review the 'Search Operator Compatibility' table below; unsupported server-side operators trigger a less performant, client-side filtering fallback.
Log Access Procedures
For real-time tracing of adapter activities:
MacOS/Linux: bash tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
Windows (PowerShell): powershell Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
Security Posture
- Credentials must remain sequestered, never committed to source control.
- Mandate the principle of least privilege for the Okta API Token.
- Periodic revocation and renewal of access keys are advised.
- Sensitive user data presented in search results is subject to PII obfuscation protocols.
Search Operator Compatibility Matrix
| Profile Field Category | eq | sw | ew | co | pr |
|---|---|---|---|---|---|
| Names (firstName, lastName) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Identifiers (email, login) | ✅ | ✅ | ✅ | ✅ | ✅ |
| Contextual (department, title) | ✅ | ✅ | ❌ | ❌* | ✅ |
| Metadata (division, organization) | ✅ | ✅ | ❌ | ❌* | ✅ |
| General Attributes | ✅ | ✅ | ⚠️ | ⚠️ | ✅ |
*Note: Non-supported server-side operations automatically engage client-side processing for result fulfillment.
Data Schemas (TypeScript Definitions)
This adapter utilizes strict typing for data exchange:
typescript interface OktaUserProfile { login: string; email: string; secondEmail?: string; firstName: string; lastName: string; displayName: string; nickName?: string; organization: string; title: string; division: string; department: string; employeeNumber: string; userType: string; costCenter: string; mobilePhone?: string; primaryPhone?: string; streetAddress: string; city: string; state: string; zipCode: string; countryCode: string; preferredLanguage: string; profileUrl?: string; }
interface OktaUserRecord { id: string; status: string; created: string; activated: string; lastLogin: string; lastUpdated: string; statusChanged: string; passwordChanged: string; profile: OktaUserProfile; }
interface OktaGroupEntity { id: string; created: string; lastUpdated: string; lastMembershipUpdated: string; type: string; objectClass: string[]; profile: { name: string; description: string; }; }
CSV Input Specification for Provisioning
When utilizing batch_user_creation_from_csv, the input text must adhere to the following column requirements:
- firstName (Mandatory)
- lastName (Mandatory)
- email (Mandatory)
- department (Optional)
- title (Optional)
- mobilePhone (Optional)
Repository Governance
This software is distributed under the terms of the MIT License.
Support Channels
For assistance, refer to the diagnostics section above, consult the client-side logs, or submit an inquiry referencing the server's output stream. Contributions are welcomed via pull requests.
WIKIPEDIA: Business management tools are all the systems, applications, controls, calculating solutions, methodologies, etc. used by organizations to be able to cope with changing markets, ensure a competitive position in them and improve business performance.

