Aller au contenu principal

Interconnexion MCP (WebSearch) avec /v1/responses

Cette page explique comment se connecter au MCP WebSearch via la route OpenAI-compatible /v1/responses. Une fois connecté, le modèle peut interroger le Web et utiliser ces résultats pour enrichir automatiquement ses réponses.

Endpoint

POST/v1/responses

URL complète (Gateway Clovis)

Entête
POST https://llm-gateway.clovis-ai.fr/v1/responses
Authorization: Bearer <CLOVIS_API_KEY>
Content-Type: application/json

Objectif

L’intégration MCP permet au modèle de :

Déclencher automatiquement un outil externe (ex: WebSearch)

Récupérer des informations à jour depuis Internet

Synthétiser ces informations dans une réponse structurée

Concrètement :

L’utilisateur pose une question → le modèle déclenche un tool call → la gateway exécute le MCP WebSearch → le modèle répond avec les résultats.

Pré-requis

Principe de fonctionnement MCP

1) Déclarer un serveur MCP dans la requête

La gateway Clovis permet de déclarer un serveur MCP via un champ provider-specific dans tools.

Exemple : déclaration du serveur WebSearch

Déclaration MCP
{
"type": "mcp",
"server_label": "web_search_preview",
"server_description": "The websearch mcp",
"server_url": "https://llm-gateway.clovis-ai.fr/api/v1/mcp",
"require_approval": "never"
}

Cette déclaration signifie :

  • web_search_preview est un serveur MCP disponible durant la requête
  • les appels MCP sont routés via server_url
  • aucun contrôle manuel n’est requis (require_approval: "never")

Champs MCP (détails techniques)

ChampTypeObligatoireDescription
typestring✔️Doit être "mcp" pour activer la connexion MCP
server_labelstring✔️Nom logique du serveur MCP (alias stable)
server_descriptionstringDescription fonctionnelle du serveur
server_urlstring✔️URL du broker MCP Clovis
require_approvalstringPolitique d’exécution (never = automatique)

Exemple complet — /v1/responses avec MCP WebSearch

Requête

Payload JSON
{
"model": "ClovisLLM",
"input": [
{
"role": "system",
"content": [
{
"type": "input_text",
"text": "Tu es un assistant utile. Si une question nécessite des infos à jour, utilise le websearch."
}
]
},
{
"role": "user",
"content": [
{
"type": "input_text",
"text": "Peux-tu me donner les dernières informations sur n8n et les AI Agents ?"
}
]
}
],
"tools": [
{
"type": "mcp",
"server_label": "web_search_preview",
"server_description": "The websearch mcp",
"server_url": "https://llm-gateway.clovis-ai.fr/api/v1/mcp",
"require_approval": "never"
}
],
"temperature": 0.3,
"max_output_tokens": 1200
}

Réponse API

Une fois le résultat MCP récupéré, le modèle retourne une réponse finale de type message :

Réponse
{
"id": "resp_xxx",
"object": "response",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Voici les dernières informations concernant n8n et les AI Agents : ... (synthèse basée sur la recherche web)"
}
]
}
],
"usage": {
"input_tokens": 350,
"output_tokens": 420,
"total_tokens": 770
}
}

Exemples d’utilisation

Python
from openai import OpenAI

# Configuration
CLOVIS_API_KEY = "sk-rezr"

CLOVIS_BASE_URL = "https://llm-gateway.clovis-ai.fr/v1"
CLOVIS_MODEL_NAME = "ClovisLLM"

# Initialize client
client = OpenAI(api_key=CLOVIS_API_KEY, base_url=CLOVIS_BASE_URL)

# Test /responses route
answer = client.responses.create(
model=CLOVIS_MODEL_NAME,
input="What are the news of the day?",
tools=[
{
"type": "mcp",
"server_label": "web_search_preview",
"server_description": "The websearch mcp",
"server_url": "https://llm-gateway.clovis-ai.fr/api/v1/mcp",
"require_approval": "never",
}
]
)

print(answer.output_text)