Unstructured API MCP Server
Interactúa con la API de Unstructured para gestionar fuentes de datos, destinos, flujos de trabajo y trabajos.
Documentación
Unstructured API MCP Server
An MCP server implementation for interacting with the Unstructured API. This server provides tools to list sources and workflows.
Herramientas Disponibles
| Tool | Descripción |
|---|---|
list_sources | Lista las fuentes disponibles de la API de Unstructured. |
get_source_info | Obtén información detallada sobre un conector de origen específico. |
create_source_connector | Crear un conector de origen.) |
update_source_connector | Actualizar un conector de origen existente por parámetros. |
delete_source_connector | Eliminar un conector de origen por ID de origen. |
list_destinations | Lista los destinos disponibles de la API de Unstructured. |
get_destination_info | Obtén información detallada sobre un conector de destino específico |
create_destination_connector | Crear un conector de destino por parámetros. |
update_destination_connector | Actualizar un conector de destino existente por ID de destino. |
delete_destination_connector | Eliminar un conector de destino por ID de destino. |
list_workflows | Lista los flujos de trabajo de la API de Unstructured. |
get_workflow_info | Obtén información detallada sobre un flujo de trabajo específico. |
create_workflow | Crear un nuevo flujo de trabajo con origen, ID de destino, etc. |
run_workflow | Ejecutar un flujo de trabajo específico con ID de flujo de trabajo |
update_workflow | Actualizar un flujo de trabajo existente por parámetros. |
delete_workflow | Eliminar un flujo de trabajo específico por ID. |
list_jobs | Lista los trabajos de un flujo de trabajo específico de la API de Unstructured. |
get_job_info | Obtén información detallada sobre un trabajo específico por ID de trabajo. |
cancel_job | Eliminar un trabajo específico por ID. |
A continuación se muestra una lista de conectores que el servidor UNS-MCP soporta actualmente. Consulta la lista completa de conectores de origen que soporta la plataforma Unstructured aquí y la lista de destinos aquí. ¡Planeamos agregar más!
| Fuente | Destino |
|---|---|
| S3 | S3 |
| Azure | Weaviate |
| Google Drive | Pinecone |
| OneDrive | AstraDB |
| Salesforce | MongoDB |
| Sharepoint | Neo4j |
| Databricks Volumes | |
| Databricks Volumes Delta Table |
Para usar la herramienta que crea/actualiza/elimina un conector, las credenciales para ese conector específico deben estar definidas en tu archivo .env. A continuación se muestra la lista de credentials para los conectores que soportamos:
| Nombre de credencial | Descripción |
|---|---|
ANTHROPIC_API_KEY | requerido para ejecutar el minimal_client para interactuar con nuestro servidor. |
AWS_KEY, AWS_SECRET | requerido para crear el conector S3 a través del servidor uns-mcp, consulta cómo en documentación y aquí |
WEAVIATE_CLOUD_API_KEY | requerido para crear el conector de base de datos vectorial Weaviate, consulta cómo en documentación |
FIRECRAWL_API_KEY | requerido para usar las herramientas de Firecrawl en external/firecrawl.py, regístrate en Firecrawl y obtén una clave API. |
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINT | requerido para crear el conector Astradb a través del servidor uns-mcp, consulta cómo en documentación |
AZURE_CONNECTION_STRING | opción 1 requerida para crear el conector Azure a través del servidor uns-mcp, consulta cómo en documentación |
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEY | opción 2 requerida para crear el conector Azure a través del servidor uns-mcp, consulta cómo en documentación |
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKEN | opción 3 requerida para crear el conector Azure a través del servidor uns-mcp, consulta cómo en documentación |
NEO4J_PASSWORD | requerido para crear el conector Neo4j a través del servidor uns-mcp, consulta cómo en documentación |
MONGO_DB_CONNECTION_STRING | requerido para crear el conector Mongodb a través del servidor uns-mcp, consulta cómo en documentación |
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY | un valor de cadena. La clave de cuenta del servidor original (sigue la documentación) está en un archivo json, ejecuta base64 < /path/to/google_service_account_key.json en la terminal para obtener el valor de cadena |
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRET | requerido para crear el conector de volumen/tabla delta de Databricks a través del servidor uns-mcp, consulta cómo en documentación y aquí |
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_ID | requerido para crear el conector de One Drive a través del servidor uns-mcp, consulta cómo en documentación |
PINECONE_API_KEY | requerido para crear el conector de base de datos vectorial Pinecone a través del servidor uns-mcp, consulta cómo en documentación |
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEY | requerido para crear el conector de origen de Salesforce a través del servidor uns-mcp, consulta cómo en documentación |
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_ID | requerido para crear el conector de One Drive a través del servidor uns-mcp, consulta cómo en documentación |
LOG_LEVEL | Se usa para establecer el nivel de registro para nuestro minimal_client, por ejemplo, configúralo en ERROR para obtener todo |
CONFIRM_TOOL_USE | configúralo en true para que minimal_client pueda confirmar la ejecución antes de cada llamada a la herramienta |
DEBUG_API_REQUESTS | configúralo en true para que uns_mcp/server.py pueda mostrar los parámetros de solicitud para un mejor depurado |
Fuente de Firecrawl
Firecrawl es una API de rastreo web que proporciona dos capacidades principales en nuestro MCP:
- Recuperación de contenido HTML: Usando
invoke_firecrawl_crawlhtmlpara iniciar trabajos de rastreo ycheck_crawlhtml_statuspara monitorearlos - Generación de texto optimizada para LLM: Usando
invoke_firecrawl_llmtxtpara generar texto ycheck_llmtxt_statuspara recuperar resultados
Cómo funciona Firecrawl:
Proceso de rastreo web:
- Comienza con una URL especificada y la analiza para identificar enlaces
- Usa el sitemap si está disponible; de lo contrario, sigue los enlaces encontrados en el sitio web
- Recorre recursivamente cada enlace para descubrir todas las subpáginas
- Recopila contenido de cada página visitada, manejando el renderizado de JavaScript y los límites de velocidad
- Los trabajos se pueden cancelar con
cancel_crawlhtml_jobsi es necesario - Usa esto si necesitas que toda la información se extraiga en HTML sin procesar, el flujo de trabajo de Unstructured lo limpia muy bien :smile:
Generación de texto LLM:
- Después del rastreo, extrae contenido de texto limpio y significativo de las páginas rastreadas
- Genera formatos de texto optimizados específicamente para modelos de lenguaje grandes
- Los resultados se suben automáticamente a la ubicación S3 especificada
- Nota: Los trabajos de generación de texto LLM no se pueden cancelar una vez iniciados. La función
cancel_llmtxt_jobse proporciona por consistencia, pero actualmente no es compatible con la API de Firecrawl.
Nota: Se debe configurar una variable de entorno FIRECRAWL_API_KEY para usar estas funciones.
Instalación y Configuración
Esta guía proporciona instrucciones paso a paso para configurar y ajustar el servidor UNS_MCP usando Python 3.12 y la herramienta uv.
Requisitos previos
- Python 3.12+
uvpara la gestión del entorno- Una clave API de Unstructured. Puedes registrarte y obtener tu clave API aquí.
Usando uv (Recomendado)
No se requiere instalación adicional cuando se usa uvx, ya que maneja la ejecución. Sin embargo, si prefieres instalar el paquete directamente:
uv pip install uns_mcp
Configurar Claude Desktop
Para la integración con Claude Desktop, agrega el siguiente contenido a tu claude_desktop_config.json:
Nota: El archivo se encuentra en el directorio ~/Library/Application Support/Claude/.
Usando el comando uvx:
{
"mcpServers": {
"UNS_MCP": {
"command": "uvx",
"args": ["uns_mcp"],
"env": {
"UNSTRUCTURED_API_KEY": "<your-key>"
}
}
}
}
Alternativamente, usando el paquete de Python:
{
"mcpServers": {
"UNS_MCP": {
"command": "python",
"args": ["-m", "uns_mcp"],
"env": {
"UNSTRUCTURED_API_KEY": "<your-key>"
}
}
}
}
Usando el código fuente
-
Clona el repositorio.
-
Instala las dependencias:
uv sync -
Establece tu clave API de Unstructured como variable de entorno. Crea un archivo .env en el directorio raíz con el siguiente contenido:
UNSTRUCTURED_API_KEY="YOUR_KEY"Consulta
.env.templatepara las variables de entorno configurables. Ahora puedes ejecutar el servidor usando uno de los siguientes métodos:
Usando la instalación de paquete editable
Instala como un paquete editable:uvx pip install -e .
Actualiza tu configuración de Claude Desktop:
{
"mcpServers": {
"UNS_MCP": {
"command": "uvx",
"args": ["uns_mcp"]
}
}
}
Nota: Recuerda apuntar al ejecutable de uvx en el entorno donde instalaste el paquete
Usando el protocolo de servidor SSE
Nota: No compatible con Claude Desktop.
Para el protocolo SSE, puedes depurar más fácilmente desacoplando el cliente y el servidor:
-
Inicia el servidor en una terminal:
uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080 # or make sse-server -
Prueba el servidor usando un cliente local en otra terminal:
uv run python minimal_client/client.py "http://127.0.0.1:8080/sse" # or make sse-client
Nota: Para detener los servicios, usa Ctrl+C primero en el cliente y luego en el servidor.
Usando el protocolo de servidor Stdio
Configura Claude Desktop para usar 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"
]
}
}
}
Alternativamente, ejecuta el cliente local:
uv run python minimal_client/client.py uns_mcp/server.py
Configuración adicional del cliente local
Configura el cliente mínimo usando variables de entorno:
LOG_LEVEL="ERROR": Configúralo para suprimir las salidas de depuración del LLM, mostrando mensajes claros para los usuarios.CONFIRM_TOOL_USE='false': Desactiva la confirmación de uso de herramientas antes de la ejecución. Úsalo con precaución, especialmente durante el desarrollo, ya que el LLM puede ejecutar flujos de trabajo costosos o eliminar datos.
Herramientas de depuración
Anthropic proporciona la herramienta MCP Inspector para depurar/probar tu servidor MCP. Ejecuta el siguiente comando para iniciar una interfaz de depuración. Desde allí, podrás agregar variables de entorno (apuntando a tu entorno local) en el panel izquierdo. Incluye tu clave de API personal allí como variable de entorno. Ve a tools, puedes probar las capacidades que agregas al servidor MCP.
mcp dev uns_mcp/server.py
Si necesitas registrar los parámetros de llamadas de solicitud en UnstructuredClient, configura la variable de entorno DEBUG_API_REQUESTS=false.
Los registros se almacenan en un archivo con el formato unstructured-client-{date}.log, que se puede examinar para depurar los parámetros de llamadas de solicitud a las funciones UnstructuredClient.
Agregar acceso a terminal al cliente mínimo
Vamos a usar @wonderwhy-er/desktop-commander para agregar acceso a terminal al cliente mínimo. Está construido sobre el MCP Filesystem Server. Ten cuidado, ya que el cliente (también LLM) ahora tiene acceso a archivos privados.
Ejecuta el siguiente comando para instalar el paquete:
npx @wonderwhy-er/desktop-commander setup
Luego inicia el cliente con el parámetro adicional:
uv run python minimal_client/client.py "http://127.0.0.1:8080/sse" "@wonderwhy-er/desktop-commander"
# or
make sse-client-terminal
Usando un subconjunto de herramientas
Si tu cliente admite usar solo un subconjunto de herramientas, aquí está la lista de cosas que debes tener en cuenta:
- La herramienta
update_workflowdebe cargarse en el contexto junto con la herramientacreate_workflow, porque contiene una descripción detallada sobre cómo crear y configurar un nodo personalizado.
Problemas conocidos
update_workflow- necesita tener en contexto la configuración del flujo de trabajo que está actualizando, ya sea proporcionándola el usuario o llamando a la herramientaget_workflow_info, ya que esta herramienta no funciona como aplicador depatch, reemplaza completamente la configuración del flujo de trabajo.
CHANGELOG.md
Cualquier nueva característica/corrección/mejora desarrollada se agregará a CHANGELOG.md. Se prefiere el formato de pre-lanzamiento 0.x.x-dev antes de pasar a una versión estable.
Solución de problemas
- Si encuentras problemas con
Error: spawn <command> ENOENT, significa que<command>no está instalado o no es visible en tu PATH:- Asegúrate de instalarlo y agregarlo a tu PATH.
- o proporciona la ruta absoluta al comando en el campo
commandde tu configuración. Por ejemplo, reemplazapythoncon/opt/miniconda3/bin/python