🎉 Nouveautés de la v0.1.0-BETA - Transformation majeure de l'architecture !
Cette version représente une refonte architecturale complète avec ces améliorations clés :
🏗️ Architecture centrale
- 🚀FastMCP 2.0: Migration de l'ancien paquetage MCP vers FastMCP 2.0 pour des fonctionnalités de protocole de pointe
- 🧹 Code plus propre: Suppression de la dépendance
tool_registry.py
pour une base de code plus simple et plus facile à maintenir - ⚡ Meilleures performances: Modèles asynchrones modernes et gestion optimisée des requêtes
🛠️ Outils améliorés
- 📝 Réécriture complète: Tous les outils ont été réécrits avec de meilleures annotations et descriptions pour la compréhension de l'IA
- 🛡️ Validation améliorée: Amélioration de la gestion des erreurs et de la validation des entrées pour toutes les opérations
🌐 Client unifié
- 🎯 CLI unique: nouveau client de ligne de commande unifié prenant en charge plusieurs transports (STDIO, HTTP)
- ⚙️ Configuration simplifiée: Configuration simplifiée avec des valeurs par défaut intelligentes
🔐 S écurité avancée
- 🎫 Jetons de support: Prise en charge complète des jetons porteurs JWT avec validation
jwks_uri
- 🏢Enterprise Auth: Prise en charge des flux d'authentification d'entreprise et de l'accès basé sur le périmètre
🚀 Prêt pour l'avenir
- 🎯 Prise en charge de l'échantillonnage: Fondation pour les capacités avancées d'échantillonnage des requêtes
- 🔌 Prêt pour l'intergiciel: Système d'intergiciel extensible pour le traitement personnalisé
- 📡 Évolution du protocole: Accès aux dernières fonctionnalités MCP au fur et à mesure de leur développement et de leur normalisation
📋 Table des matières
- 🎉 Nouveautés de la v0.1.0-BETA - Transformation majeure de l'architecture !
- 📋 Table des matières
- 🔍 Qu'est-ce que le protocole de contexte de modèle ?
- ⚠️ IMPORTANT : Sécurité et limites
- 🛠️ Outils disponibles
- 🚀 Démarrage rapide
- 🧠 Fournisseurs d'IA pris en charge
- 5. Déploiement de Docker- Exécution des conteneurs Docker
- ⚠️ Bon à savoir
- 🗺️ Feuille de route
- 🆘 Besoin d'aide ?
- 💡 Demandes de fonctionnalités et idées
- 👥 Contributeurs
- ⚖️ Mentions légales
🔍 Qu'est-ce que le protocole de contexte de modèle ?
⚠️ IMPORTANT : Sécurité et limitations
Veuillez lire attentivement cette section avant d'utiliser Okta MCP Server.
🔄 Flux de données et confidentialité
Lorsque vous faites une demande, l'interaction se produit directement entre le LLM et les outils Okta MCP - l'application client n'est plus au milieu. Toutes les données renvoyées par ces outils (y compris les profils d'utilisateur complets, les adhésions à des groupes, etc.) sont envoyées et stockées dans le contexte du LLM pendant toute la durée de la transaction pour cette conversation.
Principales considérations relatives à la protection de la vie privée :
- Le LLM (Claude, GPT, etc.) reçoit et traite toutes les données Okta récupérées par les outils
- Ces données restent dans le contexte du LLM pendant toute la durée de la conversation
- Vous devez être à l'aise avec le fait que vos données d'utilisateur Okta soient traitées par les systèmes du fournisseur LLM
- Avant d'utiliser ces outils, assurez-vous que vous êtes à l'aise avec les données Okta envoyées aux serveurs du modèle d'IA
limites de la fenêtre contextuelle
MCP est conçu pour des flux de travail légers similaires à Zapier, et non pour des opérations de données en masse.
Recommandation : Limitez les demandes à moins de 100 entités par transaction. Évitez les opérations qui nécessitent la récupération de grands ensembles de données ou plusieurs appels d'API.
Exemples :
❌ Évitez ces types de demandes :
- "Récupérer les 10 000 utilisateurs de notre locataire Okta et analyser leurs habitudes de connexion"
- "Trouver les utilisateurs qui n'ont pas Okta Verify inscrit en tant que facteur"
✅ Meilleures approches :
- "Obtenir les 20 utilisateurs les plus récemment créés"
- "Trouver les utilisateurs qui ne se sont pas connectés depuis plus de 90 jours, limiter aux 50 premiers résultats"
💡 Pour les ensembles de données plus importants et les requêtes complexes : Envisagez d'utiliser l'agent Okta AI pour des requêtes et des ensembles de données plus importants, L'agent est en train d'être amélioré avec des fonctionnalités "actionnables" similaires pour gérer des ensembles de données plus importants et des scénarios plus complexes dans un avenir très proche.
🚨 Avertissement sur la sécurité du transport HTTP
Les modes de transport HTTP (Streamable HTTP et SSE) présentent des risques de sécurité importants :
- Ils ouvrent des serveurs HTTP non authentifiés avec un accès complet à votre locataire Okta
- Aucune authentification ou autorisation n'est fournie
- Toute personne pouvant atteindre le port réseau peut envoyer des commandes à votre environnement Okta
- EXTRÊMEMENT DANGEREUX lors de l'utilisation de l'accès HTTP à distance via
mcp-remote
Meilleure pratique : N'utilisez que la méthode de transport STDIO (mode par défaut) à moins que vous n'ayez mis en place des contrôles de sécurité spécifiques et que vous compreniez les risques.
🛠️ Outils disponibles
Le serveur Okta MCP fournit actuellement les outils suivants :
Gestion des utilisateurs
list_okta_users
- Récupérer les utilisateurs avec des options de filtrage, de recherche et de paginationget_okta_user
- Obtenir des informations détaillées sur un utilisateur spécifique par ID ou loginlist_okta_user_groups
- Liste tous les groupes auxquels appartient un utilisateur spécifiquelist_okta_user_applications
- Liste tous les liens d'application (applications assignées) pour un utilisateur spécifiquelist_okta_user_factors
- Liste de tous les facteurs d'authentification enregistrés pour un utilisateur donné
Opérations sur les groupes
list_okta_groups
- Récupère les groupes avec des options de filtrage, de recherche et de paginationget_okta_group
- Obtenir des informations détaillées sur un groupe spécifiquelist_okta_group_members
- Liste tous les membres d'un groupe spécifiquelist_okta_assigned_applications_for_group
- Liste de toutes les applications affectées à un groupe spécifique
Gestion des applications
list_okta_applications
- Récupère les applications avec des options de filtrage, de recherche et de paginationlist_okta_application_users
- Liste tous les utilisateurs affectés à une application spécifiquelist_okta_application_group_assignments
- Liste de tous les groupes affectés à une application spécifique
Gestion des politiques et du réseau
list_okta_policy_rules
- Liste de toutes les règles d'une politique spécifique avec des conditions et des actions détailléesget_okta_policy_rule
- Permet d'obtenir des informations détaillées sur une règle de politique spécifiquelist_okta_network_zones
- Liste toutes les zones de réseau avec les plages IP et les détails de configuration
Événements du journal du système
get_okta_event_logs
- Récupère les événements du journal système Okta avec des options de filtrage et de recherche basées sur le temps
Utilitaires de date et d'heure
get_current_time
- Obtenir l'heure UTC actuelle au format ISO 8601parse_relative_time
- Convertit les expressions temporelles en langage naturel au format ISO 8601
Des outils supplémentaires pour les applications, les facteurs, les politiques et les opérations plus avancées sont sur la feuille de route et seront ajoutés dans les prochaines versions.
🚀 Démarrage rapide
Conditions préalables
✅ Python 3.8+ installé sur votre machine
✅ Un locataire Okta avec un accès approprié à l'API
✅ Un client AI compatible MCP (Claude Desktop, Microsoft Copilot Studio, etc.)
⚠️ Note importante sur la compatibilité des modèles :
Tous les modèles d'IA ne fonctionnent pas avec ce serveur MCP. Les tests n'ont été effectués qu'avec :
- GPT-4.0
- Claude 3.7 Sonnet
- Google-2.5-pro
Vous devez utiliser les dernières versions du modèle qui prennent explicitement en charge les capacités d'appel d'outil/d'appel de fonction. Les modèles plus anciens ou les modèles sans prise en charge de l'appel d'outil ne seront pas en mesure d'interagir avec le serveur Okta MCP.
🧠 Fournisseurs d'IA pris en charge
Le serveur Okta MCP prend en charge plusieurs fournisseurs d'IA grâce à son système de configuration flexible. Cela vous permet de vous connecter à divers modèles de grand langage en fonction de vos besoins spécifiques et de l'accès existant.
Fournisseurs actuellement pris en charge :
Fournisseur | Variable d'environnement | Description de la variable d'environnement du fournisseur |
---|---|---|
OpenAI | AI_PROVIDER=openai | Se connecter à l'API OpenAI avec des modèles comme GPT-4o. Nécessite une clé API OpenAI. |
Azure OpenAI | AI_PROVIDER=azure_openai | Utilisez les modèles OpenAI hébergés sur Azure avec des fonctions de sécurité et de conformité améliorées. |
Anthropique | AI_PROVIDER=anthropic | Connectez-vous aux modèles Claude d'Anthropic (principalement testé avec Claude 3.7 Sonnet). |
Google Vertex AI | AI_PROVIDER=vertex_ai | Utilise les modèles Gemini de Google via Vertex AI. Nécessite un compte de service Google Cloud. |
Compatible avec OpenAI | AI_PROVIDER=openai_compatible | Connectez-vous à n'importe quel point de terminaison compatible avec l'API OpenAI, comme Fireworks.ai, Ollama ou d'autres fournisseurs qui mettent en œuvre la spécification de l'API OpenAI. |
Installation
# Cloner le dépôt git clone https://github.com/fctr-id/okta-mcp-server.git cd okta-mcp-server # Créer et activer un environnement virtuel python -m venv venv source venv/bin/activate # Sous Windows utiliser : venv\Scripts\activate # Installer les dépendances pip install -r requirements.txt
⚠️ AVIS : Si vous clonez à nouveau ce dépôt ou si vous tirez des mises à jour, assurez-vous toujours de réexécuter
pip install -r requirements.txt
pour vous assurer que toutes les dépendances sont à jour.
Configuration et utilisation
Créez un fichier de configuration avec vos paramètres Okta :
Pour utiliser le client en ligne de commande (sans mémoire), suivez les instructions ci-dessous
# Copiez l'exemple de configuration cp .env.sample .env # Editez l'env avec vos paramètres # Requis : Domaine Okta, jeton API et paramètres LLM cd clients python mcp-cli-stdio-client.py
Pour utiliser les hôtes MCP comme Claude Code, vsCode ...etc trouvez la configuration json ci-dessous
Transports supportés et lancement
Le serveur Okta MCP supporte plusieurs protocoles de transport :
1. Standard I/O (STDIO) - Recommandé
- Sécurité: ✅ Communication directe via des flux d'entrée/sortie standard
- Cas d'utilisation: Idéal pour les assistants d'IA de bureau comme Claude Desktop
- Performance: ✅ Léger et efficace
- Configuration: Pour Claude Desktop, ajouter à
claude_desktop_config.json
:
Remplacez{ "mcpServers" : { "okta-mcp-server" : { "command" : "DIR/okta-mcp-server/venv/Scripts/python", "args" : [ "DIR/okta-mcp-server/main.py" ], "env" : {"OKTA_CLIENT_ORGURL" : "https://dev-1606.okta.com", "OKTA_API_TOKEN" : "OKTA_API_TOKEN" } } }
DIR
par le chemin absolu de votre répertoire etOKTA_API_TOKEN
par votre jeton actuel
2. Transport HTTP en continu - Moderne et Standard actuel
Current Standard - Transport moderne basé sur HTTP avec des fonctionnalités avancées :
- Caractéristiques: ✅ Flux d'événements en temps réel, gestion de session, prise en charge de la resumabilité
- Performance: ✅ Meilleure évolutivité et gestion des connexions
- Cas d'utilisation: Applications web modernes et clients prenant en charge le streaming HTTP
- Sécurité: ⚠️ Serveur HTTP local - sécurisé dans les environnements contrôlés
Démarrage du serveur HTTP en continu :
# Démarrer le serveur avec une reconnaissance explicite des risques python main.py --http --iunderstandtherisks # Le serveur démarrera sur http://localhost:3000/mcp # Se connecter en utilisant des clients compatibles HTTP streamable
Caractéristiques :
- ✅ S treaming en temps réel - Mises à jour de la progression en direct pendant les opérations
- gestion de session - maintien de l'état de la connexion
- streaming d 'événements - Événements envoyés par le serveur pour des notifications en temps réel
- meilleure gestion des erreurs - Réponses détaillées aux erreurs
- protocole moderne - Basé sur les dernières spécifications MCP
Pour tester le client HTTP en continu :
cd clients python mcp-cli-streamable-client.py
3. Accès HTTP à distance - Utilisation avancée à haut risque uniquement
⚠️ EXTRÊMEMENT DANGEREUX - LIRE ATTENTIVEMENT
Pour les clients MCP qui ne supportent pas nativement les connexions à distance, vous pouvez utiliser mcp-remote
via NPX :
Prérequis :
- Node.js et NPM installés
- Serveur Okta MCP fonctionnant en mode HTTP
Configuration :
# 1. Installer mcp-remote globalement npm install -g @anthropic/mcp-remote # 2. Démarrez votre serveur Okta MCP en mode HTTP python main.py --http --iunderstandtherisks # 3. Configurez votre client MCP (par exemple, Claude Desktop)
Configuration de Claude Desktop :
{ "mcpServers" : { "okta-mcp-server" : { "command" : "npx", "args" : [ "mcp-remote", "http://localhost:3000/mcp" ], "env" : { "OKTA_CLIENT_ORGURL" : "https://dev-1606.okta.com", "OKTA_API_TOKEN" : "your_actual_api_token" } } }
🚨 CRITICAL SECURITY WARNINGS :
- NE JAMAIS utiliser dans des environnements de production
- N'exposez JAMAIS le port HTTP (3000) aux réseaux publics
- N'IMPORTE QUI ayant un accès au réseau peut contrôler votre locataire Okta
- Pas de protection de l'authentification ou de l'autorisation
- Toutes les opérations d'Okta sont exposées sans restrictions
- Utiliser uniquement dans des environnements de développement isolés et sécurisés
- N'envisagez cette approche que si le transport STDIO n'est absolument pas possible
Quand pouvez-vous avoir besoin de cette approche ?
- Test des intégrations MCP qui nécessitent un transport HTTP
- Applications client spécifiques qui ne peuvent pas utiliser STDIO
- Scénarios de développement nécessitant un débogage HTTP
- JAMAIS pour la production ou les environnements partagés
4. Événements envoyés par le serveur (SSE) - Obsolète
⚠️ DEPRECATED : Le transport SSE est obsolète et n'est pas recommandé pour les nouvelles implémentations.
# Exécuter en mode SSE (nécessite une reconnaissance explicite du risque) python main.py --sse --iunderstandtherisks
- Cas d'utilisation: Clients MCP hérités qui requièrent spécifiquement le mode SSE (non recommandé)
- Sécurité: ⚠️ Mêmes risques de sécurité HTTP que HTTP Streamable
- Recommandation: Utiliser le transport Streamable HTTP à la place pour toutes les nouvelles implémentations
5. Déploiement Docker
Le serveur Okta MCP fournit des images Docker pour tous les types de transport, offrant des options de déploiement conteneurisé.
Exécution des conteneurs Docker
Transport STDIO (recommandé) :Pour Claude Desktop ou d'autres clients MCP, configurer pour utiliser le conteneur Docker :
{ "mcpServers" : { "okta-mcp-server" : { "command" : "docker", "args" : [ "run", "-i", "--rm", "-e", "OKTA_CLIENT_ORGURL", "-e", "OKTA_API_TOKEN", "fctrid/okta-mcp-server:stdio" ], "env" : {"OKTA_CLIENT_ORGURL" : "https://your-org.okta.com", "OKTA_API_TOKEN" : "your_api_token" } } } }
Transport HTTP en continu (norme actuelle) :
# Démarrer le conteneur HTTP docker run -d --name okta-mcp-http \ -p 3000:3000 \N -e OKTA_API_TOKEN=votre_api_token \N -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \N fctrid/okta-mcp-server:http # Configurer votre client MCP pour qu'il se connecte à http://localhost:3000/mcp
Transport SSE (Déclassé - Non recommandé) :
# Démarrer le conteneur SSE (obsolète) docker run -d --name okta-mcp-sse \N -p 3000:3000 \N -e OKTA_API_TOKEN=votre_api_token \N -e OKTA_CLIENT_ORGURL=https://your-org.okta.com \N fctrid/okta-mcp-server:sse # Configurer votre client MCP pour qu'il se connecte à http://localhost:3000/sse
Construire les images localement :
# Construire toutes les variantes docker build --target stdio -t okta-mcp-server:stdio . docker build --target http -t okta-mcp-server:http . docker build --target sse -t okta-mcp-server:sse
⚠️ Bon à savoir
Version bêta 🧪
- Architecture entièrement réécrite avec FastMCP 2.0
- Stabilité et performances améliorées par rapport aux versions alpha précédentes
- Système d'outils complet avec intégration améliorée de l'IA
- Mieux adaptée aux environnements de développement et de test
- L'aptitude à la production est en cours d'évaluation avec des fonctions de sécurité améliorées
La sécurité avant tout 🛡️
- Conçu pour un fonctionnement avec le moins de privilèges possible
- Accès par défaut en lecture seule aux ressources Okta
- Les futures opérations d'écriture nécessiteront des flux d'approbation explicites
Limites actuelles 🔍
- Début avec un ensemble limité d'outils en lecture seule pour les utilisateurs et les groupes
- Planification d'une extension rapide de la couverture de l'API dans les prochaines versions
- Certaines relations Okta complexes ne sont pas encore exposées
- Les performances avec de très grandes instances Okta ne sont pas encore optimisées
- Nécessite un accès réseau direct aux points d'extrémité de l'API Okta
🗺️ Feuille de route
v0.1.0-BETA - Actuel (MAJOR ARCHITECTURAL OVERHAUL !)
- Migration complète vers l'architecture FastMCP 2.0
- Réécriture complète de tous les outils avec des annotations améliorées
- Nouveau client CLI unifié supportant plusieurs transports
- Elimination de la dépendance tool_registry.py pour une base de code plus propre
- Prise en charge avancée des jetons de support avec validation jwks_uri
- Amélioration significative de la gestion et de la validation des erreurs
- Optimisation des performances et modèles asynchrones modernes
v0.3.0 - Précédent
- Support du transport HTTP en continu
- Flux d'événements en temps réel
- Gestion des sessions et possibilité de reprise
- Applications client améliorées
Les projets futurs comprennent :
- Opérations complètes sur le cycle de vie de l'utilisateur
- Gestion de l'affectation des applications
- Opérations d'appartenance à un groupe
- Enrôlement et vérification des facteurs
- Gestion des politiques et des règles
- Flux d'approbation pour les opérations sensibles
- Options d'approbation multicanal (web, email, Slack)
- Journalisation des audits et rapports de conformité
- Intégration des journaux système
- Génération d'informations sur la sécurité
- Prise en charge de plusieurs locataires
- Contrôle d'accès basé sur les rôles
besoin d'aide ?
Avant de soulever un problème, vérifiez :
- 📝 La configuration du serveur
- 🔑 Permissions de l'API Okta
- 🔌 Compatibilité du client MCP
- 📊 Journaux du serveur
Vous rencontrez toujours des problèmes ? Ouvrez un problème sur GitHub ou envoyez un courriel à support@fctr.io (les délais de réponse peuvent varier)
💡 Demandes de fonctionnalités et idées
Vous avez une idée ou une suggestion ? Ouvrez une demande de fonctionnalité sur GitHub !
👥 Contributeurs
Intéressé par une contribution ? Nous serions ravis de vous compter parmi nous ! Contactez info@fctr.io pour connaître les possibilités de collaboration.
⚖️ Mentions légales
Consultez License.md
pour les détails.
🌟 © 2025 Fctr Identity. Tous droits réservés. Réalisé avec ❤️ pour les communautés Okta et AI.