Aller au contenu principal

enterprise_ai.mcp

Source : sdks/python/src/enterprise_ai/mcp/__init__.py. Retour à l'index de la référence du SDK Python.

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 McpError​

Une erreur JSON-RPC renvoyée par un serveur MCP.

EaiError

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.

Resource

McpClient.catalog​

catalog(server: str | None = None) -> Any

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
serverstr | NoneNonenonSeulement le catalogue de ce serveur (UUID ou nom).

Retour : Any. 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.connect​

connect(server_id: str, client_name: str = 'enterprise-ai-python', version: str = '1.0.0') -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.
client_namestr'enterprise-ai-python'nonNom du client envoyé dans clientInfo (enterprise-ai-python par défaut).
versionstr'1.0.0'nonVersion du client envoyée dans clientInfo (1.0.0 par défaut).

Retour : Any. 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.delete_server​

delete_server(server_id: str) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.

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

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

McpClient.discover​

discover(server_id: str) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.

Retour : Any. 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.list_servers​

list_servers(project: str | None = None, **page: Any) -> Any

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).

NomTypeDéfautRequisDescription
projectstr | NoneNonenonIdentifiant (UUID) ou slug du projet dont les serveurs sont listés.
**pageAnynonOptions de pagination transmises à la liste : limit (nombre maximal d'éléments par page) et cursor (le next_cursor de la page précédente). Itérer sur la page renvoyée suit tous les curseurs.

Retour : Any. 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.register_server​

register_server(name: str, url: str, transport: str = 'streamable_http', **extra: Any) -> Any

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
namestrouiNom, unique dans le tenant : minuscules, chiffres, ., _, -, 1 à 128 caractères.
urlstrouiPoint d'accès HTTP(S) du serveur sur un hôte interne (8 à 2000 caractères).
transportstr'streamable_http'nonstreamable_http (par défaut) ou sse.
**extraAnynonChamps supplémentaires fusionnés dans le corps de la requête.

Retour : Any. 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.rpc​

rpc(server_id: str, method: str, params: dict[str, Any] | None = None, request_id: int = 1) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.
methodstrouiMéthode JSON-RPC du serveur MCP, par exemple tools/list.
paramsdict[str, Any] | NoneNonenonChamps supplémentaires fusionnés dans la requête.
request_idint1nonid JSON-RPC de la requête (1 par défaut).

Retour : Any. 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.server_tools​

server_tools(server_id: str) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.

Retour : Any. 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.session​

session(server_id: str) -> McpSession

Une session MCP synchrone à travers la passerelle.

NomTypeDéfautRequisDescription
server_idstrouiIdentifiant du serveur MCP enregistré.

Retour : McpSession. Une McpSession : des aides typées pour les méthodes MCP relayées par la passerelle.

McpClient.set_access​

set_access(server_id: str, principals: list[str]) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.
principalslist[str]ouiUtilisateurs et agents (identifiants de principaux, 200 au plus) autorisés à appeler le serveur ; vide : tout membre de son projet.

Retour : Any. 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.set_server_status​

set_server_status(server_id: str, status: str, reason: str | None = None) -> Any

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
server_idstrouiIdentifiant (UUID) ou nom du serveur MCP.
statusstrouiactive (via une promotion) ou disabled (immédiat).
reasonstr | NoneNonenonRaison du changement de statut (2000 caractères au plus).

Retour : Any. 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.sync_hosted​

sync_hosted(project: str | None = None) -> Any

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
projectstr | NoneNonenonIdentifiant (UUID) ou slug du seul projet à synchroniser. Par défaut : le projet de la requête.

Retour : Any. 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).

Classe McpSession​

Aides typées pour les méthodes MCP relayées par la passerelle.

Attributs :

NomTypeRequisDescription
clientouiLe McpClient qui envoie les requêtes.
server_idouiIdentifiant du serveur MCP de la session.
server_infodict[str, Any]ouiRéponse du dernier initialize, {} avant.

Constructeur McpSession​

McpSession(client: McpClient, server_id: str) -> None

Session sur un serveur MCP ; les identifiants de requête commencent à 1 et server_info reste vide jusqu'à initialize.

NomTypeDéfautRequisDescription
clientMcpClientouiClient parent.
server_idstrouiIdentifiant du serveur MCP enregistré.

McpSession.call_tool​

call_tool(name: str, arguments: dict[str, Any] | None = None) -> dict[str, Any]

Appelle un outil du serveur (tools/call).

NomTypeDéfautRequisDescription
namestrouiNom de l'outil, tel que donné par list_tools.
argumentsdict[str, Any] | NoneNonenonArguments de l'outil ({} par défaut).

Retour : dict[str, Any]. Le résultat MCP de l'appel (content, isError...), {} s'il est vide.

McpSession.initialize​

initialize(client_name: str = 'enterprise-ai-python', version: str = '1.0.0') -> dict[str, Any]

Envoie initialize avec la version de protocole 2025-06-18 et conserve la réponse dans server_info.

NomTypeDéfautRequisDescription
client_namestr'enterprise-ai-python'nonNom du client envoyé dans clientInfo (enterprise-ai-python par défaut).
versionstr'1.0.0'nonVersion du client envoyée dans clientInfo (1.0.0 par défaut).

Retour : dict[str, Any]. Les informations du serveur (protocolVersion, capabilities, serverInfo).

McpSession.list_prompts​

list_prompts() -> list[dict[str, Any]]

Liste les prompts du serveur (prompts/list).

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

Retour : list[dict[str, Any]]. La liste prompts de la réponse, vide si elle est absente.

McpSession.list_resources​

list_resources() -> list[dict[str, Any]]

Liste les ressources du serveur (resources/list).

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

Retour : list[dict[str, Any]]. La liste resources de la réponse, vide si elle est absente.

McpSession.list_tools​

list_tools() -> list[dict[str, Any]]

Liste les outils du serveur (tools/list).

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

Retour : list[dict[str, Any]]. La liste tools de la réponse, vide si elle est absente.

McpSession.read_resource​

read_resource(uri: str) -> dict[str, Any]

Lit une ressource du serveur (resources/read).

NomTypeDéfautRequisDescription
uristrouiURI de la ressource, telle que donnée par list_resources.

Retour : dict[str, Any]. Le résultat MCP (contents), {} s'il est vide.

McpSession.request​

request(method: str, params: dict[str, Any] | None = None) -> Any

Envoie method et renvoie son résultat.

NomTypeDéfautRequisDescription
methodstrouiMéthode JSON-RPC du serveur MCP.
paramsdict[str, Any] | NoneNonenonChamps supplémentaires fusionnés dans la requête.

Retour : Any. Le result de la réponse JSON-RPC ; une réponse d'erreur lève McpError.

Fonctions​

unwrap​

unwrap(response: Any) -> Any

Renvoie le result d'une réponse JSON-RPC ou lève :class:McpError.

NomTypeDéfautRequisDescription
responseAnyouiRéponse JSON-RPC 2.0 de la passerelle.

Retour : Any. Le champ result, ou la réponse elle-même si ce n'est pas un dict.

Erreurs levées : McpError.