Aller au contenu principal

Configuration complète d'un serveur MCP

Assembler tous les paramètres

Vous avez maintenant vu chaque paramètre de configuration MCP individuellement. Cette leçon rassemble tout dans des exemples complets et concrets, avec les deux SDK principaux.

Récapitulatif des paramètres

Avant de passer aux exemples, voici le tableau complet des paramètres et leur rôle :

Paramètre Requis Rôle
server_url Oui URL HTTPS du serveur MCP
server_label Oui Préfixe des appels d'outils
server_description Non Guide Grok dans le choix du serveur
allowed_tool_names Non Restreint les outils accessibles
authorization Non Token d'authentification
headers Non En-têtes HTTP supplémentaires

Configuration minimale

La configuration la plus simple ne nécessite que l’URL et le label :

# SDK xAI
tools = [mcp(server_url="https://mcp.deepwiki.com/mcp", server_label="deepwiki")]

# API Responses (OpenAI)
tools = [{
    "type": "mcp",
    "server_url": "https://mcp.deepwiki.com/mcp",
    "server_label": "deepwiki"
}]

Cette configuration convient pour les serveurs MCP publics sans authentification, comme DeepWiki. Grok a accès à tous les outils du serveur.

Configuration en lecture seule

Pour un serveur interne où vous souhaitez limiter les opérations :

# SDK xAI
tools = [
    mcp(
        server_url="https://api.monentreprise.com/mcp",
        server_label="crm",
        server_description="CRM interne. Consultation de contacts et d'entreprises uniquement.",
        authorization=f"Bearer {os.getenv('CRM_TOKEN')}",
        allowed_tool_names=["search_contacts", "get_contact", "list_companies"]
    )
]

# API Responses (OpenAI)
tools = [{
    "type": "mcp",
    "server_url": "https://api.monentreprise.com/mcp",
    "server_label": "crm",
    "server_description": "CRM interne. Consultation de contacts et d'entreprises uniquement.",
    "authorization": f"Bearer {os.getenv('CRM_TOKEN')}",
    "allowed_tool_names": ["search_contacts", "get_contact", "list_companies"]
}]

Configuration complète avec tous les paramètres

Voici un exemple qui utilise chaque paramètre :

import os
from xai_sdk import Client
from xai_sdk.tools import mcp

client = Client(api_key=os.getenv("XAI_API_KEY"))

chat = client.chat.create(
    model="grok-4.20-reasoning",
    tools=[
        mcp(
            server_url="https://tools.monentreprise.com/v1/mcp",
            server_label="outils-internes",
            server_description="Plateforme d'outils internes : gestion documentaire, tickets support, base de connaissances. Accès en lecture seule.",
            authorization=f"Bearer {os.getenv('TOOLS_MCP_TOKEN')}",
            headers={
                "X-Organization-Id": os.getenv("ORG_ID"),
                "X-Environment": "production",
                "X-Request-Source": "grok-agent"
            },
            allowed_tool_names=[
                "search_documents",
                "get_document",
                "search_tickets",
                "get_ticket",
                "search_knowledge_base"
            ]
        )
    ],
    include=["verbose_streaming"],
)

Checklist de configuration

Avant de déployer en production, vérifiez :

  • L’URL est bien en HTTPS avec un certificat valide
  • Le label est court, descriptif et unique
  • La description correspond aux outils réellement exposés
  • Les outils autorisés sont restreints au minimum nécessaire
  • Le token est stocké en variable d’environnement
  • Les headers supplémentaires sont corrects pour votre serveur

Points clés à retenir

  • La configuration minimale ne nécessite que server_url et server_label
  • Ajoutez server_description pour guider Grok, surtout en multi-serveur
  • Restreignez avec allowed_tool_names pour la sécurité et la performance
  • Utilisez authorization et headers pour l’authentification
  • Les deux SDK (xAI natif et OpenAI Responses) acceptent les mêmes paramètres avec une syntaxe différente