Unstructured API MCP Server

Interaja com a API Unstructured para gerenciar fontes de dados, destinos, fluxos de trabalho e tarefas.

Documentação

Unstructured API MCP Server

Uma implementação de servidor MCP para interagir com a API da 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 da Unstructured.
get_source_infoObtém informações detalhadas sobre um conector de fonte específico.
create_source_connectorCria um conector de fonte.)
update_source_connectorAtualiza um conector de fonte existente por parâmetros.
delete_source_connectorExclui um conector de fonte pelo ID da fonte.
list_destinationsLista os destinos disponíveis da API da 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 da Unstructured.
get_workflow_infoObtém informações detalhadas sobre um fluxo de trabalho específico.
create_workflowCria um novo fluxo de trabalho com fonte, ID de destino, etc.
run_workflowExecuta um fluxo de trabalho específico com o ID do fluxo de trabalho.
update_workflowAtualiza um fluxo de trabalho existente por parâmetros.
delete_workflowExclui um fluxo de trabalho específico pelo ID.
list_jobsLista os trabalhos de um fluxo de trabalho específico da API da Unstructured.
get_job_infoObtém informações detalhadas sobre um trabalho específico pelo ID do trabalho.
cancel_jobExclui um trabalho específico pelo ID.

Abaixo está uma lista de conectores que o servidor UNS-MCP suporta atualmente. Consulte a lista completa de conectores de fonte 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_KEYnecessário para executar o minimal_client para interagir com nosso servidor.
AWS_KEY, AWS_SECRETnecessário para criar o conector S3 via servidor uns-mcp, veja como na documentação e aqui
WEAVIATE_CLOUD_API_KEYnecessário para criar o conector de banco de dados vetorial Weaviate, veja como na documentação
FIRECRAWL_API_KEYnecessário para usar as ferramentas Firecrawl no external/firecrawl.py, cadastre-se no Firecrawl e obtenha uma chave de API.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTnecessário para criar o conector Astradb via servidor uns-mcp, veja como na documentação
AZURE_CONNECTION_STRINGopção 1 necessária para criar o conector Azure via servidor uns-mcp, veja como na documentação
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYopção 2 necessária para criar o conector Azure via servidor uns-mcp, veja como na documentação
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENopção 3 necessária para criar o conector Azure via servidor uns-mcp, veja como na documentação
NEO4J_PASSWORDnecessário para criar o conector Neo4j via servidor uns-mcp, veja como na documentação
MONGO_DB_CONNECTION_STRINGnecessário para criar o conector MongoDB via servidor uns-mcp, veja como na documentação
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYum valor de string. A chave de conta do servidor original (siga a documentação) está em um arquivo json, execute base64 < /path/to/google_service_account_key.json no terminal para obter o valor da string
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETnecessário para criar o conector de volume/tabela delta do Databricks via servidor uns-mcp, veja como na documentação e aqui
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDnecessário para criar o conector One Drive via servidor uns-mcp, veja como na documentação
PINECONE_API_KEYnecessário para criar o conector de banco de dados vetorial Pinecone via servidor uns-mcp, veja como na documentação
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYnecessário para criar o conector de fonte Salesforce via servidor uns-mcp, veja como na documentação
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDnecessário para criar o conector One Drive via servidor uns-mcp, veja como na documentação
LOG_LEVELUsado para definir o nível de registro para nosso minimal_client, por exemplo, 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 os parâmetros da solicitação para melhor depuração

Fonte 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 trabalhos 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
  • Os trabalhos 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 da Unstructured limpa muito bem :smile:

Geração de Texto LLM:

  • Após o rastreamento, extrai conteúdo de texto limpo e significativo das páginas rastreadas
  • Gera formatos de texto otimizados especificamente formatados para grandes modelos de linguagem
  • Os resultados são automaticamente enviados para o local S3 especificado
  • Nota: Os trabalhos de geração de texto LLM não podem ser cancelados após o início. A função cancel_llmtxt_job é fornecida para 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 da 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 lida com a execução. No entanto, se você 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 da 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 Protocolo de Servidor SSE

Nota: Não suportado pelo Claude Desktop.

Para o protocolo SSE, você pode depurar mais facilmente separando 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 no cliente primeiro, depois no servidor.

Usando 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': Desative a confirmação de uso de ferramentas 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 iniciar uma interface de depuração. A partir daí, 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 os recursos que adicionou ao servidor MCP.

mcp dev uns_mcp/server.py

Se você precisar registrar parâmetros de chamada de solicitaçã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 solicitaçã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 no MCP Filesystem Server. Tenha cuidado, pois o cliente (também 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 parâmetro extra:

uv run python minimal_client/client.py "http://127.0.0.1:8080/sse" "@wonderwhy-er/desktop-commander"
# or
make sse-client-terminal

Usando subconjunto de ferramentas

Se o seu cliente suportar 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 junto com a ferramenta create_workflow, pois contém descrição detalhada sobre como criar e configurar nó personalizado.

Problemas conhecidos

  • update_workflow - precisa ter no contexto a configuração do fluxo de trabalho que está atualizando, seja fornecida pelo usuário ou chamando a ferramenta get_workflow_info, pois essa ferramenta não funciona como aplicador 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 passarmos 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