by kapilduraphe
Provides Claude with the ability to manage Okta users, groups, and onboarding processes via a Model Context Protocol server.
Enables Claude to perform full‑stack user and group management in an Okta tenant, plus experimental bulk onboarding workflows, through a dedicated MCP server.
npm install
in the project directory.claude_desktop_config.json
using the provided JSON snippet, inserting your Okta domain and token.eq
, sw
, ew
, co
, pr
), pagination, sorting, and automatic client‑side fallback.Q: Which environment variables are required?
A: OKTA_ORG_URL
(full URL, e.g., https://dev-123456.okta.com
) and OKTA_API_TOKEN
(admin API token).
Q: Do I need to build the project before running it?
A: Yes. After npm install
, run npm run build
(or npm run compile
) to generate dist/index.js
.
Q: Why are some search operators not supported for certain attributes? A: Okta’s native search limits operator support; the server falls back to client‑side filtering when needed.
Q: Can I use the onboarding tools in production? A: They are marked experimental; test in a non‑production tenant first and monitor API limits.
Q: Where are the server logs located?
A: On macOS/Linux: ~/Library/Logs/Claude/mcp*.log
; on Windows: %AppData%\Claude\Logs\mcp*.log
.
This MCP server enables Claude to interact with Okta's user management system, providing comprehensive user and group management capabilities along with onboarding automation.
dev-123456.okta.com
)Install dependencies:
npm install
Open your Claude Desktop configuration file:
For MacOS:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
For Windows:
code %AppData%\Claude\claude_desktop_config.json
Add or update the configuration:
{
"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"
}
}
}
}
Save the file and restart Claude Desktop.
The server provides the following tools:
Retrieves detailed user information from Okta, including:
Search users by any profile attribute with advanced filtering:
eq
(exact match) - Works for all attributessw
(starts with) - Works for all attributesew
(ends with) - Works for most attributesco
(contains) - Works for some attributes (firstName, lastName, email)pr
(present/exists) - Works for all attributes (finds users with any value for that attribute)Lists users from Okta with optional filtering and pagination:
Activates a user in Okta:
Suspends a user in Okta
Unsuspends a previously suspended user in Okta
Deletes a user from Okta (note: user must be deactivated first)
Retrieves the last known location and login information for a user from Okta system logs
Lists user groups from Okta with optional filtering and pagination:
Creates a new group in Okta with a name and optional description
Retrieves detailed information about a specific group
Deletes a group from Okta
Assigns a user to a group in Okta
Removes a user from a group in Okta
Lists all users in a specific group with pagination support
Note: The onboarding automation tools are experimental and may be subject to changes or limitations based on Okta's API constraints. Use with caution in production environments.
Imports multiple users from a CSV string:
Assigns multiple users to groups based on attribute mappings:
Provisions application access for multiple users:
Runs a complete onboarding workflow for multiple users from CSV data:
After setup, you can use commands like:
find_users_by_attribute
with department eq "Sales"
email sw "admin"
manager pr
lastName co "smith"
The server includes robust error handling for:
Tools not appearing in Claude:
tail -f ~/Library/Logs/Claude/mcp*.log
Authentication Errors:
Server Connection Issues:
node /path/to/build/index.js
Search Issues:
contains
doesn't work for department
)To view server logs:
For MacOS/Linux:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
For Windows:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
If you're getting environment variable errors, verify:
OKTA_ORG_URL
: Should be complete URL (e.g., "https://dev-123456.okta.com")OKTA_API_TOKEN
: Should be a valid API tokenDifferent Okta attributes support different search operators:
Attribute Type | eq | sw | ew | co | pr |
---|---|---|---|---|---|
firstName, lastName | ✅ | ✅ | ✅ | ✅ | ✅ |
email, login | ✅ | ✅ | ✅ | ✅ | ✅ |
department, title | ✅ | ✅ | ❌ | ❌* | ✅ |
division, organization | ✅ | ✅ | ❌ | ❌* | ✅ |
All attributes | ✅ | ✅ | ⚠️ | ⚠️ | ✅ |
*❌ = Not supported, ⚠️ = May not be supported for all attributes
Note: When an operator is not supported, the server automatically falls back to client-side filtering for compatibility.
The server includes TypeScript interfaces for Okta user and group data:
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 OktaUser {
id: string;
status: string;
created: string;
activated: string;
lastLogin: string;
lastUpdated: string;
statusChanged: string;
passwordChanged: string;
profile: OktaUserProfile;
}
interface OktaGroup {
id: string;
created: string;
lastUpdated: string;
lastMembershipUpdated: string;
type: string;
objectClass: string[];
profile: {
name: string;
description: string;
};
}
When using the bulk import or onboarding workflow tools, your CSV should include these headers:
firstName
(required)lastName
(required)email
(required)department
(optional)title
(optional)mobilePhone
(optional)Example:
firstName,lastName,email,department,title,mobilePhone
John,Doe,john.doe@example.com,Engineering,Senior Developer,+1-555-123-4567
Jane,Smith,jane.smith@example.com,Marketing,Director,+1-555-987-6543
MIT License - See LICENSE file for details.
If you encounter any issues:
Note: PRs welcome!
Please log in to share your review and rating for this MCP.
{ "mcpServers": { "okta": { "command": "node", "args": [ "dist/index.js" ], "env": { "OKTA_ORG_URL": "<YOUR_OKTA_DOMAIN>", "OKTA_API_TOKEN": "<YOUR_API_TOKEN>" } } } }
Explore related MCPs that share similar capabilities and solve comparable challenges
by zed-industries
A high‑performance, multiplayer code editor designed for speed and collaboration.
by modelcontextprotocol
Model Context Protocol Servers
by modelcontextprotocol
A Model Context Protocol server for Git repository interaction and automation.
by modelcontextprotocol
A Model Context Protocol server that provides time and timezone conversion capabilities.
by cline
An autonomous coding assistant that can create and edit files, execute terminal commands, and interact with a browser directly from your IDE, operating step‑by‑step with explicit user permission.
by continuedev
Enables faster shipping of code by integrating continuous AI agents across IDEs, terminals, and CI pipelines, offering chat, edit, autocomplete, and customizable agent workflows.
by upstash
Provides up-to-date, version‑specific library documentation and code examples directly inside LLM prompts, eliminating outdated information and hallucinated APIs.
by github
Connects AI tools directly to GitHub, enabling natural‑language interactions for repository browsing, issue and pull‑request management, CI/CD monitoring, code‑security analysis, and team collaboration.
by daytonaio
Provides a secure, elastic infrastructure that creates isolated sandboxes for running AI‑generated code with sub‑90 ms startup, unlimited persistence, and OCI/Docker compatibility.