Gestion des connecteurs

Avant de pouvoir utiliser un connecteur dans des conversations ou d'appeler ses outils, vous devez l'enregistrer. Cette page décrit l'ensemble du cycle de vie d'un connecteur :

  1. Créer un connecteur en indiquant l'URL du serveur MCP et le niveau de visibilité.
  2. Authentifier (si le serveur MCP nécessite OAuth).
  3. Lister les outils pour découvrir les fonctionnalités exposées par le connecteur.
  4. Utiliser le connecteur dans les conversations ou via un appel direct d'outil.
  5. Mettre à jour ou supprimer le connecteur lorsqu'il n'est plus nécessaire.
Créer un connecteur

Créer un connecteur

Enregistrez un nouveau connecteur MCP en fournissant un nom, une URL de serveur MCP et une portée de visibilité.

  • private — seul le créateur peut l'utiliser.
  • shared_workspace — toute personne ayant accès au même espace de travail.
  • shared_org — toutes les personnes de l'organisation. Seuls les administrateurs de l'organisation peuvent créer et gérer ces connecteurs.

Vous pouvez référencer un connecteur par son nom ou son UUID, car les noms de connecteurs sont uniques dans un espace de travail.

Le champ name accepte jusqu'à 64 caractères, uniquement alphanumériques, tirets et underscores compris.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    connector = await client.beta.connectors.create_async(
        name="my_deepwiki",
        description="DeepWiki MCP connector for code repository exploration",
        server="https://mcp.deepwiki.com/mcp",
        visibility="private",
    )

    print(f"ID:          {connector.id}")
    print(f"Name:        {connector.name}")
    print(f"Description: {connector.description}")
    print(f"Server URL:  {connector.server}")
    print(f"Auth type:   {connector.auth_type}")
    print(f"Created at:  {connector.created_at}")
    print(f"Modified at: {connector.modified_at}")


asyncio.run(main())

L'endpoint create accepte aussi les champs optionnels suivants :

ChampTypeDescription
icon_urlstringURL de l'icône associée au connecteur.
headersobjectEn-têtes HTTP envoyés à chaque requête vers le serveur MCP, par exemple pour des clés API statiques.
auth_dataobjectclient_id et client_secret OAuth2 — requis si le serveur MCP utilise OAuth.
system_promptstringPrompt système injecté lors de l'utilisation des outils de ce connecteur.
Authentifier un connecteur

Authentifier un connecteur

Si le serveur MCP nécessite OAuth, récupérez l'URL d'autorisation et redirigez l'utilisateur afin qu'il puisse accorder l'accès. Une fois l'authentification terminée, l'utilisateur est renvoyé vers app_return_url.

Attention

Le passage programmatique des jetons n'est pas pris en charge. Utilisez plutôt Studio pour authentifier les connecteurs.

La réponse comprend deux champs :

  • auth_url — URL vers laquelle rediriger l'utilisateur.
  • ttl — durée (en secondes) pendant laquelle l'URL reste valide.
import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    result = await client.beta.connectors.get_auth_url_async(
        connector_id_or_name="gmail",
        app_return_url="https://myapp.example.com/oauth/callback",
    )
    print(f"Auth URL: {result.auth_url}")
    print(f"TTL:      {result.ttl}s")


asyncio.run(main())
Récupérer des connecteurs

Récupérer des connecteurs

Récupérer un connecteur unique

Récupérez un connecteur par son nom ou son UUID. La réponse inclut un tableau tools avec les outils MCP que le connecteur expose, s'ils ont déjà été découverts. Pour lister ou actualiser explicitement les outils, consultez la section lister les outils.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    # Par nom
    connector_by_name = await client.beta.connectors.get_async(
        connector_id_or_name="my_deepwiki"
    )
    print(f"Name: {connector_by_name.name}")
    print(f"ID:   {connector_by_name.id}")

    # Par UUID (équivalent)
    connector_by_id = await client.beta.connectors.get_async(
        connector_id_or_name=str(connector_by_name.id)
    )
    print(f"Description: {connector_by_id.description}")


asyncio.run(main())

Lister tous les connecteurs

Listez les connecteurs avec pagination par curseur. Utilisez next_cursor pour récupérer les pages suivantes.

Transmettez query_filters pour filtrer les résultats. Par exemple, active: true ne renvoie que les connecteurs actifs pour votre utilisateur et votre espace de travail.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    # List all connectors (first page)
    page = await client.beta.connectors.list_async(page_size=10)
    all_connectors = list(page.items)

    for c in page.items:
        print(f"  - {c.name} ({c.id})")

    # Fetch remaining pages
    while page.pagination.next_cursor:
        page = await client.beta.connectors.list_async(
            page_size=10,
            cursor=page.pagination.next_cursor,
        )
        all_connectors.extend(page.items)

    print(f"Total: {len(all_connectors)} connectors")

    # Filter active connectors only
    active_page = await client.beta.connectors.list_async(
        page_size=10,
        query_filters={"active": True},
    )
    print(f"Active connectors: {len(active_page.items)}")


asyncio.run(main())
Lister les outils

Lister les outils

Listez les outils qu'un connecteur expose. Cela permet de vérifier les noms d'outils disponibles avant de les utiliser dans des conversations ou de les appeler directement.

Note

Si le connecteur nécessite une authentification, l'utilisateur doit compléter le flux d'authentification avant de lister ou d'appeler ses outils.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    tools = await client.beta.connectors.list_tools_async(
        connector_id_or_name="my_deepwiki",
    )
    for tool in tools:
        print(f"  - {tool.name}: {tool.description}")


asyncio.run(main())

Le endpoint supporte ces paramètres de requête :

ParamètrePar défautDescription
page1Numéro de page (pagination par offset).
page_size100Nombre d'outils par page.
refreshfalseRécupérer à nouveau les outils depuis le serveur MCP au lieu d'utiliser le cache.
prettyfalseRenvoyer une charge utile simplifiée avec uniquement name, description, annotations et un inputSchema compact.
Mettre à jour un connecteur

Mettre à jour un connecteur

Mettez à jour un ou plusieurs champs d'un connecteur. Incluez uniquement les champs que vous souhaitez modifier. Le connector_id doit être l'UUID, pas le nom.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    connector_id = "a1b2c3d4-5678-90ab-cdef-1234567890ab"

    updated = await client.beta.connectors.update_async(
        connector_id=connector_id,
        description="Mis à jour : Connecteur DeepWiki pour l'exploration de code",
    )
    print(f"New description: {updated.description}")


asyncio.run(main())

Vous pouvez mettre à jour ces champs : name, description, server, icon_url, system_prompt, headers et auth_data.

Supprimer un connecteur

Supprimer un connecteur

Supprimez définitivement un connecteur. Tous les agents y faisant référence perdent l'accès à ses outils.

import asyncio
from mistralai.client import Mistral

client = Mistral(api_key="your-api-key")


async def main() -> None:
    connector_id = "a1b2c3d4-5678-90ab-cdef-1234567890ab"

    result = await client.beta.connectors.delete_async(
        connector_id=connector_id,
    )
    print(f"Delete response: {result.message}")


asyncio.run(main())