get_userLABSCO SUMMARY
Directory answers, and the action that follows them.
"Who in engineering reports to her" and "suspend that account now" belong to the same conversation: search runs on any profile attribute, and the lifecycle calls are in the same connection.
What it is
A Node server over Okta's user management API. It reads user and group records, searches the directory on any profile attribute, and performs the account lifecycle actions an administrator would do by hand in the console.
What you get
- get_user returns the full record: status, created, activated and last-login dates, name, email, employment details, contact information, address and preferences
- find_users_by_attribute searches on firstName, lastName, email, manager, department, title, division, organization, employeeNumber, costCenter, userType, city or state, with eq for exact match and sw for starts-with
- list_users and list_groups return the directory and its groups
- activate_user, suspend_user, unsuspend_user and delete_user cover the account lifecycle
- get_user_last_location reports where the account was last seen from
Requirements
Node.js v16 or higher, an Okta org, and an admin API token created under Security > API > Tokens. The server reads OKTA_ORG_URL and OKTA_API_TOKEN. That token can suspend and delete accounts, so scope and store it the way you would any admin credential.
Setup effort
Build from source — get the source, then point your client at dist/index.js
USE CASES
Finding people by something other than a name
Department, manager, title, cost centre or city, with exact and starts-with matching.
Reading an account before you touch it
The full record and the last location it was seen from, so the decision is informed.
Offboarding someone
Read the account, suspend it, and delete it when the retention window is up.
Getting a new starter live
Activate the account and check the groups it should be sitting in.
Auditing the directory
Users and groups listed together, which is where stale access usually shows up.
19 tools
Listed in project docs. Your client may show a different list.
find_users_by_attributelist_usersactivate_usersuspend_userunsuspend_userdelete_userget_user_last_locationlist_groupscreate_groupget_groupdelete_groupassign_user_to_groupremove_user_from_grouplist_group_usersbulk_user_importassign_users_to_groupsprovision_applicationsrun_onboarding_workflowBEFORE YOU INSTALL
What to know first
Tools you get
19 tools named in the project's documentation.
Requires
- node on PATH
- Node.js
- OKTA_API_TOKEN in your environment
- OKTA_ORG_URL in your environment
INSTALLATION
Connect your client
Get the source, then point your client at dist/index.js. This one is built from source rather than installed with a single command.
Server setup
Setup
git clone https://github.com/kapilduraphe/okta-mcp-server
cd okta-mcp-serverCreate an Okta developer account and note your Okta domain
Create an Admin API Token under Security > API > Tokens and copy it
npm installAdd the mcpServers entry to claude_desktop_config.json and restart Claude Desktop
node
node <YOUR_PATH_TO_PROJECT_DIRECTORY>/dist/index.jsMCP Clients
Claude Desktop
{
"mcpServers": {
"okta": {
"command": "node",
"args": [
"<YOUR_PATH_TO_PROJECT_DIRECTORY>/dist/index.js"
],
"env": {
"OKTA_ORG_URL": "https://<YOUR_DOMAIN>.okta.com",
"OKTA_API_TOKEN": "<YOUR_OKTA_API_TOKEN>"
}
}
}
}