enterprise_ai.mcp
Source : sdks/python/src/enterprise_ai/mcp/__init__.py. Retour à l'index de la référence du SDK Python.
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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server | str | None | None | non | Seulement 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (UUID) ou nom du serveur MCP. | |
client_name | str | 'enterprise-ai-python' | non | Nom du client envoyé dans clientInfo (enterprise-ai-python par défaut). |
version | str | '1.0.0' | non | Version 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
project | str | None | None | non | Identifiant (UUID) ou slug du projet dont les serveurs sont listés. |
**page | Any | non | Options 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom, unique dans le tenant : minuscules, chiffres, ., _, -, 1 à 128 caractères. | |
url | str | oui | Point d'accès HTTP(S) du serveur sur un hôte interne (8 à 2000 caractères). | |
transport | str | 'streamable_http' | non | streamable_http (par défaut) ou sse. |
**extra | Any | non | Champs 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (UUID) ou nom du serveur MCP. | |
method | str | oui | Méthode JSON-RPC du serveur MCP, par exemple tools/list. | |
params | dict[str, Any] | None | None | non | Champs supplémentaires fusionnés dans la requête. |
request_id | int | 1 | non | id 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (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.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (UUID) ou nom du serveur MCP. | |
principals | list[str] | oui | Utilisateurs 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
server_id | str | oui | Identifiant (UUID) ou nom du serveur MCP. | |
status | str | oui | active (via une promotion) ou disabled (immédiat). | |
reason | str | None | None | non | Raison 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
project | str | None | None | non | Identifiant (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 :
| Nom | Type | Requis | Description |
|---|---|---|---|
client | oui | Le McpClient qui envoie les requêtes. | |
server_id | oui | Identifiant du serveur MCP de la session. | |
server_info | dict[str, Any] | oui | Ré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.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
client | McpClient | oui | Client parent. | |
server_id | str | oui | Identifiant 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
name | str | oui | Nom de l'outil, tel que donné par list_tools. | |
arguments | dict[str, Any] | None | None | non | Arguments 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.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
client_name | str | 'enterprise-ai-python' | non | Nom du client envoyé dans clientInfo (enterprise-ai-python par défaut). |
version | str | '1.0.0' | non | Version 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).
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
uri | str | oui | URI 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.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
method | str | oui | Méthode JSON-RPC du serveur MCP. | |
params | dict[str, Any] | None | None | non | Champs 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.
| Nom | Type | Défaut | Requis | Description |
|---|---|---|---|---|
response | Any | oui | Ré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.