Unstructured

officiel

Configurez et interagissez avec vos workflows de traitement de données non structurées dans Unstructured Platform.

Que pouvez-vous faire avec Unstructured MCP ?

  • Lister les sources et destinations disponibles — Utilisez list_sources et list_destinations pour voir quels connecteurs sont configurés dans votre compte Unstructured.
  • Gérer les connecteurs source et destination — Créez, mettez à jour ou supprimez des connecteurs via create_source_connector, update_destination_connector et les outils associés.
  • Exécuter et surveiller les workflows d’ingestion — Déclenchez un workflow avec run_workflow, puis suivez ses tâches à l’aide de list_jobs et get_job_info.
  • Trouver les workflows avec des tâches terminées — Appelez list_workflows_with_finished_jobs pour identifier les workflows qui ont terminé leur traitement.
  • Explorer des sites web dans votre pipeline — Lancez une exploration Firecrawl avec invoke_firecrawl_crawlhtml et vérifiez l’état via check_crawlhtml_status.

Documentation

Serveur MCP de l'API Unstructured

[!NOTE] Ce serveur interagit avec l'API Unstructured pour gérer les sources, les destinations et les flux de travail. Il n'est pas activement maintenu et est conservé ici à titre de référence.

Si vous souhaitez analyser et transformer des fichiers en sortie structurée (markdown, JSON, HTML ou texte brut), utilisez plutôt le serveur MCP Unstructured Transform.

Unstructured Transform apporte un traitement de documents de qualité production à vos agents en tant que serveur MCP hébergé. Il leur donne la capacité de transformer plus de 60 types de fichiers en données structurées prêtes pour vos applications, bases de données vectorielles et tout processus en aval, en analysant, enrichissant, découpant et vectorisant les fichiers directement dans leur session en cours.

Vous pouvez commencer à l'utiliser en vous inscrivant ici.

Une implémentation de serveur MCP pour interagir avec l'API Unstructured. Ce serveur fournit des outils pour lister les sources et les flux de travail.

Outils disponibles

OutilDescription
list_sourcesListe les sources disponibles depuis l'API Unstructured.
get_source_infoObtient des informations détaillées sur un connecteur source spécifique.
create_source_connectorCrée un connecteur source.
update_source_connectorMet à jour un connecteur source existant via des paramètres.
delete_source_connectorSupprime un connecteur source par son ID source.
list_destinationsListe les destinations disponibles depuis l'API Unstructured.
get_destination_infoObtient des informations détaillées sur un connecteur de destination spécifique.
create_destination_connectorCrée un connecteur de destination via des paramètres.
update_destination_connectorMet à jour un connecteur de destination existant par son ID de destination.
delete_destination_connectorSupprime un connecteur de destination par son ID de destination.
list_workflowsListe les flux de travail depuis l'API Unstructured.
get_workflow_infoObtient des informations détaillées sur un flux de travail spécifique.
create_workflowCrée un nouveau flux de travail avec source, ID de destination, etc.
run_workflowExécute un flux de travail spécifique avec son ID de flux de travail.
update_workflowMet à jour un flux de travail existant via des paramètres.
delete_workflowSupprime un flux de travail spécifique par son ID.
list_jobsListe les tâches pour un flux de travail spécifique depuis l'API Unstructured.
get_job_infoObtient des informations détaillées sur une tâche spécifique par son ID de tâche.
cancel_jobSupprime une tâche spécifique par son ID.
list_workflows_with_finished_jobsListe tous les flux de travail ayant une tâche terminée, avec des informations sur les détails de la source et de la destination.

Voici une liste des connecteurs actuellement pris en charge par le serveur UNS-MCP, veuillez consulter la liste complète des connecteurs source pris en charge par la plateforme Unstructured ici et la liste des destinations ici. Nous prévoyons d'en ajouter d'autres !

SourceDestination
S3S3
AzureWeaviate
Google DrivePinecone
OneDriveAstraDB
SalesforceMongoDB
SharepointNeo4j
Databricks Volumes
Databricks Volumes Delta Table

Pour utiliser l'outil qui crée/met à jour/supprime un connecteur, les informations d'identification pour ce connecteur spécifique doivent être définies dans votre fichier .env. Voici la liste des credentials pour les connecteurs que nous prenons en charge :

Nom de la variable d'environnementDescription
ANTHROPIC_API_KEYrequis pour exécuter le minimal_client afin d'interagir avec notre serveur.
AWS_KEY, AWS_SECRETrequis pour créer un connecteur S3 via le serveur uns-mcp, voir comment dans la documentation et ici
WEAVIATE_CLOUD_API_KEYrequis pour créer un connecteur de base de données vectorielle Weaviate, voir comment dans la documentation
FIRECRAWL_API_KEYrequis pour utiliser les outils Firecrawl dans external/firecrawl.py, inscrivez-vous sur Firecrawl et obtenez une clé API.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTrequis pour créer un connecteur Astradb via le serveur uns-mcp, voir comment dans la documentation
AZURE_CONNECTION_STRINGoption 1 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYoption 2 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENoption 3 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation
NEO4J_PASSWORDrequis pour créer un connecteur Neo4j via le serveur uns-mcp, voir comment dans la documentation
MONGO_DB_CONNECTION_STRINGrequis pour créer un connecteur Mongodb via le serveur uns-mcp, voir comment dans la documentation
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYune valeur de chaîne. La clé de compte du serveur d'origine (suivre la documentation) est dans un fichier json, exécutez base64 < /path/to/google_service_account_key.json dans le terminal pour obtenir la valeur de chaîne
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETrequis pour créer un connecteur Databricks volume/delta table via le serveur uns-mcp, voir comment dans la documentation et ici
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDrequis pour créer un connecteur One Drive via le serveur uns-mcp, voir comment dans la documentation
PINECONE_API_KEYrequis pour créer un connecteur de base de données vectorielle Pinecone via le serveur uns-mcp, voir comment dans la documentation
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYrequis pour créer un connecteur source salesforce via le serveur uns-mcp, voir comment dans la documentation
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDrequis pour créer un connecteur One Drive via le serveur uns-mcp, voir comment dans la documentation
LOG_LEVELUtilisé pour définir le niveau de journalisation pour notre minimal_client, par exemple, réglez sur ERROR pour tout obtenir
CONFIRM_TOOL_USEréglez sur true pour que minimal_client puisse confirmer l'exécution avant chaque appel d'outil
DEBUG_API_REQUESTSréglez sur true pour que uns_mcp/server.py puisse afficher les paramètres de requête pour un meilleur débogage

Source Firecrawl

Firecrawl est une API de crawling web qui offre deux capacités principales dans notre MCP :

  1. Récupération de contenu HTML : Utilisation de invoke_firecrawl_crawlhtml pour démarrer les tâches de crawl et de check_crawlhtml_status pour les surveiller
  2. Génération de texte optimisé pour LLM : Utilisation de invoke_firecrawl_llmtxt pour générer du texte et de check_llmtxt_status pour récupérer les résultats

Fonctionnement de Firecrawl : Processus d'exploration Web :

  • Commence par une URL spécifiée et l'analyse pour identifier les liens
  • Utilise le sitemap s'il est disponible ; sinon, suit les liens trouvés sur le site Web
  • Parcourt récursivement chaque lien pour découvrir toutes les sous-pages
  • Rassemble le contenu de chaque page visitée, en gérant le rendu JavaScript et les limites de débit
  • Les tâches peuvent être annulées avec cancel_crawlhtml_job si nécessaire
  • Utilisez cette option si vous avez besoin que toutes les informations soient extraites en HTML brut, le flux de travail d'Unstructured le nettoie très bien :smile:

Génération de texte pour LLM :

  • Après l'exploration, extrait un contenu textuel propre et significatif des pages explorées
  • Génère des formats de texte optimisés spécifiquement formatés pour les grands modèles de langage
  • Les résultats sont automatiquement téléchargés vers l'emplacement S3 spécifié
  • Remarque : les tâches de génération de texte pour LLM ne peuvent pas être annulées une fois lancées. La fonction cancel_llmtxt_job est fournie par souci de cohérence mais n'est actuellement pas prise en charge par l'API Firecrawl.

Remarque : une variable d'environnement FIRECRAWL_API_KEY doit être définie pour utiliser ces fonctions.

Installation et configuration

Ce guide fournit des instructions étape par étape pour installer et configurer le serveur UNS_MCP en utilisant Python 3.12 et l'outil uv.

Prérequis

  • Python 3.12+
  • uv pour la gestion de l'environnement
  • Une clé API d'Unstructured. Vous pouvez vous inscrire et obtenir votre clé API ici.

Utilisation de uv (recommandé)

Aucune installation supplémentaire n'est requise lors de l'utilisation de uvx car il gère l'exécution. Cependant, si vous préférez installer le paquet directement :

uv pip install uns_mcp

Configurer Claude Desktop

Pour l'intégration avec Claude Desktop, ajoutez le contenu suivant à votre claude_desktop_config.json :

Remarque : Le fichier se trouve dans le répertoire ~/Library/Application Support/Claude/.

Utilisation de la commande uvx :

{
   "mcpServers": {
      "UNS_MCP": {
         "command": "uvx",
         "args": ["uns_mcp"],
         "env": {
           "UNSTRUCTURED_API_KEY": "<your-key>"
         }
      }
   }
}

Alternativement, en utilisant le paquet Python :

{
   "mcpServers": {
      "UNS_MCP": {
         "command": "python",
         "args": ["-m", "uns_mcp"],
         "env": {
           "UNSTRUCTURED_API_KEY": "<your-key>"
         }
      }
   }
}

Utilisation du code source

  1. Clonez le dépôt.

  2. Installez les dépendances :

    uv sync
    
  3. Définissez votre clé API Unstructured comme variable d'environnement. Créez un fichier .env dans le répertoire racine avec le contenu suivant :

    UNSTRUCTURED_API_KEY="YOUR_KEY"
    

    Reportez-vous à .env.template pour les variables d'environnement configurables.

Vous pouvez maintenant exécuter le serveur en utilisant l'une des méthodes suivantes :

Utilisation de l'installation de paquet éditable Installez en tant que paquet éditable :
uvx pip install -e .

Mettez à jour votre configuration Claude Desktop :

{
  "mcpServers": {
    "UNS_MCP": {
      "command": "uvx",
      "args": ["uns_mcp"]
    }
  }
}

Remarque : N'oubliez pas de pointer vers l'exécutable uvx dans l'environnement où vous avez installé le paquet

Utilisation du protocole serveur SSE

Remarque : Non pris en charge par Claude Desktop.

Pour le protocole SSE, vous pouvez déboguer plus facilement en découplant le client et le serveur :

  1. Démarrez le serveur dans un terminal :

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
    
  2. Testez le serveur en utilisant un client local dans un autre terminal :

    uv run python minimal_client/client.py "http://127.0.0.1:8080/sse"
    # or
    make sse-client
    

Remarque : Pour arrêter les services, utilisez Ctrl+C d'abord sur le client, puis sur le serveur.

Utilisation du protocole serveur Stdio

Configurez Claude Desktop pour utiliser stdio :

{
  "mcpServers": {
    "UNS_MCP": {
      "command": "ABSOLUTE/PATH/TO/.local/bin/uv",
      "args": [
        "--directory",
        "ABSOLUTE/PATH/TO/YOUR-UNS-MCP-REPO/uns_mcp",
        "run",
        "server.py"
      ]
    }
  }
}

Alternativement, exécutez le client local :

uv run python minimal_client/client.py uns_mcp/server.py

Configuration supplémentaire du client local

Configurez le client minimal en utilisant des variables d'environnement :

  • LOG_LEVEL="ERROR" : Définissez pour supprimer les sorties de débogage du LLM, affichant des messages clairs pour les utilisateurs.
  • CONFIRM_TOOL_USE='false' : Désactivez la confirmation d'utilisation de l'outil avant l'exécution. À utiliser avec prudence, en particulier pendant le développement, car le LLM peut exécuter des flux de travail coûteux ou supprimer des données.

Outils de débogage

Anthropic fournit l'outil MCP Inspector pour déboguer/tester votre serveur MCP. Exécutez la commande suivante pour lancer une interface de débogage. À partir de là, vous pourrez ajouter des variables d'environnement (pointant vers votre environnement local) dans le volet de gauche. Incluez-y votre clé API personnelle comme variable d'environnement. Allez dans tools, vous pouvez tester les capacités que vous ajoutez au serveur MCP.

mcp dev uns_mcp/server.py

Si vous avez besoin de journaliser les paramètres d'appel de requête vers UnstructuredClient, définissez la variable d'environnement DEBUG_API_REQUESTS=false. Les journaux sont stockés dans un fichier au format unstructured-client-{date}.log, qui peut être examiné pour déboguer les paramètres d'appel de requête vers les fonctions UnstructuredClient.

Ajouter l'accès au terminal au client minimal

Nous allons utiliser @wonderwhy-er/desktop-commander pour ajouter l'accès au terminal au client minimal. Il est construit sur le serveur de système de fichiers MCP. Soyez prudent, car le client (et aussi le LLM) a désormais accès aux fichiers privés.

Exécutez la commande suivante pour installer le paquet :

npx @wonderwhy-er/desktop-commander setup

Ensuite, démarrez le client avec un paramètre supplémentaire :

uv run python minimal_client/client.py "http://127.0.0.1:8080/sse" "@wonderwhy-er/desktop-commander@^0.2.11"
# or
make sse-client-terminal

Utilisation d'un sous-ensemble d'outils

Si votre client prend en charge l'utilisation d'un sous-ensemble d'outils, voici la liste des éléments dont vous devez être conscient :

  • L'outil update_workflow doit être chargé dans le contexte avec l'outil create_workflow, car il contient une description détaillée sur la façon de créer et de configurer un nœud personnalisé.

Problèmes connus

  • update_workflow - doit avoir dans le contexte la configuration du flux de travail qu'il met à jour, soit en la fournissant par l'utilisateur, soit en appelant l'outil get_workflow_info, car cet outil ne fonctionne pas comme un applicateur patch, il remplace entièrement la configuration du flux de travail.

CHANGELOG.md

Toute nouvelle fonctionnalité développée/correction/amélioration sera ajoutée au CHANGELOG.md. Le format de pré-version 0.x.x-dev est préféré avant de passer à une version stable.

Dépannage

  • Si vous rencontrez des problèmes avec Error: spawn <command> ENOENT, cela signifie que <command> n'est pas installé ou visible dans votre PATH :
    • Assurez-vous de l'installer et de l'ajouter à votre PATH.
    • ou fournissez le chemin absolu vers la commande dans le champ command de votre configuration. Ainsi, par exemple, remplacez python par /opt/miniconda3/bin/python