Mode client
Le mode client est le miroir du mode serveur : au lieu qu'un assistant extérieur interroge vos données, ce sont vos propres agents qui appellent des outils hébergés ailleurs — recherche web, récupération de documents, ou tout ce qu'un serveur MCP externe publie.
Contrairement au mode serveur, celui-ci requiert AI_PROVIDER. Sovrium est ici l'appelant : un modèle doit donc tourner de votre côté pour décider quand un outil vaut la peine d'être invoqué.
Déclarer les serveurs externes
Les serveurs relèvent de l'opérateur, pas du schéma — une URL et un identifiant sont des faits de déploiement. MCP_CLIENT_SERVERS est une liste séparée par des virgules, et l'authentification de chaque entrée est configurée par sa position, indexée à partir de 1, dans cette liste :
MCP_CLIENT_SERVERS=https://search.example.com/mcp,https://docs.example.com/mcp
MCP_AUTH_TYPE_1=bearer
MCP_AUTH_TOKEN_1=sk-...
MCP_AUTH_TYPE_2=header
MCP_AUTH_HEADER_2=X-Api-Key
MCP_AUTH_TOKEN_2=...
| Variable | Valeurs | Signification |
|---|---|---|
MCP_CLIENT_SERVERS |
URL séparées par des virgules | Les serveurs externes. Non définie, le mode client est désactivé. |
MCP_AUTH_TYPE_{N} |
bearer, header, none |
Comment s'authentifier au serveur N. Vaut none par défaut. |
MCP_AUTH_TOKEN_{N} |
chaîne | Le secret envoyé au serveur N. |
MCP_AUTH_HEADER_{N} |
nom d'en-tête | Quel en-tête le porte, quand le type vaut header. |
L'index est positionnel : réordonner la liste redirige vos secrets. Insérer un serveur en tête de MCP_CLIENT_SERVERS décale d'un cran tous les suffixes _{N} suivants, envoyant silencieusement le jeton du serveur 1 vers une autre origine. Ajoutez en fin de liste plutôt que d'insérer, et revérifiez la numérotation à chaque modification.
Restreindre un agent
Le bloc mcp d'un agent est une liste blanche appliquée au catalogue d'outils découvert. Il répond à « lesquels cet agent peut-il utiliser », pas à « quels serveurs existent ».
agents:
- name: research-agent
role: analyst
systemPrompt: Research topics using approved external tools. Always cite sources.
tools:
tables: [findings]
actions: [record.create, record.read]
mcp:
allowedTools: [web-search]
| Propriété | Effet |
|---|---|
mcp.allowedTools |
Noms d'outils externes que cet agent peut invoquer. Omis, tout le catalogue est permis. |
Deux listes blanches entrent alors en jeu et elles ne se recouvrent pas. tools délimite ce que l'agent peut faire à l'intérieur de Sovrium — ses tables et ses actions. mcp.allowedTools délimite ce qu'il peut atteindre à l'extérieur. Un agent peut être en lecture seule en interne et chercher malgré tout sur le web, ou l'inverse.
Un nom d'outil non reconnu est ignoré, pas rejeté. allowedTools est filtré contre le catalogue découvert : une faute de frappe — web_search pour web-search — produit silencieusement un agent sans aucun outil externe plutôt qu'une erreur de validation. Confirmez les noms réels via /api/ai/mcp/client/tools avant de vous fier à une liste.
Inspecter ce qui est disponible
Deux points de terminaison en lecture seule permettent de vérifier le câblage sans solliciter de modèle. Les deux répondent 404 avec { "enabled": false } quand MCP_CLIENT_SERVERS n'est pas définie : « désactivé » se distingue donc de « route absente ».
curl https://votre-app.example.com/api/ai/mcp/client/status
{
"enabled": true,
"servers": [
{ "url": "https://search.example.com/mcp", "authType": "bearer", "status": "connecting" }
]
}
Les jetons ne sont jamais renvoyés — le résumé porte l'URL, le type d'authentification et le nom d'en-tête, et rien de secret.
curl https://votre-app.example.com/api/ai/mcp/client/tools
Le catalogue d'outils démarre avec web-search et document-fetch, et la véritable découverte par tools/list le remplace dès qu'un serveur configuré est joignable. Ce sont ces noms initiaux qu'une entrée allowedTools doit reprendre aujourd'hui.
Appeler un agent
POST /api/agents/{name}/chat transmet un message au fournisseur avec le catalogue d'outils filtré de cet agent, et renvoie une enveloppe { "reply": … }. L'exécution est délibérément tolérante : si un serveur externe est injoignable ou qu'un appel d'outil échoue, le modèle répond quand même en texte plutôt que de faire échouer la requête. Un agent dépendant d'un serveur instable se dégrade en une réponse moins bonne, pas en une erreur 500.
Pages associées
- Présentation de MCP — mode serveur ou mode client.
- Présentation des agents — les agents qui appellent.
- Outils — la liste blanche interne que celle-ci complète.
- Fournisseurs d'IA — l'
AI_PROVIDERdont le mode client a besoin. - Mode serveur — le sens inverse.
Dernière mise à jour 27 juillet 2026
Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta — les contributions et corrections sont les bienvenues.