Box MCP Server

Description du projet

Le serveur Box MCP est un projet Python qui s'intègre à l'API Box pour effectuer diverses opérations telles que la recherche de fichiers, l'extraction de texte, l'interrogation basée sur l'IA et l'extraction de données. Il s'appuie sur la bibliothèque box-sdk-gen et fournit un ensemble d'outils permettant d'interagir avec les fichiers et dossiers Box.

Le protocole de contexte de modèle (MCP) est un cadre conçu pour normaliser la façon dont les modèles interagissent avec diverses sources de données et services. Dans ce projet, le MCP est utilisé pour faciliter l'intégration transparente avec l'API Box, permettant des opérations efficaces et évolutives sur les fichiers et dossiers Box. Le projet Box MCP Server vise à fournir une solution robuste et flexible pour la gestion et le traitement des données Box en utilisant des techniques avancées d'intelligence artificielle et d'apprentissage automatique.

Outils mis en œuvre

Outils de l'API Box

box_who_am_i

Obtenir vos informations d'utilisateur actuelles et vérifier l'état de la connexion.

  • Retourne : Chaîne d'informations sur l'utilisateur

box_authorize_app_tool

Lance le processus d'autorisation de l'application Box.

  • Retourne : Message d'état de l'autorisation

box_search_tool

Recherche de fichiers dans Box.

  • Paramètres
    • query (str) : La requête à rechercher.
    • file_extensions (List[str], optionnel) : Extensions de fichiers pour filtrer les résultats.
    • where_to_look_for_query (Liste[str], optionnel) : Emplacements à rechercher (par exemple, NAME, DESCRIPTION, FILE_CONTENT, COMMENTS, TAG).
    • ancestor_folder_ids (List[str], optionnel) : Liste d'identifiants de dossiers dans lesquels effectuer la recherche.
  • Résultats : Les résultats de la recherche sous la forme d'une liste de noms de fichiers et d'ID séparés par de nouvelles lignes.

box_read_tool

Lit le contenu textuel d'un fichier Box.

Paramètres :

  • file_id (str) : ID du fichier à lire

Retourne : Contenu du fichier

box_ask_ai_tool

Interroge Box AI sur un fichier.

Paramètres :

  • file_id (str) : ID du fichier
  • prompt (str) : Question pour l'IA

Retourne : Réponse de l'IA

box_hubs_ask_ai_tool

Interroger l'IA de Box à propos d'un hub. Il n'y a actuellement aucun moyen via l'API de découvrir l'ID d'un hub, vous devez donc connaître l'ID pour utiliser cet outil. Nous corrigerons ce problème à l'avenir.

Paramètres :

  • hubs_id (str) : ID du hub
  • prompt (str) : Question pour l'IA

Retourne : Réponse de l'IA

box_search_folder_by_name

Recherche un dossier par son nom.

Paramètres :

  • nom_du_dossier (str) : Nom du dossier

Retourne : ID du dossier

box_ai_extract_data

Extrait les données d'un fichier à l'aide de l'IA.

Paramètres :

  • file_id (str) : ID du fichier
  • fields (str) : Champs à extraire

Retourne : Données extraites au format JSON

box_list_contenu_de_dossier_par_identifiant_de_dossier

Liste le contenu des dossiers.

Paramètres :

  • folder_id (str) : ID du dossier
  • is_recursive (bool) : Indique si la liste doit être récursive

Retourne : Contenu du dossier au format JSON avec l'identifiant, le nom, le type et la description

box_manage_folder_tool

Créer, mettre à jour ou supprimer des dossiers dans Box.

Paramètres :

  • action (str) : Action à effectuer : "créer", "supprimer" ou "mettre à jour"
  • folder_id (chaîne, facultatif) : ID du dossier (obligatoire pour la suppression/mise à jour)
  • name (str, optionnel) : Nom du dossier (obligatoire pour la création, facultatif pour la mise à jour)
  • parent_id (chaîne, facultatif) : ID du dossier parent (obligatoire pour la création, facultatif pour la mise à jour)
  • description (str, optionnel) : Description du dossier (facultatif pour la mise à jour)
  • recursive (bool, optionnel) : Indique s'il faut supprimer le dossier de manière récursive (facultatif pour la suppression)

Retourne : Message d'état avec les détails du dossier

box_upload_file_tool

=======

  • Paramètres
    • file_id (str) : L'ID du fichier à lire.
  • Retourne : Le contenu textuel du fichier.

box_ask_ai_tool

Interroge Box AI sur un seul fichier.

  • Paramètres
    • file_id (str) : L'identifiant du fichier.
    • prompt (str) : Requête ou instruction pour l'IA.
  • Retourne : Réponse de l'IA basée sur le contenu du fichier.

box_ask_ai_tool_multi_file

Demande à l'IA de la boîte d'utiliser plusieurs fichiers.

  • Paramètres
    • file_ids (List[str]) : Liste d'identifiants de fichiers.
    • prompt (str) : Instruction pour l'IA basée sur le contenu agrégé.
  • Retourne : Réponse générée par l'IA en tenant compte de tous les fichiers fournis.

box_search_folder_by_name

Localise un dossier dans Box en fonction de son nom.

  • Paramètres
    • nom_dossier (str) : Nom du dossier.
  • Retourne : Informations (nom et ID) sur les dossiers correspondants.

box_ai_extract_data

Extrait des champs spécifiques d'un fichier à l'aide de l'IA.

  • Paramètres
    • file_id (str) : ID du fichier.
    • fields (str) : Liste de champs à extraire, séparés par des virgules.
  • Retourne : Les données extraites au format JSON.

box_list_folder_content_by_folder_id

Liste le contenu d'un dossier en utilisant son identifiant.

  • Paramètres
    • folder_id (str) : ID du dossier.
    • is_recursive (bool, optionnel) : Indique si le contenu doit être listé de manière récursive.
  • Retourne : Le contenu du dossier sous la forme d'une chaîne JSON comprenant l'identifiant, le nom, le type et la description.

box_manage_folder_tool

Créer, mettre à jour ou supprimer un dossier dans Box.

  • Paramètres
    • action (str) : Action à effectuer : "créer", "supprimer" ou "mettre à jour".
    • folder_id (chaîne, facultatif) : ID du dossier (requis pour la suppression et la mise à jour).
    • name (str, optionnel) : Nom du dossier (obligatoire pour la création, facultatif pour la mise à jour).
    • parent_id (chaîne, facultatif) : ID du dossier parent (la valeur par défaut est "0" pour la racine).
    • description (chaîne, facultatif) : Description du dossier (pour la mise à jour).
    • recursive (bool, optionnel) : Pour la suppression récursive.
  • Retourne : Message d'état avec les détails du dossier.

box_upload_file_from_path_tool

Chargement d'un fichier dans Box à partir d'un chemin d'accès au système de fichiers local.

  • Paramètres
    • chemin_fichier (chaîne) : Chemin d'accès au fichier local.
    • folder_id (chaîne, facultatif) : ID du dossier de destination (la valeur par défaut est "0").
    • new_file_name (str, optionnel) : Nouveau nom de fichier (s'il n'est pas fourni, le nom du fichier d'origine est utilisé).
  • Retourne : Détails sur le fichier téléchargé (ID et nom) ou un message d'erreur.

box_upload_file_from_content_tool

Chargement d'un contenu sous forme de fichier dans Box.

  • Paramètres
    • content (str | bytes) : Contenu à télécharger (texte ou binaire).
    • file_name (str) : Le nom à attribuer au fichier.
    • folder_id (chaîne, facultatif) : ID du dossier de destination (valeur par défaut : "0").
    • is_base64 (bool, facultatif) : Indique si le contenu fourni est codé en base64.
  • Retourne : Message de réussite du téléchargement avec l'ID et le nom du fichier.

box_download_file_tool

Télécharge un fichier à partir de Box.

  • Paramètres
    • file_id (str) : L'identifiant du fichier à télécharger.
    • save_file (bool, optionnel) : Indique s'il faut enregistrer le fichier localement.
    • save_path (str, optionnel) : Le chemin local où le fichier doit être enregistré.
  • Retourne : Pour les fichiers texte, renvoie le contenu ; pour les images, renvoie les données encodées en base64 ; pour les autres types de fichiers, un message d'erreur ou de confirmation d'enregistrement.

Outils Box Doc Gen

box_docgen_create_batch_tool

Génère des documents à l'aide d'un modèle Box Doc Gen et d'un fichier JSON local.

  • Paramètres
    • file_id (str) : ID du fichier modèle.
    • destination_folder_id (str) : ID du dossier dans lequel les documents générés doivent être stockés.
    • user_input_file_path (str) : Chemin d'accès au fichier JSON contenant les données d'entrée.
    • output_type (str, optionnel) : Format de sortie (la valeur par défaut est "pdf").
  • Retourne : Le résultat du lot de génération de documents sous la forme d'une chaîne JSON.

box_docgen_get_job_tool

Récupère un seul job Doc Gen par son ID.

  • Paramètres
    • job_id (str) : L'identifiant du travail.
  • Retourne : Les détails du travail dans une chaîne de caractères au format JSON.

box_docgen_list_jobs_tool

Liste tous les travaux Doc Gen associés à l'utilisateur actuel.

  • Paramètres
    • marker (str | None, optionnel) : Marqueur de pagination.
    • limit (int | None, optionnel) : Nombre maximum de travaux à retourner.
  • Retourne : Liste paginée des travaux en JSON joliment imprimé.

box_docgen_list_jobs_by_batch_tool

Liste les travaux Doc Gen appartenant à un lot spécifique.

  • Paramètres
    • batch_id (str) : L'identifiant du lot.
    • marker (str | None, optionnel) : Marqueur de pagination.
    • limit (int | None, optionnel) : Nombre maximum de travaux à renvoyer.
  • Retourne : Les détails des travaux par lots au format JSON.

box_docgen_template_create_tool

Marque un fichier en tant que modèle Box Doc Gen.

  • Paramètres
    • file_id (str) : ID du fichier à marquer comme modèle.
  • Retourne : Détails du modèle après marquage.

box_docgen_template_list_tool

Liste tous les modèles Box Doc Gen disponibles.

  • Paramètres
    • marker (str | None, optionnel) : Marqueur de pagination.
    • limit (int | None, optionnel) : Nombre maximum de modèles à lister.
  • Retourne : Liste des modèles au format JSON.

box_docgen_template_delete_tool

Supprime le marquage des modèles Doc Gen d'un fichier.

  • Paramètres
    • template_id (str) : L'identifiant du modèle.
  • Retourne : Confirmation de la suppression au format JSON.

box_docgen_template_get_by_id_tool

Récupère les détails d'un modèle Doc Gen spécifique.

  • Paramètres
    • template_id (str) : L'identifiant du modèle.
  • Retourne : Les détails du modèle en JSON.

box_docgen_template_list_tags_tool

Liste toutes les balises associées à un modèle Box Doc Gen.

  • Paramètres
    • template_id (str) : L'ID du modèle.
    • template_version_id (str | None, optionnel) : L'identifiant de la version spécifique.
    • marker (str | None, optionnel) : Marqueur de pagination.
    • limit (int | None, optionnel) : Nombre maximum de balises à retourner.
  • Retourne : Liste de tags au format JSON.

box_docgen_template_list_jobs_tool

Liste tous les travaux Doc Gen qui ont utilisé un modèle spécifique.

  • Paramètres
    • template_id (str) : L'identifiant du modèle.
    • marker (str | None, optionnel) : Marqueur de pagination.
    • limit (int | None, optionnel) : Nombre maximum de travaux à lister.
  • Retourne : Les détails du travail pour le modèle sous la forme d'une chaîne JSON.

Conditions requises

  • Python 3.13 ou supérieur
  • Identifiants API Box (ID client, secret client, etc.)

Installation

  1. Clonez le dépôt :

    git clone https://github.com/box-community/mcp-server-box.git cd mcp-server-box
  2. Installez uv si ce n'est pas encore le cas :

    2.1 MacOS+Linux

    curl -LsSf https://astral.sh/uv/install.sh | sh

    2.2 Windows

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
  3. Créer et mettre en place notre projet :

    3.1 MacOS+Linux

    # Créer un environnement virtuel et l'activer uv venv source .venv/bin/activate # Verrouiller les dépendances uv lock

    3.2 Windows

    # Créer un environnement virtuel et l'activer uv venv .venv\Scripts\activate # Verrouiller les dépendances uv lock
  4. Créez un fichier .env dans le répertoire racine et ajoutez vos identifiants API Box :

    BOX_CLIENT_ID=votre_id_client BOX_CLIENT_SECRET=votre_secret_client

Utilisation

Exécution du serveur MCP

Le serveur MCP prend en charge quatre méthodes de transport : stdio (par défaut), SSE (Server-Sent Events), HTTP (StreamableHttp) et FastAPI.

Exécution avec le transport stdio (par défaut)

uv --directory /path/to/mcp-server-box run src/mcp_server_box.py

Utilisation de Claude comme client

Pour le transport stdio (recommandé pour Claude Desktop)

  1. Editez votre fichier claude_desktop_config.json:

    code ~/Bibliothèque/Application\ Support/Claude/claude_desktop_config.json
  2. Ajoutez la configuration :

    { "mcpServers" : { "mcp-server-box" : { "command" : "uv", "args" : [ "--directory", "/path/to/mcp-server-box", "run", "src/mcp_server_box.py" ] } } }
  3. Redémarrez Claude s'il est en cours d'exécution.

Utilisation de Cursor comme client

Pour le transport stdio

  1. Ouvrez votre IDE avec Cursor.

  2. Dans settings, sélectionnez Cursor settings.

  3. Dans le menu de gauche, sélectionner MCP.

  4. En haut à gauche, cliquer sur Add new global MCP server.

  5. Collez le JSON suivant (mettez à jour avec vos valeurs locales) :

    { "mcpServers" : { "box" : { "command" : "uv", "args" : [ "--directory", "/path/to/mcp-server-box", "run", "src/mcp_server_box.py" ] } } }
  6. Enregistrez et fermez le fichier mcp.json, et redémarrez si nécessaire.

Exécution des tests

Le projet comprend une série de tests destinés à vérifier les fonctionnalités de l'API Box. Avant d'exécuter les tests, mettez à jour les identifiants des fichiers et des dossiers dans les fichiers de test pour qu'ils correspondent à ceux de votre compte Box.

Configuration des tests

  1. Mise à jour des ID de fichiers et de dossiers
    • Chaque fichier de test (dans le répertoire tests/ ) utilise des identifiants codés en dur pour les fichiers et dossiers Box.
    • Remplacez ces identifiants par les identifiants valides de votre compte Box.
  2. Références des identifiants de fichiers
    • Par exemple, dans tests/test_box_api_read.py, remplacez "1728677291168" par un identifiant de fichier valide.

Exécution des tests

Une fois que vous avez mis à jour les ID, vous pouvez exécuter les tests en utilisant pytest :

# Exécuter tous les tests pytest # Exécuter un fichier de test spécifique pytest tests/test_box_api_file_ops.py # Exécuter les tests avec une sortie détaillée pytest -v # Exécuter les tests et afficher les instructions d'impression pytest -v -s

Résolution des problèmes

Si vous recevez l'erreur Error : spawn uv ENOENT sur MacOS lorsque vous exécutez le serveur MCP avec Claude Desktop, vous pouvez :

  • Supprimer uv et le réinstaller avec Homebrew : brew install uv

  • Ou fournir le chemin complet de l'exécutable uv dans votre configuration :

    /Users/shurrey/.local/bin/uv --directory /Users/shurrey/local/mcp-server-box run src/mcp_server_box.py

[Assurez-vous que les informations d'identification de l'API Box dans .env sont correctement définies.

Liés dans Stockage en nuage - MCP Servers sécurisés

ServeurRésuméActions
Serveur OSS MCP中文版 | AnglaisVoir
Serveur AWS S3 MCPServeur MCP pour les opérations AWS S3, fournissant un accès sécurisé aux buckets S3 par le biais d'...Voir
Serveur MCP DropboxUn serveur Model Context Protocol (MCP) qui s'intègre à Dropbox, permettant aux clients compatibles...Voir
Apache OpenDAL™Une mise en œuvre du serveur Model Context Protocol (MCP) qui fournit un accès à divers services de...Voir
Serveur WebDAV MCPUn serveur Model Context Protocol (MCP) qui permet des opérations CRUD sur un point de terminaison W...Voir
DropBinAucune documentation n'est disponible.Voir