Unstructured MCP Server

oficial

Configure e interaja com seus fluxos de trabalho de processamento de dados não estruturados na Unstructured Platform

Documentação

Servidor MCP da API Unstructured

Uma implementação de servidor MCP para interagir com a API Unstructured. Este servidor fornece ferramentas para listar fontes e fluxos de trabalho.

Ferramentas Disponíveis

FerramentaDescrição
list_sourcesLista as fontes disponíveis da API Unstructured.
get_source_infoObtém informações detalhadas sobre um conector de origem específico.
create_source_connectorCria um conector de origem.
update_source_connectorAtualiza um conector de origem existente por parâmetros.
delete_source_connectorExclui um conector de origem pelo ID da origem.
list_destinationsLista os destinos disponíveis da API Unstructured.
get_destination_infoObtém informações detalhadas sobre um conector de destino específico
create_destination_connectorCria um conector de destino por parâmetros.
update_destination_connectorAtualiza um conector de destino existente pelo ID do destino.
delete_destination_connectorExclui um conector de destino pelo ID do destino.
list_workflowsLista os fluxos de trabalho da API Unstructured.
get_workflow_infoObtém informações detalhadas sobre um fluxo de trabalho específico.
create_workflowCria um novo fluxo de trabalho com origem, ID de destino, etc.
run_workflowExecuta um fluxo de trabalho específico pelo ID do fluxo
update_workflowAtualiza um fluxo de trabalho existente por parâmetros.
delete_workflowExclui um fluxo de trabalho específico pelo ID.
list_jobsLista os jobs de um fluxo de trabalho específico da API Unstructured.
get_job_infoObtém informações detalhadas sobre um job específico pelo ID do job.
cancel_jobExclui um job específico pelo ID.
list_workflows_with_finished_jobsLista todos os fluxos de trabalho que possuem algum job concluído, juntamente com informações sobre detalhes de origem e destino.

Abaixo está uma lista de conectores que o servidor UNS-MCP atualmente suporta. Consulte a lista completa de conectores de origem que a plataforma Unstructured suporta aqui e a lista de destinos aqui. Estamos planejando adicionar mais!

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

Para usar a ferramenta que cria/atualiza/exclui um conector, as credenciais para esse conector específico devem ser definidas no seu arquivo .env. Abaixo está a lista de credentials para os conectores que suportamos:

Nome da CredencialDescrição
ANTHROPIC_API_KEYobrigatório para executar o minimal_client para interagir com nosso servidor.
AWS_KEY, AWS_SECRETobrigatório para criar conector S3 via servidor uns-mcp, veja como na documentação e aqui
WEAVIATE_CLOUD_API_KEYobrigatório para criar conector de banco vetorial Weaviate, veja como na documentação
FIRECRAWL_API_KEYobrigatório para usar ferramentas Firecrawl no external/firecrawl.py, cadastre-se no Firecrawl e obtenha uma chave de API.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTobrigatório para criar conector Astradb via servidor uns-mcp, veja como na documentação
AZURE_CONNECTION_STRINGopção 1 obrigatória para criar conector Azure via servidor uns-mcp, veja como na documentação
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYopção 2 obrigatória para criar conector Azure via servidor uns-mcp, veja como na documentação
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENopção 3 obrigatória para criar conector Azure via servidor uns-mcp, veja como na documentação
NEO4J_PASSWORDobrigatório para criar conector Neo4j via servidor uns-mcp, veja como na documentação
MONGO_DB_CONNECTION_STRINGobrigatório para criar conector Mongodb via servidor uns-mcp, veja como na documentação
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYum valor string. A chave da conta do servidor original (siga a documentação) está em arquivo json, execute base64 < /path/to/google_service_account_key.json no terminal para obter o valor string
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETobrigatório para criar conector Databricks volume/delta table via servidor uns-mcp, veja como na documentação e aqui
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDobrigatório para criar conector One Drive via servidor uns-mcp, veja como na documentação
PINECONE_API_KEYobrigatório para criar conector de banco vetorial Pinecone via servidor uns-mcp, veja como na documentação
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYobrigatório para criar conector de origem salesforce via servidor uns-mcp, veja como na documentação
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDobrigatório para criar conector One Drive via servidor uns-mcp, veja como na documentação
LOG_LEVELUsado para definir o nível de log para nosso minimal_client, ex.: defina como ERROR para obter tudo
CONFIRM_TOOL_USEdefina como true para que minimal_client possa confirmar a execução antes de cada chamada de ferramenta
DEBUG_API_REQUESTSdefina como true para que uns_mcp/server.py possa exibir parâmetros de requisição para melhor depuração

Origem Firecrawl

Firecrawl é uma API de rastreamento web que fornece duas capacidades principais em nosso MCP:

  1. Recuperação de Conteúdo HTML: Usando invoke_firecrawl_crawlhtml para iniciar jobs de rastreamento e check_crawlhtml_status para monitorá-los
  2. Geração de Texto Otimizado para LLM: Usando invoke_firecrawl_llmtxt para gerar texto e check_llmtxt_status para recuperar resultados

Como o Firecrawl funciona:

Processo de Rastreamento Web:

  • Começa com uma URL especificada e a analisa para identificar links
  • Usa o sitemap se disponível; caso contrário, segue os links encontrados no site
  • Percorre recursivamente cada link para descobrir todas as subpáginas
  • Coleta conteúdo de cada página visitada, lidando com renderização JavaScript e limites de taxa
  • Jobs podem ser cancelados com cancel_crawlhtml_job se necessário
  • Use isso se você precisar de todas as informações extraídas em HTML bruto; o fluxo de trabalho do Unstructured faz uma limpeza muito boa :smile: Geração de Texto para LLM:
  • Após o rastreamento, extrai conteúdo de texto limpo e significativo das páginas rastreadas
  • Gera formatos de texto otimizados especificamente para modelos de linguagem de grande porte
  • Os resultados são enviados automaticamente para o local S3 especificado
  • Nota: Trabalhos de geração de texto para LLM não podem ser cancelados depois de iniciados. A função cancel_llmtxt_job é fornecida por consistência, mas atualmente não é suportada pela API Firecrawl.

Nota: Uma variável de ambiente FIRECRAWL_API_KEY deve ser definida para usar essas funções.

Instalação e Configuração

Este guia fornece instruções passo a passo para configurar o servidor UNS_MCP usando Python 3.12 e a ferramenta uv.

Pré-requisitos

  • Python 3.12+
  • uv para gerenciamento de ambiente
  • Uma chave de API do Unstructured. Você pode se cadastrar e obter sua chave de API aqui.

Usando uv (Recomendado)

Nenhuma instalação adicional é necessária ao usar uvx, pois ele gerencia a execução. No entanto, se preferir instalar o pacote diretamente:

uv pip install uns_mcp

Configurar o Claude Desktop

Para integração com o Claude Desktop, adicione o seguinte conteúdo ao seu claude_desktop_config.json:

Nota: O arquivo está localizado no diretório ~/Library/Application Support/Claude/.

Usando o Comando uvx:

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

Alternativamente, Usando o Pacote Python:

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

Usando o Código Fonte

  1. Clone o repositório.

  2. Instale as dependências:

    uv sync
    
  3. Defina sua chave de API do Unstructured como uma variável de ambiente. Crie um arquivo .env no diretório raiz com o seguinte conteúdo:

    UNSTRUCTURED_API_KEY="YOUR_KEY"
    

    Consulte .env.template para as variáveis de ambiente configuráveis.

Agora você pode executar o servidor usando um dos seguintes métodos:

Usando Instalação de Pacote Editável Instale como um pacote editável:
uvx pip install -e .

Atualize sua configuração do Claude Desktop:

{
  "mcpServers": {
    "UNS_MCP": {
      "command": "uvx",
      "args": ["uns_mcp"]
    }
  }
}

Nota: Lembre-se de apontar para o executável uvx no ambiente onde você instalou o pacote

Usando o Protocolo de Servidor SSE

Nota: Não suportado pelo Claude Desktop.

Para o protocolo SSE, você pode depurar mais facilmente desacoplando o cliente e o servidor:

  1. Inicie o servidor em um terminal:

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
    
  2. Teste o servidor usando um cliente local em outro terminal:

    uv run python minimal_client/client.py "http://127.0.0.1:8080/sse"
    # or
    make sse-client
    

Nota: Para parar os serviços, use Ctrl+C primeiro no cliente e depois no servidor.

Usando o Protocolo de Servidor Stdio

Configure o 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, execute o cliente local:

uv run python minimal_client/client.py uns_mcp/server.py

Configuração Adicional do Cliente Local

Configure o cliente mínimo usando variáveis de ambiente:

  • LOG_LEVEL="ERROR": Defina para suprimir saídas de depuração do LLM, exibindo mensagens claras para os usuários.
  • CONFIRM_TOOL_USE='false': Desabilita a confirmação de uso da ferramenta antes da execução. Use com cautela, especialmente durante o desenvolvimento, pois o LLM pode executar fluxos de trabalho caros ou excluir dados.

Ferramentas de depuração

A Anthropic fornece a ferramenta MCP Inspector para depurar/testar seu servidor MCP. Execute o seguinte comando para abrir uma interface de depuração. A partir dela, você poderá adicionar variáveis de ambiente (apontando para seu ambiente local) no painel esquerdo. Inclua sua chave de API pessoal lá como variável de ambiente. Vá para tools, você pode testar as capacidades que adicionar ao servidor MCP.

mcp dev uns_mcp/server.py

Se você precisar registrar parâmetros de chamada de requisição para UnstructuredClient, defina a variável de ambiente DEBUG_API_REQUESTS=false. Os logs são armazenados em um arquivo com o formato unstructured-client-{date}.log, que pode ser examinado para depurar parâmetros de chamada de requisição para funções UnstructuredClient.

Adicionar acesso ao terminal ao cliente mínimo

Vamos usar @wonderwhy-er/desktop-commander para adicionar acesso ao terminal ao cliente mínimo. Ele é construído sobre o Servidor de Sistema de Arquivos MCP. Tenha cuidado, pois o cliente (também o LLM) agora tem acesso a arquivos privados.

Execute o seguinte comando para instalar o pacote:

npx @wonderwhy-er/desktop-commander setup

Em seguida, inicie o cliente com o parâmetro extra:

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 um subconjunto de ferramentas

Se o seu cliente suporta usar apenas um subconjunto de ferramentas, aqui está a lista de coisas que você deve estar ciente:

  • A ferramenta update_workflow deve ser carregada no contexto juntamente com a ferramenta create_workflow, porque contém uma descrição detalhada sobre como criar e configurar um nó personalizado.

Problemas conhecidos

  • update_workflow - precisa ter no contexto a configuração do fluxo de trabalho que está atualizando, seja fornecendo-a pelo usuário ou chamando a ferramenta get_workflow_info, pois esta ferramenta não funciona como um aplicador de patch, ela substitui completamente a configuração do fluxo de trabalho.

CHANGELOG.md

Quaisquer novos recursos/correções/melhorias desenvolvidos serão adicionados ao CHANGELOG.md. O formato de pré-lançamento 0.x.x-dev é preferido antes de avançarmos para uma versão estável.

Solução de Problemas

  • Se você encontrar problemas com Error: spawn <command> ENOENT, significa que <command> não está instalado ou visível no seu PATH:
    • Certifique-se de instalá-lo e adicioná-lo ao seu PATH.
    • ou forneça o caminho absoluto para o comando no campo command da sua configuração. Por exemplo, substitua python por /opt/miniconda3/bin/python