Unstructured
officielConfigurez 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
| Outil | Description |
|---|---|
list_sources | Liste les sources disponibles depuis l'API Unstructured. |
get_source_info | Obtient des informations détaillées sur un connecteur source spécifique. |
create_source_connector | Crée un connecteur source. |
update_source_connector | Met à jour un connecteur source existant via des paramètres. |
delete_source_connector | Supprime un connecteur source par son ID source. |
list_destinations | Liste les destinations disponibles depuis l'API Unstructured. |
get_destination_info | Obtient des informations détaillées sur un connecteur de destination spécifique. |
create_destination_connector | Crée un connecteur de destination via des paramètres. |
update_destination_connector | Met à jour un connecteur de destination existant par son ID de destination. |
delete_destination_connector | Supprime un connecteur de destination par son ID de destination. |
list_workflows | Liste les workflows depuis l'API Unstructured. |
get_workflow_info | Obtient des informations détaillées sur un workflow spécifique. |
create_workflow | Crée un nouveau workflow avec source, ID de destination, etc. |
run_workflow | Exécute un workflow spécifique avec son ID de workflow. |
update_workflow | Met à jour un workflow existant via des paramètres. |
delete_workflow | Supprime un workflow spécifique par son ID. |
list_jobs | Liste les travaux pour un workflow spécifique depuis l'API Unstructured. |
get_job_info | Obtient des informations détaillées sur un travail spécifique par son ID de travail. |
cancel_job | Supprime un travail spécifique par son ID. |
list_workflows_with_finished_jobs | Liste 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 !
| Source | Destination |
|---|---|
| S3 | S3 |
| Azure | Weaviate |
| Google Drive | Pinecone |
| OneDrive | AstraDB |
| Salesforce | MongoDB |
| Sharepoint | Neo4j |
| 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'identifiant | Description |
|---|---|
ANTHROPIC_API_KEY | requis pour exécuter le minimal_client afin d'interagir avec notre serveur. |
AWS_KEY, AWS_SECRET | requis pour créer un connecteur S3 via le serveur uns-mcp, voir comment dans la documentation et ici |
WEAVIATE_CLOUD_API_KEY | requis pour créer un connecteur de base de données vectorielle Weaviate, voir comment dans la documentation |
FIRECRAWL_API_KEY | requis 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_ENDPOINT | requis pour créer un connecteur Astradb via le serveur uns-mcp, voir comment dans la documentation |
AZURE_CONNECTION_STRING | option 1 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation |
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEY | option 2 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation |
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKEN | option 3 requise pour créer un connecteur Azure via le serveur uns-mcp, voir comment dans la documentation |
NEO4J_PASSWORD | requis pour créer un connecteur Neo4j via le serveur uns-mcp, voir comment dans la documentation |
MONGO_DB_CONNECTION_STRING | requis pour créer un connecteur Mongodb via le serveur uns-mcp, voir comment dans la documentation |
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY | une 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_SECRET | requis 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_ID | requis pour créer un connecteur One Drive via le serveur uns-mcp, voir comment dans la documentation |
PINECONE_API_KEY | requis 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_KEY | requis 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_ID | requis pour créer un connecteur One Drive via le serveur uns-mcp, voir comment dans la documentation |
LOG_LEVEL | Utilisé pour définir le niveau de journalisation pour notre minimal_client, par exemple, réglez sur ERROR pour tout obtenir |
CONFIRM_TOOL_USE | réglez sur true pour que minimal_client puisse confirmer l'exécution avant chaque appel d'outil |
DEBUG_API_REQUESTS | ré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 :
- Récupération de contenu HTML : Utilisation de
invoke_firecrawl_crawlhtmlpour démarrer les travaux de crawl et decheck_crawlhtml_statuspour les surveiller - Génération de texte optimisé pour LLM : Utilisation de
invoke_firecrawl_llmtxtpour générer du texte et decheck_llmtxt_statuspour 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_jobsi 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_jobest 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+
uvpour 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
-
Clonez le dépôt.
-
Installez les dépendances :
uv sync -
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.templatepour 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 :
-
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 -
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_workflowdoit être chargé dans le contexte avec l'outilcreate_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'outilget_workflow_info, car cet outil ne fonctionne pas comme un applicateurpatch, 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
commandde votre configuration. Par exemple, remplacezpythonpar/opt/miniconda3/bin/python