Aller au contenu principal

Description et outils autorisés

Les paramètres optionnels de contrôle

Au-delà de l’URL et du label, deux paramètres optionnels vous donnent un contrôle précis sur le comportement du MCP : server_description pour guider Grok dans le choix du bon serveur, et allowed_tools / allowed_tool_names pour restreindre les outils accessibles.

server_description : guider la sélection

Le paramètre server_description fournit à Grok une description en langage naturel des capacités du serveur MCP. Le modèle utilise cette description pour décider quand et comment utiliser les outils de ce serveur.

mcp(
    server_url="https://api.example.com/mcp",
    server_label="docs",
    server_description="Serveur de documentation technique. Permet de rechercher des articles, consulter des guides et obtenir des exemples de code pour l'API interne."
)

Pourquoi la description compte

Sans description, Grok se base uniquement sur les noms et descriptions individuels des outils exposés par le serveur. Cela fonctionne, mais le modèle manque de contexte global. Avec une bonne description, Grok comprend mieux :

  • Quand utiliser ce serveur plutôt qu’un autre
  • Quel type de requêtes orienter vers ce serveur
  • Ce que le serveur ne fait pas, évitant des appels inutiles

Bonnes pratiques pour la description

Écrivez la description comme si vous expliquiez à un collègue ce que fait le service :

  • Soyez spécifique : “Base de données de documentation technique produit” plutôt que “Documentation”
  • Mentionnez les actions possibles : “Permet de rechercher, lire et mettre à jour les tickets”
  • Indiquez les limites si pertinent : “Accès en lecture seule, pas de modification”

allowed_tools / allowed_tool_names : restreindre l’accès

Par défaut, quand vous connectez Grok à un serveur MCP, tous les outils exposés par ce serveur sont injectés dans le contexte du modèle. Le paramètre allowed_tools (ou allowed_tool_names selon le SDK) vous permet de limiter les outils accessibles.

Sans restriction (comportement par défaut)

mcp(server_url="https://api.example.com/mcp",
    server_label="crm")
# Grok voit TOUS les outils : create_contact, update_contact,
# delete_contact, search_contacts, export_data, etc.

Avec restriction

mcp(server_url="https://api.example.com/mcp",
    server_label="crm",
    allowed_tool_names=["search_contacts", "get_contact_details"])
# Grok ne voit que search_contacts et get_contact_details

Trois raisons de restreindre les outils

1. Sécurité — le principe du moindre privilège

Si votre application n’a besoin que de lire des données, ne laissez pas Grok accéder aux outils de modification ou de suppression. Un prompt injection mal géré pourrait amener Grok à appeler un outil destructif.

# Lecture seule pour un chatbot public
allowed_tool_names=["search_database", "get_record", "format_data"]

2. Performance — réduire la charge de contexte

Chaque outil exposé au modèle occupe de l’espace dans sa fenêtre de contexte. Un serveur MCP avec 50 outils consomme un espace considérable juste pour les définitions. En restreignant à 5 outils pertinents, vous libérez du contexte pour le contenu utile.

3. Précision — éviter la confusion

Plus Grok a d’outils disponibles, plus il peut hésiter entre des outils similaires. En ne présentant que les outils pertinents pour votre cas d’usage, vous améliorez la précision de la sélection.

Combiner description et restriction

La combinaison des deux paramètres donne les meilleurs résultats :

mcp(
    server_url="https://api.example.com/mcp",
    server_label="crm",
    server_description="CRM en lecture seule. Recherche et consultation de contacts et d'entreprises.",
    allowed_tool_names=["search_contacts", "get_contact", "search_companies", "get_company"]
)

Ici, la description et les outils autorisés sont cohérents : Grok comprend qu’il s’agit d’un accès en lecture seule et ne voit que les outils de consultation.

Points clés à retenir

  • server_description aide Grok à comprendre quand utiliser ce serveur MCP
  • Sans allowed_tools, tous les outils du serveur sont injectés dans le contexte
  • Restreindre les outils renforce la sécurité, la performance et la précision
  • Combinez description et restriction pour un contrôle optimal
  • Écrivez la description comme une explication en langage naturel des capacités du serveur