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” :
- Grok utilise
deepwiki__searchpour trouver la documentation de routing dans le repo Next.js - Grok utilise
web_searchpour trouver des articles récents sur les meilleures pratiques de routing - 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_namessur 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_namespour chaque serveur MCP afin de réduire le bruit