🚀 Okta MCP服務器
Okta MCP服務器集成了大語言模型(LLM)和AI智能體,允許你使用自然語言執行各種Okta管理操作,為你的LLM智能體賦能,實現對Okta組織的管理。
✨ 主要特性
- 由大語言模型驅動的Okta管理:允許你的LLM智能體根據自然語言指令在Okta環境中執行管理任務。
- 安全認證:支持用於交互式使用的設備授權授予和用於安全、自動化的服務器到服務器通信的私鑰JWT。
- 與Okta管理API集成:利用官方Okta API,確保與你的Okta組織進行安全可靠的交互。
- 可擴展架構:設計為易於擴展新功能,並支持更多的Okta API端點。
- 全面的工具支持:支持對用戶、組、應用程序、策略等進行完整的CRUD操作。
🚀 快速開始
前提條件
安裝Okta MCP服務器
安裝Okta MCP服務器,並將其配置為與你首選的MCP客戶端配合使用。
Claude Desktop(包含所有工具)
- 克隆並安裝服務器:
git clone https://github.com/okta/okta-mcp-server.git
cd okta-mcp-server
uv sync
- 通過在
claude_desktop_config.json 中添加以下內容來配置Claude Desktop:
{
"mcpServers": {
"okta-mcp-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/okta-mcp-server",
"okta-mcp-server"
],
"env": {
"OKTA_ORG_URL": "<OKTA_ORG_URL>",
"OKTA_CLIENT_ID": "<OKTA_CLIENT_ID>",
"OKTA_SCOPES": "<OKTA_SCOPES>",
"OKTA_PRIVATE_KEY": "<PRIVATE_KEY_IF_NEEDED>",
"OKTA_KEY_ID": "<KEY_ID_IF_NEEDED>"
}
}
}
}
VS Code
在VS Code的 settings.json 中添加以下內容:
{
"mcp": {
"inputs": [
{
"type": "promptString",
"description": "Okta組織URL(例如,https://dev-123456.okta.com)",
"id": "OKTA_ORG_URL"
},
{
"type": "promptString",
"description": "Okta客戶端ID",
"id": "OKTA_CLIENT_ID",
"password": true
},
{
"type": "promptString",
"description": "Okta作用域(用空格分隔,例如 'okta.users.read okta.groups.manage')",
"id": "OKTA_SCOPES"
},
{
"type": "promptString",
"description": "Okta私鑰。'無瀏覽器'認證需要。",
"id": "OKTA_PRIVATE_KEY",
"password": true
},
{
"type": "promptString",
"description": "用於私鑰的Okta密鑰ID(KID)。'無瀏覽器'認證需要。",
"id": "OKTA_KEY_ID",
"password": true
}
],
"servers": {
"okta-mcp-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/the/okta-mcp-server",
"okta-mcp-server"
],
"env": {
"OKTA_ORG_URL": "${input:OKTA_ORG_URL}",
"OKTA_CLIENT_ID": "${input:OKTA_CLIENT_ID}",
"OKTA_SCOPES": "${input:OKTA_SCOPES}",
"OKTA_PRIVATE_KEY": "${input:OKTA_PRIVATE_KEY}",
"OKTA_KEY_ID": "${input:OKTA_KEY_ID}"
}
}
}
}
}
其他MCP客戶端
要將Okta MCP服務器與其他MCP客戶端一起使用,你可以手動將此配置添加到客戶端,並重新啟動以使更改生效:
{
"mcpServers": {
"okta-mcp-server": {
"command": "uv",
"args": [
"run",
"--directory",
"/path/to/okta-mcp-server",
"okta-mcp-server"
],
"env": {
"OKTA_ORG_URL": "<OKTA_ORG_URL>",
"OKTA_CLIENT_ID": "<OKTA_CLIENT_ID>",
"OKTA_SCOPES": "<OKTA_SCOPES>",
"OKTA_PRIVATE_KEY": "<PRIVATE_KEY_IF_NEEDED>",
"OKTA_KEY_ID": "<KEY_ID_IF_NEEDED>"
}
}
}
}
與Okta進行身份驗證
服務器支持兩種身份驗證方法。選擇最適合你用例的方法。
方法1:設備授權授予(交互式)
- 在你的Okta組織中,創建一個 新的應用集成。
- 選擇 OIDC - OpenID Connect 和 原生應用程序。
- 在 授權類型 下,確保選中 設備授權。
- 轉到Okta API作用域選項卡,並授予你需要的API權限(例如,okta.users.read、okta.groups.manage)。
- 保存應用程序並複製 客戶端ID。
- 文檔:Okta設備授權授予指南
方法2:私鑰JWT(無瀏覽器)
- 創建應用:在你的Okta組織中,創建一個 新的應用集成。選擇 API服務。保存應用並複製 客戶端ID。
- 配置客戶端認證:
- 在應用的 常規 選項卡上,找到 客戶端憑證 部分並點擊 編輯。
- 禁用 在令牌請求中要求證明擁有權(DPoP)標頭。
- 選擇 公鑰/私鑰 作為認證方法。
- 添加公鑰:你有兩種添加密鑰的選項。
- 選項A:在Okta中生成密鑰(推薦)
- 在 公鑰 部分,點擊 添加密鑰。
- 在對話框中,選擇 生成新密鑰。
- Okta將立即生成一個密鑰對。下載或保存私鑰 (
private.pem) 並安全存儲。
- 複製新生成密鑰顯示的 密鑰ID(KID)。
- 選項B:使用你自己的密鑰
- 使用以下
openssl 命令在本地生成一個密鑰對:
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -in private.pem -pubout -out public.pem
2. 點擊 **添加密鑰** 並將你的 **公鑰** (`public.pem`) 內容粘貼到對話框中。
3. 複製你添加的密鑰顯示的 **密鑰ID(KID)**。
- 授予API作用域:轉到 Okta API作用域 選項卡並 授予 你需要的API權限。
- 分配管理員角色:為避免
403 Forbidden 錯誤,轉到 管理員角色 選項卡並將 超級管理員 角色分配給此應用程序。
驗證集成
重新啟動你的MCP客戶端(Claude Desktop、VS Code等),並讓它幫助你管理你的Okta租戶:
顯示我Okta組織中的用戶
📦 支持的工具
Okta MCP服務器提供以下工具,供大語言模型與你的Okta租戶進行交互:
用戶
| 工具 |
描述 |
使用示例 |
list_users |
列出你Okta組織中的所有用戶 |
- 顯示我Okta組織中的用戶 - 查找姓名中包含 'john' 的用戶 - 我在工程部門有哪些用戶? |
get_user |
獲取特定用戶的詳細信息 |
- 顯示用戶john.doe@company.com的詳細信息 - 獲取用戶ID為00u1234567890的信息 - Jane Smith是哪些組的成員? |
create_user |
在你的Okta組織中創建一個新用戶 |
- 創建一個名為John Doe的新用戶,郵箱為john.doe@company.com - 向銷售部門添加一名新員工 - 設置一個承包商賬戶 |
update_user |
更新現有用戶的個人資料信息 |
- 將John Doe的部門更新為工程部門 - 更改用戶jane.smith@company.com的電話號碼 - 更新此用戶的經理 |
deactivate_user |
停用用戶,使其處於非活動狀態 |
- 停用用戶john.doe@company.com - 禁用前員工Jane Smith的訪問權限 - 暫時暫停承包商賬戶 |
delete_deactivated_user |
永久刪除已停用的用戶 |
- 刪除已停用的用戶john.doe@company.com - 永久刪除前員工Jane Smith - 清理舊的承包商賬戶 |
get_user_profile_attributes |
檢索所有支持的用戶個人資料屬性 |
- 有哪些可用的用戶個人資料字段? - 顯示我們可以設置的所有自定義屬性 - 列出標準的Okta用戶屬性 |
組
| 工具 |
描述 |
使用示例 |
list_groups |
列出你Okta組織中的所有組 |
- 顯示我Okta組織中的組 - 查找名稱中包含 'Engineering' 的組 - 我們有哪些安全組? |
get_group |
獲取特定組的詳細信息 |
- 顯示工程組的詳細信息 - 管理員組有多少成員? - 銷售部門分配了哪些應用程序? |
create_group |
創建一個新組 |
- 創建一個名為DevOps Team的新組 - 為財務部門設置一個安全組 - 為臨時承包商添加一個組 |
update_group |
更新現有組的信息 |
- 更新工程組的描述 - 將銷售組的名稱更改為收入團隊 - 修改財務組的設置 |
delete_group |
刪除一個組(需要確認) |
- 刪除舊的營銷組 - 移除臨時項目組 - 清理未使用的安全組 |
list_group_users |
列出屬於某個組的所有用戶 |
- 工程組的成員有哪些? - 顯示所有管理員 - 列出財務部門的用戶 |
list_group_apps |
列出分配給某個組的所有應用程序 |
- 工程組可以訪問哪些應用程序? - 顯示分配給銷售團隊的應用程序 - 列出管理員的所有應用程序 |
add_user_to_group |
將用戶添加到組中 |
- 將john.doe@company.com添加到工程組 - 授予Jane Smith訪問財務應用程序的權限 - 將新員工添加到銷售團隊 |
remove_user_from_group |
將用戶從組中移除 |
- 將john.doe@company.com從工程組中移除 - 撤銷Jane的管理員權限 - 將承包商從財務組中移除 |
應用程序
| 工具 |
描述 |
使用示例 |
list_applications |
列出你Okta組織中的所有應用程序 |
- 顯示我Okta組織中的應用程序 - 查找名稱中包含 'API' 的應用程序 - 我們配置了哪些SSO應用程序? |
get_application |
獲取特定應用程序的詳細信息 |
- 顯示Salesforce應用程序的詳細信息 - 我們的移動應用程序的回調URL是什麼? - 獲取我們的Web應用程序的客戶端ID |
create_application |
創建一個新的應用程序 |
- 為我們的HR系統創建一個新的SAML應用程序 - 設置一個新的API服務應用程序 - 添加一個移動應用程序集成 |
update_application |
更新現有應用程序 |
- 更新我們的Web應用程序的回調URL - 更改Salesforce應用程序的徽標 - 修改我們的HR系統的SAML設置 |
delete_application |
刪除一個應用程序(需要確認) |
- 刪除舊的遺留應用程序 - 移除未使用的測試應用程序 - 清理已棄用的集成 |
activate_application |
激活應用程序 |
- 激活新的HR應用程序 - 啟用Salesforce集成 - 為用戶開啟移動應用程序 |
deactivate_application |
停用應用程序 |
- 停用遺留的CRM應用程序 - 暫時禁用移動應用程序 - 關閉對測試環境的訪問 |
策略
| 工具 |
描述 |
使用示例 |
list_policies |
列出你Okta組織中的所有策略 |
- 顯示安全策略 - 我們有哪些密碼策略? - 列出所有MFA註冊策略 |
get_policy |
獲取策略的詳細信息 |
- 顯示我們的密碼策略的詳細信息 - MFA要求是什麼? - 顯示承包商的登錄策略 |
create_policy |
創建一個新的策略 |
- 為承包商創建一個新的密碼策略 - 為高風險應用程序設置MFA要求 - 為遠程工作者添加一個登錄策略 |
update_policy |
更新現有策略 |
- 更新密碼複雜度要求 - 修改高管的MFA策略 - 更改承包商的會話超時時間 |
delete_policy |
刪除策略 |
- 刪除舊的密碼策略 - 移除已棄用的MFA策略 - 清理未使用的安全策略 |
activate_policy |
激活策略 |
- 激活新的密碼策略 - 啟用MFA要求 - 開啟承包商的登錄策略 |
deactivate_policy |
停用策略 |
- 停用舊的安全策略 - 暫時禁用MFA進行測試 - 關閉嚴格的密碼要求 |
list_policy_rules |
列出特定策略的所有規則 |
- 顯示密碼策略的所有規則 - 配置了哪些MFA規則? - 列出我們的登錄策略中的例外情況 |
get_policy_rule |
獲取策略規則的詳細信息 |
- 顯示承包商MFA規則的詳細信息 - VPN訪問規則的條件是什麼? - 顯示緊急訪問規則 |
create_policy_rule |
為策略創建一個新規則 |
- 為高管添加一個例外規則 - 創建一個承包商訪問規則 - 為IT管理員設置緊急訪問規則 |
update_policy_rule |
更新現有策略規則 |
- 更新遠程工作者的位置限制 - 修改設備信任要求 - 更改基於風險的認證設置 |
delete_policy_rule |
從策略中刪除規則 |
- 刪除舊的承包商例外 - 移除已棄用的VPN規則 - 清理未使用的策略例外 |
activate_policy_rule |
激活策略規則 |
- 激活新的緊急訪問規則 - 啟用承包商限制 - 開啟基於位置的訪問規則 |
deactivate_policy_rule |
停用策略規則 |
- 停用舊的緊急規則 - 暫時禁用位置限制 - 為測試關閉設備信任要求 |
日誌
| 工具 |
描述 |
使用示例 |
get_logs |
從你的Okta組織中檢索系統日誌 |
- 顯示最近的登錄嘗試 - 查找過去24小時內的失敗登錄 - 獲取用戶john.doe@company.com的認證日誌 |
🔐 身份驗證
Okta MCP服務器使用Okta管理API,需要進行身份驗證才能訪問你的Okta租戶。
身份驗證流程
服務器使用OAuth 2.0設備授權流程與Okta進行安全認證,或使用私鑰JWT進行無瀏覽器認證。你的憑證將被安全管理,不會以明文形式暴露。
初始設置
MCP服務器將根據你的配置自動啟動適當的身份驗證流程:
- 設備授權授予:基於交互式瀏覽器的認證
- 私鑰JWT:使用客戶端憑證的無瀏覽器認證
⚠️ 重要提示
設備授權流程不支持 私有云 租戶。私有云用戶應使用帶有客戶端憑證的私鑰JWT認證。
⚠️ 重要提示
使用MCP服務器將根據你的訂閱計劃消耗管理API速率限制。有關更多信息,請參閱 速率限制策略。
🩺 故障排除
當遇到Okta MCP服務器的問題時,可以使用以下幾種故障排除選項來幫助診斷和解決問題。
🐞 調試模式
啟用調試模式以獲取更詳細的日誌:
export OKTA_LOG_LEVEL=DEBUG
💡 使用建議
調試模式在排查連接或認證問題時特別有用。
🚨 常見問題
- 認證失敗
- 確保你在Okta租戶中擁有正確的權限。
- 驗證你的
OKTA_ORG_URL、OKTA_CLIENT_ID 和 OKTA_SCOPES 是否正確。
- 檢查你的應用程序是否已授予必要的API作用域。
- MCP客戶端無法連接到服務器
- 安裝後重新啟動你的MCP客戶端。
- 驗證配置中的服務器路徑是否正確。
- 檢查
uv 是否已安裝並可在你的PATH中訪問。
- API錯誤或權限問題
- 使用
export OKTA_LOG_LEVEL=DEBUG 啟用調試模式。
- 驗證你的Okta應用程序是否具有所需的作用域。
- 確保你的應用程序已分配適當的管理員角色。
- 檢查Okta系統日誌以獲取詳細的錯誤信息。
- “Claude的響應被中斷...” 錯誤
- 這通常是因為Claude達到了其上下文長度限制。
- 嘗試更具體並保持查詢簡潔。
- 將大型請求拆分為更小、更有針對性的操作。
💡 使用建議
大多數連接問題可以通過重新啟動服務器和MCP客戶端來解決。
📋 調試日誌
啟用調試模式以查看詳細日誌:
export OKTA_LOG_LEVEL=DEBUG
你還可以指定日誌文件:
export OKTA_LOG_FILE="/path/to/okta-mcp.log"
👨💻 開發
從源代碼構建
git clone https://github.com/okta/okta-mcp-server.git
cd okta-mcp-server
uv sync
uv run okta-mcp-server
開發腳本
OKTA_LOG_LEVEL=DEBUG uv run okta-mcp-server
uv run pytest
uv pip install -e .
⚠️ 重要提示
此服務器需要 Python 3.8或更高版本 和 uv。
🔒 安全
Okta MCP服務器非常重視安全:
- 通過安全的認證流程管理憑證。
- 不將敏感信息以明文形式存儲。
- 使用OAuth 2.0設備授權流程或私鑰JWT進行認證。
- 支持細粒度的API作用域權限。
- 通過環境變量輕鬆管理憑證。
⚠️ 重要提示
為了遵循安全最佳實踐,請始終在認證過程中審查請求的權限,以確保它們符合你的安全要求。
⚠️ 重要提示
在為你的Okta應用程序授予API作用域時,請始終遵循最小權限原則。
🧪 安全掃描
我們建議定期使用社區工具對該服務器以及你部署的任何其他MCP兼容服務器進行掃描,以發現協議級別的風險和配置錯誤。
這些掃描器有助於識別關鍵漏洞類別中的問題,包括:服務器實現錯誤、工具定義和生命週期風險、交互和數據流弱點以及配置或環境差距。
如果你發現了漏洞,請遵循我們的 負責任披露流程。
💬 反饋和貢獻
我們感謝你對這個項目的反饋和貢獻!在開始之前,請查看:
報告問題
要提供反饋或報告錯誤,請 在我們的問題跟蹤器上提出問題。
漏洞報告
請不要在公共GitHub問題跟蹤器上報告安全漏洞。請遵循 負責任披露流程。
📄 許可證
本項目採用Apache 2.0許可證。有關更多信息,請參閱 LICENSE 文件。
什麼是Okta?
Okta是領先的獨立身份驗證提供商。要了解更多信息,請查看 為什麼選擇Okta?
Copyright © 2025-Present, Okta, Inc.
根據Apache許可證,版本2.0(“許可證”)許可;除非符合許可證的規定,否則不得使用此文件。你可以在http://www.apache.org/licenses/LICENSE-2.0獲得許可證的副本。除非適用法律要求或書面同意,否則根據許可證分發的軟件按“原樣”分發,不附帶任何形式的明示或暗示保證。請參閱許可證以瞭解管理權限和限制的具體語言。