Unstructured

officiel

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

Documentation

Serveur MCP de l'API Unstructured

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

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 workflows depuis l'API Unstructured.
get_workflow_infoObtient des informations détaillées sur un workflow spécifique.
create_workflowCrée un nouveau workflow avec source, ID de destination, etc.
run_workflowExécute un workflow spécifique avec son ID de workflow.
update_workflowMet à jour un workflow existant via des paramètres.
delete_workflowSupprime un workflow spécifique par son ID.
list_jobsListe les travaux pour un workflow spécifique depuis l'API Unstructured.
get_job_infoObtient des informations détaillées sur un travail spécifique par son ID de travail.
cancel_jobSupprime un travail spécifique par son ID.
list_workflows_with_finished_jobsListe tous les workflows ayant au moins un travail terminé, 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 l'identifiantDescription
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 de volume/table delta Databricks 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 travaux 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 de crawling web :

  • Commence avec 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 travaux peuvent être annulés avec cancel_crawlhtml_job si nécessaire
  • Utilisez ceci si vous avez besoin que toutes les informations soient extraites en HTML brut, le workflow 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 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 elle 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 package 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>"
         }
      }
   }
}

Alternative, en utilisant le package 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 package éditable Installez en tant que package é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 package

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 en tant que variable d'environnement. Allez dans tools, vous pourrez 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 donc le LLM) a désormais accès aux fichiers privés.

Exécutez la commande suivante pour installer le package :

npx @wonderwhy-er/desktop-commander setup

Démarrez ensuite 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

Toutes les nouvelles fonctionnalités/corrections/améliorations développées seront ajoutées 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 n'est pas 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. Par exemple, remplacez python par /opt/miniconda3/bin/python