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

ToolDescripción
list_sourcesLista las fuentes disponibles de la API de Unstructured.
get_source_infoObtén información detallada sobre un conector de origen específico.
create_source_connectorCrear un conector de origen.)
update_source_connectorActualizar un conector de origen existente por parámetros.
delete_source_connectorEliminar un conector de origen por ID de origen.
list_destinationsLista los destinos disponibles de la API de Unstructured.
get_destination_infoObtén información detallada sobre un conector de destino específico
create_destination_connectorCrear un conector de destino por parámetros.
update_destination_connectorActualizar un conector de destino existente por ID de destino.
delete_destination_connectorEliminar un conector de destino por ID de destino.
list_workflowsLista los flujos de trabajo de la API de Unstructured.
get_workflow_infoObtén información detallada sobre un flujo de trabajo específico.
create_workflowCrear un nuevo flujo de trabajo con origen, ID de destino, etc.
run_workflowEjecutar un flujo de trabajo específico con ID de flujo de trabajo
update_workflowActualizar un flujo de trabajo existente por parámetros.
delete_workflowEliminar un flujo de trabajo específico por ID.
list_jobsLista los trabajos de un flujo de trabajo específico de la API de Unstructured.
get_job_infoObtén información detallada sobre un trabajo específico por ID de trabajo.
cancel_jobEliminar 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!

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 estar definidas en tu 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 el minimal_client para interactuar con nuestro servidor.
AWS_KEY, AWS_SECRETrequerido para crear el conector S3 a través del servidor uns-mcp, consulta cómo en documentación y aquí
WEAVIATE_CLOUD_API_KEYrequerido para crear el conector de base de datos vectorial Weaviate, consulta cómo en documentación
FIRECRAWL_API_KEYrequerido 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_ENDPOINTrequerido para crear el conector Astradb a través del servidor uns-mcp, consulta cómo en documentación
AZURE_CONNECTION_STRINGopció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_KEYopció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_TOKENopción 3 requerida para crear el conector Azure a través del servidor uns-mcp, consulta cómo en documentación
NEO4J_PASSWORDrequerido para crear el conector Neo4j a través del servidor uns-mcp, consulta cómo en documentación
MONGO_DB_CONNECTION_STRINGrequerido para crear el conector Mongodb a través del servidor uns-mcp, consulta cómo en documentación
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYun 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_SECRETrequerido 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_IDrequerido para crear el conector de One Drive a través del servidor uns-mcp, consulta cómo en documentación
PINECONE_API_KEYrequerido 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_KEYrequerido 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_IDrequerido para crear el conector de One Drive a través del servidor uns-mcp, consulta cómo en documentación
LOG_LEVELSe usa para establecer el nivel de registro para nuestro minimal_client, por ejemplo, configúralo en ERROR para obtener todo
CONFIRM_TOOL_USEconfigúralo en true para que minimal_client pueda confirmar la ejecución antes de cada llamada a la herramienta
DEBUG_API_REQUESTSconfigú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:

  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 optimizada 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 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_job si 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_job se 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+
  • 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 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

  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 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:

  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": 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_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, 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 command de tu configuración. Por ejemplo, reemplaza python con /opt/miniconda3/bin/python