Serveur Okta MCP - MCP Server sécurisé par ALMC Security 2025

Serveur Okta MCP

Voir sur GitHub

🎉 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

🔍 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 pagination
  • get_okta_user - Obtenir des informations détaillées sur un utilisateur spécifique par ID ou login
  • list_okta_user_groups - Liste tous les groupes auxquels appartient un utilisateur spécifique
  • list_okta_user_applications - Liste tous les liens d'application (applications assignées) pour un utilisateur spécifique
  • list_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 pagination
  • get_okta_group - Obtenir des informations détaillées sur un groupe spécifique
  • list_okta_group_members - Liste tous les membres d'un groupe spécifique
  • list_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 pagination
  • list_okta_application_users - Liste tous les utilisateurs affectés à une application spécifique
  • list_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ées
  • get_okta_policy_rule - Permet d'obtenir des informations détaillées sur une règle de politique spécifique
  • list_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 8601
  • parse_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 :

FournisseurVariable d'environnementDescription de la variable d'environnement du fournisseur
OpenAIAI_PROVIDER=openaiSe connecter à l'API OpenAI avec des modèles comme GPT-4o. Nécessite une clé API OpenAI.
Azure OpenAIAI_PROVIDER=azure_openaiUtilisez les modèles OpenAI hébergés sur Azure avec des fonctions de sécurité et de conformité améliorées.
AnthropiqueAI_PROVIDER=anthropicConnectez-vous aux modèles Claude d'Anthropic (principalement testé avec Claude 3.7 Sonnet).
Google Vertex AIAI_PROVIDER=vertex_aiUtilise les modèles Gemini de Google via Vertex AI. Nécessite un compte de service Google Cloud.
Compatible avec OpenAIAI_PROVIDER=openai_compatibleConnectez-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:
    { "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" } } }
    Remplacez DIR par le chemin absolu de votre répertoire et OKTA_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 :

  1. 📝 La configuration du serveur
  2. 🔑 Permissions de l'API Okta
  3. 🔌 Compatibilité du client MCP
  4. 📊 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.

Liés dans Service en nuage - MCP Servers sécurisés

ServeurRésuméActions
Serveur Huawei MCPVoir
Serveur VM MCP multi-cloudPrise en charge de AWS EC2, Azure Virtual Machines et GCP Compute Engine.Voir
Serveur MCP PlayFabVoir
Serveur Salesforce MCPUne implémentation de serveur MCP (Model Context Protocol) qui intègre Claude avec Salesforce, perme...Voir
ALECS - Serveur MCP pour AkamaiAucune documentation n'est disponible.Voir
Serveur d'analyse d'images日本語の READMEVoir