Aller au contenu principal

io.enterpriseai.resources.McpClient

Source : sdks/java/enterprise-ai-java/src/main/java/io/enterpriseai/resources/McpClient.java. Retour à l'index de la référence du SDK Java.

remarque

Cette page est générée par tools/docs/gen_sdk_reference.py depuis les sources du SDK et les dossiers de textes OpenAPI. Ne la modifiez pas à la main : changez la source et régénérez.

Classe McpClient​

Passerelle MCP. Registre des serveurs MCP amont (Model Context Protocol) et MCP Gateway, un proxy JSON-RPC 2.0 qui applique les contrôles de la plateforme à chaque appel : isolation par projet, appelants permis, listes d'autorisation d'outils et de ressources, scopes, DLP, politique, quota, contrôle d'injection de prompt, comptage et audit.

Constructeur McpClient​

McpClient(Transport transport)

Crée le client sur le transport partagé ; EnterpriseAIClient le construit, on y accède par l'accesseur du même nom.

NomTypeDéfautRequisDescription
transportTransportouiTransport partagé par les sous-clients d'un même client.

McpClient.catalog​

JsonNode catalog()

Lire le catalogue des outils MCP. Catalogue : outils, schémas d'entrée et de sortie, versions, scopes et statut d'approbation (approved, pending_approval, rejected), pour les seuls serveurs visibles par la requête, comme GET /v1/mcp/servers.

Route : /v1/mcp/catalog (GET).

Cet élément ne prend aucun paramètre.

Retour : JsonNode. Réponse JSON décodée de l'opération « Lire le catalogue des outils MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.catalog​

JsonNode catalog(Map<String, ?> query)

Lire le catalogue des outils MCP. Catalogue : outils, schémas d'entrée et de sortie, versions, scopes et statut d'approbation (approved, pending_approval, rejected), pour les seuls serveurs visibles par la requête, comme GET /v1/mcp/servers.

Route : /v1/mcp/catalog (GET).

NomTypeDéfautRequisDescription
queryMap<String, ?>ouiParamètres de la chaîne de requête de la route.

Retour : JsonNode. Réponse JSON décodée de l'opération « Lire le catalogue des outils MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.createServer​

JsonNode createServer(Object body)

Enregistrer un serveur MCP. Enregistre un serveur amont (201). L'URL doit être http(s) sur un hôte interne permis par la politique de sortie MCP (403 mcp_online_forbidden sinon) ; bearer, api_key et query_param demandent un credential_ref openbao:// ou env://, query_param demande param, connector demande connector (400 invalid_request). Un nom déjà utilisé répond 409 conflict. Le projet (par défaut X-Project) doit être celui de la requête (403 mcp_project_forbidden). Demande tenant_admin, developer ou application_owner ; l'appelant devient propriétaire ReBAC. Audité sous mcp.server.create.

Route : /v1/mcp/servers (POST).

NomTypeDéfautRequisDescription
bodyObjectouiNom, URL, transport, authentification amont, listes d'autorisation, propriétaire et projet.

Retour : JsonNode. Réponse JSON décodée de l'opération « Enregistrer un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.createServer​

JsonNode createServer(Object body, RequestOptions options)

Enregistrer un serveur MCP. Enregistre un serveur amont (201). L'URL doit être http(s) sur un hôte interne permis par la politique de sortie MCP (403 mcp_online_forbidden sinon) ; bearer, api_key et query_param demandent un credential_ref openbao:// ou env://, query_param demande param, connector demande connector (400 invalid_request). Un nom déjà utilisé répond 409 conflict. Le projet (par défaut X-Project) doit être celui de la requête (403 mcp_project_forbidden). Demande tenant_admin, developer ou application_owner ; l'appelant devient propriétaire ReBAC. Audité sous mcp.server.create.

Route : /v1/mcp/servers (POST).

NomTypeDéfautRequisDescription
bodyObjectouiNom, URL, transport, authentification amont, listes d'autorisation, propriétaire et projet.
optionsRequestOptionsouiOptions de l'appel (clé d'idempotence, traceparent, en-têtes, signal d'annulation).

Retour : JsonNode. Réponse JSON décodée de l'opération « Enregistrer un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.deleteServer​

void deleteServer(String id)

Supprimer un serveur MCP. Retire le serveur du registre. Demande tenant_admin, la relation ReBAC owner et l'accès au projet du serveur. 404 mcp_server_not_found. Audité sous mcp.server.delete.

Route : /v1/mcp/servers/{server_id} (DELETE).

NomTypeDéfautRequisDescription
idStringouiIdentifiant (UUID) ou nom du serveur MCP.

Retour : void.

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.discover​

JsonNode discover(String serverId)

Découvrir les outils d'un serveur MCP. Découverte par le protocole MCP (initialize, tools/list) : chaque schéma d'outil nouveau ou modifié devient une version du catalogue en attente d'approbation (mcp_tool_version, approbateurs tenant_admin ou security_officer). Renvoie les versions créées avec leurs identifiants d'approbation. Demande tenant_admin, developer ou application_owner, la relation ReBAC editor et l'accès au projet du serveur.

Route : /v1/mcp/servers/{server_id}/discover (POST).

NomTypeDéfautRequisDescription
serverIdStringouiIdentifiant (UUID) ou nom du serveur MCP.

Retour : JsonNode. Réponse JSON décodée de l'opération « Découvrir les outils d'un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.discover​

JsonNode discover(String serverId, RequestOptions options)

Découvrir les outils d'un serveur MCP. Découverte par le protocole MCP (initialize, tools/list) : chaque schéma d'outil nouveau ou modifié devient une version du catalogue en attente d'approbation (mcp_tool_version, approbateurs tenant_admin ou security_officer). Renvoie les versions créées avec leurs identifiants d'approbation. Demande tenant_admin, developer ou application_owner, la relation ReBAC editor et l'accès au projet du serveur.

Route : /v1/mcp/servers/{server_id}/discover (POST).

NomTypeDéfautRequisDescription
serverIdStringouiIdentifiant (UUID) ou nom du serveur MCP.
optionsRequestOptionsouiOptions de l'appel (clé d'idempotence, traceparent, en-têtes, signal d'annulation).

Retour : JsonNode. Réponse JSON décodée de l'opération « Découvrir les outils d'un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.listServers​

Page<JsonNode> listServers()

Lister les serveurs MCP. Serveurs visibles par la requête : project (identifiant ou slug) ne garde que les serveurs de ce projet ; une requête faite dans un projet (en-tête X-Project ou clé d'API liée à un projet) voit les serveurs de son projet et ceux partagés par le tenant, jamais ceux d'un autre projet (403 mcp_project_forbidden). Les secrets amont ne sont jamais renvoyés, seulement leurs références.

Route : /v1/mcp/servers (GET).

Cet élément ne prend aucun paramètre.

Retour : Page<JsonNode>. Réponse JSON décodée de l'opération « Lister les serveurs MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.rpc​

JsonNode rpc(String serverId, Object body)

Appeler un serveur MCP via la passerelle. Proxy JSON-RPC 2.0. Le corps est une requête ou un lot (50 au plus sont traitées). Demande tenant_admin, developer ou agent et la relation ReBAC can_invoke. Les refus sont renvoyés comme erreurs JSON-RPC avec le statut HTTP 200, et audités. Contrôles, dans l'ordre : JSON-RPC 2.0 valide ; serveur active ; isolation par projet (mcp_server_project_mismatch) ; appelants permis (mcp_principal_not_allowed) ; une instance hébergée en sommeil est réveillée ; une application tierce doit être active et avoir reçu le serveur ; méthode permise ; pour tools/call : outil dans allowed_tools, scope tools:invoke, DLP sur les arguments ; politique mcp.call ; réservation de quota ; pour resources/read : URI dans allowed_resources. L'appel est ensuite transmis avec les identifiants amont ; tools/list et resources/list sont filtrés par les listes d'autorisation, les résultats de tools/call sont masqués par la DLP et contrôlés contre l'injection de prompt, et l'appel est compté comme usage d'outil.

Route : /v1/mcp/gateway/{server_id} (POST).

NomTypeDéfautRequisDescription
serverIdStringouiIdentifiant (UUID) ou nom du serveur MCP.
bodyObjectouiUne requête JSON-RPC 2.0 (jsonrpc, id, method, params) ou un tableau de requêtes.

Retour : JsonNode. Réponse JSON décodée de l'opération « Appeler un serveur MCP via la passerelle ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.rpc​

JsonNode rpc(String serverId, Object body, RequestOptions options)

Appeler un serveur MCP via la passerelle. Proxy JSON-RPC 2.0. Le corps est une requête ou un lot (50 au plus sont traitées). Demande tenant_admin, developer ou agent et la relation ReBAC can_invoke. Les refus sont renvoyés comme erreurs JSON-RPC avec le statut HTTP 200, et audités. Contrôles, dans l'ordre : JSON-RPC 2.0 valide ; serveur active ; isolation par projet (mcp_server_project_mismatch) ; appelants permis (mcp_principal_not_allowed) ; une instance hébergée en sommeil est réveillée ; une application tierce doit être active et avoir reçu le serveur ; méthode permise ; pour tools/call : outil dans allowed_tools, scope tools:invoke, DLP sur les arguments ; politique mcp.call ; réservation de quota ; pour resources/read : URI dans allowed_resources. L'appel est ensuite transmis avec les identifiants amont ; tools/list et resources/list sont filtrés par les listes d'autorisation, les résultats de tools/call sont masqués par la DLP et contrôlés contre l'injection de prompt, et l'appel est compté comme usage d'outil.

Route : /v1/mcp/gateway/{server_id} (POST).

NomTypeDéfautRequisDescription
serverIdStringouiIdentifiant (UUID) ou nom du serveur MCP.
bodyObjectouiUne requête JSON-RPC 2.0 (jsonrpc, id, method, params) ou un tableau de requêtes.
optionsRequestOptionsouiOptions de l'appel (clé d'idempotence, traceparent, en-têtes, signal d'annulation).

Retour : JsonNode. Réponse JSON décodée de l'opération « Appeler un serveur MCP via la passerelle ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.serverTools​

JsonNode serverTools(String id)

Lister les outils d'un serveur MCP. Appelle tools/list sur le serveur via la passerelle et renvoie les outils permis par allowed_tools. Demande la relation ReBAC can_invoke et l'accès au projet du serveur. Une erreur amont répond 502 upstream_error.

Route : /v1/mcp/servers/{server_id}/tools (GET).

NomTypeDéfautRequisDescription
idStringouiIdentifiant (UUID) ou nom du serveur MCP.

Retour : JsonNode. Réponse JSON décodée de l'opération « Lister les outils d'un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.setAccess​

JsonNode setAccess(String serverId, Object body)

Définir qui peut appeler un serveur MCP. Contrôle d'accès de la MCP Gateway : quels utilisateurs et agents peuvent appeler ce serveur ; une liste vide laisse tout membre de son projet l'appeler. Les identifiants de principaux sont faits de lettres, chiffres et :._@/- (128 caractères au plus, 400 invalid_request). L'accès d'une instance hébergée est géré par le runtime MCP (409 mcp_instance_access_managed). Demande tenant_admin, developer ou application_owner et l'accès au projet du serveur. Audité sous mcp.server.access.

Route : /v1/mcp/servers/{server_id}/access (PUT).

NomTypeDéfautRequisDescription
serverIdStringouiIdentifiant (UUID) ou nom du serveur MCP.
bodyObjectouiLes principaux permis.

Retour : JsonNode. Réponse JSON décodée de l'opération « Définir qui peut appeler un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.setServerStatus​

JsonNode setServerStatus(String id, Object body)

Activer ou désactiver un serveur MCP. active passe par une promotion : une approbation est ouverte et la réponse est 202 avec approval_id. disabled s'applique aussitôt (tout appel de passerelle est alors refusé) et est audité sous mcp.server.status. Demande tenant_admin ou security_officer, la relation ReBAC editor et l'accès au projet du serveur.

Route : /v1/mcp/servers/{server_id}/status (POST).

NomTypeDéfautRequisDescription
idStringouiIdentifiant (UUID) ou nom du serveur MCP.
bodyObjectouiStatut visé et raison.

Retour : JsonNode. Réponse JSON décodée de l'opération « Activer ou désactiver un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.setServerStatus​

JsonNode setServerStatus(String id, Object body, RequestOptions options)

Activer ou désactiver un serveur MCP. active passe par une promotion : une approbation est ouverte et la réponse est 202 avec approval_id. disabled s'applique aussitôt (tout appel de passerelle est alors refusé) et est audité sous mcp.server.status. Demande tenant_admin ou security_officer, la relation ReBAC editor et l'accès au projet du serveur.

Route : /v1/mcp/servers/{server_id}/status (POST).

NomTypeDéfautRequisDescription
idStringouiIdentifiant (UUID) ou nom du serveur MCP.
bodyObjectouiStatut visé et raison.
optionsRequestOptionsouiOptions de l'appel (clé d'idempotence, traceparent, en-têtes, signal d'annulation).

Retour : JsonNode. Réponse JSON décodée de l'opération « Activer ou désactiver un serveur MCP ».

Erreurs levées : les erreurs typées du transport (Erreurs).

McpClient.syncHosted​

JsonNode syncHosted(String project)

Publier les serveurs MCP hébergés par le Navin Manager. Publie les serveurs MCP hébergés par le Navin Manager (service mcp-host) dans leur projet : jeton conservé dans le Credential Broker, serveur du projet créé ou mis à jour, serveurs qui ne sont plus hébergés désactivés. project (identifiant ou slug, par défaut le projet de la requête) limite la synchronisation à un projet ; un projet différent de celui de la requête répond 403 mcp_project_forbidden. Demande tenant_admin et un tenant (403 tenant_required).

Route : /v1/mcp/hosted/sync (POST).

NomTypeDéfautRequisDescription
projectStringouiIdentifiant (UUID) ou slug du seul projet à synchroniser. Par défaut : le projet de la requête.

Retour : JsonNode. Réponse JSON décodée de l'opération « Publier les serveurs MCP hébergés par le Navin Manager ».

Erreurs levées : les erreurs typées du transport (Erreurs).