Sécurité et bonnes pratiques
Sécuriser vos connexions MCP
Connecter Grok à des serveurs MCP distants ouvre des possibilités puissantes, mais introduit également des risques de sécurité. Cette leçon couvre les bonnes pratiques essentielles pour déployer le MCP distant en production.
HTTPS et authentification obligatoires
La première règle est simple et non négociable : tout serveur MCP en production doit être en HTTPS avec authentification. xAI impose déjà le HTTPS, mais l’authentification est à votre charge.
Pourquoi l’authentification est critique
Sans authentification, votre serveur MCP est accessible à quiconque connaît son URL. Cela signifie :
- N’importe qui peut appeler vos outils internes
- Vos données sont exposées sans contrôle d’accès
- Vous ne pouvez pas tracer qui utilise quels outils
# Production : TOUJOURS avec authentification
mcp(
server_url="https://api.monentreprise.com/mcp",
server_label="interne",
authorization=f"Bearer {os.getenv('MCP_TOKEN')}"
)
# Développement UNIQUEMENT : sans authentification
# À ne JAMAIS déployer en production
mcp(
server_url="https://mcp.deepwiki.com/mcp",
server_label="deepwiki"
)
Gestion des tokens
- Variables d’environnement : stockez tous les tokens dans des variables d’environnement, jamais dans le code source
- Rotation régulière : renouvelez les tokens périodiquement (tous les 90 jours au minimum)
- Portée minimale : générez des tokens avec les permissions minimales nécessaires
- Révocation immédiate : si un token est compromis, révoquez-le immédiatement et générez-en un nouveau
Restriction des outils avec allowed_tools
Le paramètre allowed_tool_names est votre deuxième ligne de défense. Il applique le principe du moindre privilège : ne donnez accès qu’aux outils strictement nécessaires.
Scénarios de restriction
Chatbot public — accès en lecture seule :
allowed_tool_names=["search_docs", "get_article", "list_categories"]
# Pas d'accès à : create_article, update_article, delete_article
Agent interne — opérations contrôlées :
allowed_tool_names=[
"search_tickets", "get_ticket", "add_comment",
# Pas d'accès à : close_ticket, delete_ticket, reassign_ticket
]
Pipeline automatisée — opérations spécifiques :
allowed_tool_names=["run_analysis", "get_results"]
# Pas d'accès à : configure_pipeline, delete_results
Risques sans restriction
Si vous ne restreignez pas les outils, un prompt injection pourrait amener Grok à :
- Supprimer des données via un outil
delete_* - Modifier des configurations via un outil
update_config - Envoyer des communications non souhaitées via un outil
send_email
Charge de contexte
Chaque outil MCP exposé à Grok consomme des tokens dans la fenêtre de contexte. La définition d’un outil comprend son nom, sa description et son schéma de paramètres. Un serveur MCP avec 30 outils peut consommer plusieurs milliers de tokens juste pour les définitions.
Impact concret
- Moins de place pour le contenu de la conversation
- Temps de traitement plus long (plus de tokens à analyser)
- Risque de confusion si trop d’outils sont similaires
Stratégies d’optimisation
- Restreignez les outils : utilisez
allowed_tool_namespour ne garder que l’essentiel - Segmentez par cas d’usage : créez des configurations différentes selon le contexte (support client, agent interne, pipeline)
- Évaluez régulièrement : vérifiez quels outils sont réellement utilisés et retirez les inutilisés
Descriptions claires et précises
De bonnes descriptions (serveur et outils) améliorent la précision de Grok et réduisent les appels d’outils erronés.
Pour server_description
# Bon : spécifique et actionnable
server_description="Base de connaissances produit. Recherche d'articles d'aide, FAQ et guides de dépannage pour les produits A, B et C."
# Mauvais : vague et générique
server_description="Base de données"
Dans vos prompts
Ajoutez des indications dans vos prompts système pour guider l’utilisation des outils :
Quand l'utilisateur pose une question technique, cherchez d'abord dans la base de connaissances interne (kb).
Si la réponse n'est pas trouvée, utilisez la recherche web en complément.
Ne modifiez jamais de ticket sans confirmation explicite de l'utilisateur.
Points clés à retenir
- HTTPS est imposé par xAI, mais l’authentification est de votre responsabilité
- Stockez les tokens en variables d’environnement et renouvelez-les régulièrement
- Utilisez
allowed_tool_namespour appliquer le principe du moindre privilège - Surveillez la charge de contexte : chaque outil consomme des tokens
- Écrivez des descriptions précises pour améliorer la sélection d’outils par Grok