Aller au contenu principal

Combiner MCP et outils built-in

MCP et outils natifs : une synergie

Grok ne se limite pas aux outils MCP. L’API xAI propose également des outils natifs (built-in) comme la recherche web, l’exécution de code ou l’analyse d’images. Vous pouvez combiner librement des outils MCP distants avec ces outils natifs dans une même configuration.

Les outils built-in de Grok

Avant de voir comment les combiner avec le MCP, voici les principaux outils natifs disponibles :

  • Web search : recherche en temps réel sur le web
  • Code execution : exécution de code Python dans un sandbox
  • Image analysis : analyse et description d’images
  • File parsing : lecture et extraction de contenu de fichiers

Ces outils sont définis directement dans le tableau tools avec leur type spécifique, sans URL ni label.

Combiner MCP et outils natifs

La syntaxe est naturelle : vous placez les outils MCP et les outils natifs dans le même tableau tools.

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=[
        # Outil MCP distant
        mcp(
            server_url="https://mcp.deepwiki.com/mcp",
            server_label="deepwiki",
            server_description="Documentation de projets GitHub"
        ),
        # Outil natif : recherche web
        {"type": "web_search"},
    ],
)

Avec l’API Responses (format OpenAI) :

response = client.responses.create(
    model="grok-4.20-reasoning",
    input=[{"role": "user", "content": "Compare React et Vue selon la doc officielle et les tendances actuelles"}],
    tools=[
        {
            "type": "mcp",
            "server_url": "https://mcp.deepwiki.com/mcp",
            "server_label": "deepwiki"
        },
        {"type": "web_search"},
    ],
)

Comment Grok orchestre les outils

Quand Grok dispose à la fois d’outils MCP et d’outils natifs, il les traite tous comme un catalogue unifié. Le modèle choisit l’outil le plus adapté à chaque étape de la requête.

Prenons la requête “Compare la configuration du routing dans Next.js avec les meilleures pratiques actuelles” :

  1. Grok utilise deepwiki__search pour trouver la documentation de routing dans le repo Next.js
  2. Grok utilise web_search pour trouver des articles récents sur les meilleures pratiques de routing
  3. Grok synthétise les deux sources dans une réponse cohérente

Le modèle décide seul de l’ordre et de la combinaison des outils. Vous n’avez pas à spécifier de logique d’orchestration.

Scénarios de combinaison

Agent de recherche enrichi

tools = [
    mcp(
        server_url="https://mcp.deepwiki.com/mcp",
        server_label="deepwiki",
        server_description="Documentation et code source de projets GitHub"
    ),
    {"type": "web_search"},
    {"type": "code_execution"},
]

Cet agent peut : consulter la documentation d’un projet, chercher des informations complémentaires sur le web, et exécuter du code pour valider une solution.

Assistant technique interne

tools = [
    mcp(
        server_url="https://kb.monentreprise.com/mcp",
        server_label="kb",
        server_description="Base de connaissances interne",
        authorization=f"Bearer {os.getenv('KB_TOKEN')}"
    ),
    mcp(
        server_url="https://jira.monentreprise.com/mcp",
        server_label="jira",
        server_description="Tickets et projets Jira",
        authorization=f"Bearer {os.getenv('JIRA_TOKEN')}",
        allowed_tool_names=["search_issues", "get_issue"]
    ),
    {"type": "web_search"},
]

Cet assistant peut : chercher dans la base de connaissances interne, consulter les tickets Jira, et compléter avec une recherche web si nécessaire.

Considérations de performance

Combiner de nombreux outils a un coût en termes de contexte. Chaque outil (MCP ou natif) occupe de l’espace dans la fenêtre de contexte de Grok pour stocker sa définition. Quelques conseils :

  • Limitez le nombre total d’outils : ne connectez pas 5 serveurs MCP avec 50 outils chacun si votre cas d’usage n’en nécessite que 10
  • Utilisez allowed_tool_names sur chaque serveur MCP pour ne garder que les outils pertinents
  • N’ajoutez pas d’outils natifs que vous n’utilisez pas : si votre agent n’a pas besoin d’exécuter du code, ne mettez pas code_execution

Points clés à retenir

  • Les outils MCP et les outils natifs (web search, code execution) coexistent dans le même tableau tools
  • Grok orchestre automatiquement les appels entre outils MCP et natifs selon la requête
  • La combinaison permet de créer des agents puissants qui exploitent à la fois des sources internes (MCP) et externes (web search)
  • Limitez le nombre total d’outils pour préserver le contexte et la précision du modèle
  • Utilisez allowed_tool_names pour chaque serveur MCP afin de réduire le bruit