Unstructured MCP Server

oficial

Configura y trabaja con tus flujos de trabajo de procesamiento de datos no estructurados en Unstructured Platform.

Documentación

Servidor MCP de la API de Unstructured

Una implementación de servidor MCP para interactuar con la API de Unstructured. Este servidor proporciona herramientas para listar fuentes y flujos de trabajo.

Herramientas disponibles

HerramientaDescripción
list_sourcesLista las fuentes disponibles desde la API de Unstructured.
get_source_infoObtiene información detallada sobre un conector de fuente específico.
create_source_connectorCrea un conector de fuente.
update_source_connectorActualiza un conector de fuente existente mediante parámetros.
delete_source_connectorElimina un conector de fuente por su ID de fuente.
list_destinationsLista los destinos disponibles desde la API de Unstructured.
get_destination_infoObtiene información detallada sobre un conector de destino específico.
create_destination_connectorCrea un conector de destino mediante parámetros.
update_destination_connectorActualiza un conector de destino existente por su ID de destino.
delete_destination_connectorElimina un conector de destino por su ID de destino.
list_workflowsLista los flujos de trabajo desde la API de Unstructured.
get_workflow_infoObtiene información detallada sobre un flujo de trabajo específico.
create_workflowCrea un nuevo flujo de trabajo con fuente, ID de destino, etc.
run_workflowEjecuta un flujo de trabajo específico mediante su ID de flujo de trabajo.
update_workflowActualiza un flujo de trabajo existente mediante parámetros.
delete_workflowElimina un flujo de trabajo específico por su ID.
list_jobsLista los trabajos de un flujo de trabajo específico desde la API de Unstructured.
get_job_infoObtiene información detallada sobre un trabajo específico por su ID de trabajo.
cancel_jobElimina un trabajo específico por su ID.
list_workflows_with_finished_jobsLista todos los flujos de trabajo que tienen algún trabajo completado, junto con información sobre los detalles de fuente y destino.

A continuación se muestra una lista de conectores que el servidor UNS-MCP soporta actualmente; consulte la lista completa de conectores de fuente que la plataforma Unstructured soporta aquí y la lista de destinos aquí. ¡Planeamos agregar más!

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

Para usar la herramienta que crea/actualiza/elimina un conector, las credenciales para ese conector específico deben definirse en su archivo .env. A continuación se muestra la lista de credentials para los conectores que soportamos:

Nombre de credencialDescripción
ANTHROPIC_API_KEYrequerido para ejecutar minimal_client para interactuar con nuestro servidor.
AWS_KEY, AWS_SECRETrequerido para crear un conector S3 a través del servidor uns-mcp, vea cómo en la documentación y aquí
WEAVIATE_CLOUD_API_KEYrequerido para crear un conector de base de datos vectorial Weaviate, vea cómo en la documentación
FIRECRAWL_API_KEYrequerido para usar las herramientas Firecrawl en external/firecrawl.py, regístrese en Firecrawl y obtenga una clave API.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTrequerido para crear un conector Astradb a través del servidor uns-mcp, vea cómo en la documentación
AZURE_CONNECTION_STRINGopción 1 requerida para crear un conector Azure a través del servidor uns-mcp, vea cómo en la documentación
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYopción 2 requerida para crear un conector Azure a través del servidor uns-mcp, vea cómo en la documentación
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENopción 3 requerida para crear un conector Azure a través del servidor uns-mcp, vea cómo en la documentación
NEO4J_PASSWORDrequerido para crear un conector Neo4j a través del servidor uns-mcp, vea cómo en la documentación
MONGO_DB_CONNECTION_STRINGrequerido para crear un conector Mongodb a través del servidor uns-mcp, vea cómo en la documentación
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYun valor de cadena. La clave de cuenta del servidor original (siga la documentación) está en un archivo json, ejecute base64 < /path/to/google_service_account_key.json en la terminal para obtener el valor de cadena
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETrequerido para crear un conector de volumen/tabla delta de Databricks a través del servidor uns-mcp, vea cómo en la documentación y aquí
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDrequerido para crear un conector One Drive a través del servidor uns-mcp, vea cómo en la documentación
PINECONE_API_KEYrequerido para crear un conector de base de datos vectorial Pinecone a través del servidor uns-mcp, vea cómo en la documentación
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYrequerido para crear un conector de fuente Salesforce a través del servidor uns-mcp, vea cómo en la documentación
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDrequerido para crear un conector One Drive a través del servidor uns-mcp, vea cómo en la documentación
LOG_LEVELSe usa para establecer el nivel de registro para nuestro minimal_client, p. ej., configúrelo en ERROR para obtener todo
CONFIRM_TOOL_USEconfigúrelo en true para que minimal_client pueda confirmar la ejecución antes de cada llamada de herramienta
DEBUG_API_REQUESTSconfigúrelo en true para que uns_mcp/server.py pueda mostrar los parámetros de solicitud para una mejor depuración

Fuente Firecrawl

Firecrawl es una API de rastreo web que proporciona dos capacidades principales en nuestro MCP:

  1. Recuperación de contenido HTML: Usando invoke_firecrawl_crawlhtml para iniciar trabajos de rastreo y check_crawlhtml_status para monitorearlos
  2. Generación de texto optimizado para LLM: Usando invoke_firecrawl_llmtxt para generar texto y check_llmtxt_status para recuperar resultados

Cómo funciona Firecrawl:

Proceso de rastreo web:

  • Comienza con una URL especificada y la analiza para identificar enlaces
  • Usa el mapa del sitio 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_job si es necesario
  • Úselo si necesita toda la información extraída en HTML sin procesar; el flujo de trabajo de Unstructured lo limpia muy bien :smile: Generación de texto para 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 cargan automáticamente en la ubicación S3 especificada
  • Nota: Los trabajos de generación de texto para LLM no se pueden cancelar una vez iniciados. La función cancel_llmtxt_job se proporciona por consistencia, pero actualmente no es compatible con la API de Firecrawl.

Nota: Se debe establecer 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 el servidor UNS_MCP usando Python 3.12 y la herramienta uv.

Requisitos previos

  • Python 3.12+
  • uv para 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 al usar uvx, ya que se encarga de 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, añade 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 Python:

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

Usando el código fuente

  1. Clona el repositorio.

  2. Instala las dependencias:

    uv sync
    
  3. 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.template para 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 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 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:

  1. Inicia el servidor en una terminal:

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
    
  2. 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": Establécelo 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 usuario de depuración. Desde allí, podrás añadir variables de entorno (apuntando a tu entorno local) en el panel izquierdo. Incluye tu clave API personal allí como variable de entorno. Ve a tools, puedes probar las capacidades que añadas al servidor MCP.

mcp dev uns_mcp/server.py

Si necesitas registrar los parámetros de llamada de solicitud en UnstructuredClient, establece la variable de entorno DEBUG_API_REQUESTS=false. Los registros se almacenan en un archivo con el formato unstructured-client-{date}.log, que puede examinarse para depurar los parámetros de llamada de solicitud a las funciones UnstructuredClient.

Añadir acceso a la terminal al cliente mínimo

Vamos a usar @wonderwhy-er/desktop-commander para añadir acceso a la terminal al cliente mínimo. Está construido sobre el servidor de sistema de archivos MCP. Ten cuidado, ya que el cliente (también el 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 un parámetro adicional:

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

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_workflow debe cargarse en el contexto junto con la herramienta create_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 herramienta get_workflow_info, ya que esta herramienta no funciona como aplicador de patch, sino que reemplaza completamente la configuración del flujo de trabajo.

CHANGELOG.md

Cualquier nueva característica, corrección o mejora desarrollada se añadirá 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 añadirlo a tu PATH.
    • o proporciona la ruta absoluta al comando en el campo command de tu configuración. Por ejemplo, reemplaza python con /opt/miniconda3/bin/python