Unstructured MCP Server

официальный

Настройка и взаимодействие с рабочими процессами обработки неструктурированных данных в Unstructured Platform

Документация

Unstructured API MCP-сервер

Реализация MCP-сервера для взаимодействия с Unstructured API. Этот сервер предоставляет инструменты для получения списка источников и рабочих процессов.

Доступные инструменты

ИнструментОписание
list_sourcesВыводит список доступных источников из Unstructured API.
get_source_infoПолучить подробную информацию о конкретном коннекторе источника.
create_source_connectorСоздать коннектор источника.)
update_source_connectorОбновить существующий коннектор источника по параметрам.
delete_source_connectorУдалить коннектор источника по идентификатору источника.
list_destinationsВыводит список доступных назначений из Unstructured API.
get_destination_infoПолучить подробную информацию о конкретном коннекторе назначения
create_destination_connectorСоздать коннектор назначения по параметрам.
update_destination_connectorОбновить существующий коннектор назначения по идентификатору назначения.
delete_destination_connectorУдалить коннектор назначения по идентификатору назначения.
list_workflowsВыводит список рабочих процессов из Unstructured API.
get_workflow_infoПолучить подробную информацию о конкретном рабочем процессе.
create_workflowСоздать новый рабочий процесс с источником, идентификатором назначения и т.д.
run_workflowЗапустить конкретный рабочий процесс по идентификатору рабочего процесса
update_workflowОбновить существующий рабочий процесс по параметрам.
delete_workflowУдалить конкретный рабочий процесс по идентификатору.
list_jobsВыводит список заданий для конкретного рабочего процесса из Unstructured API.
get_job_infoПолучить подробную информацию о конкретном задании по идентификатору задания.
cancel_jobУдалить конкретное задание по идентификатору.
list_workflows_with_finished_jobsВыводит список всех рабочих процессов, у которых есть хотя бы одно завершённое задание, вместе с информацией о деталях источника и назначения.

Ниже приведён список коннекторов, которые в настоящее время поддерживает сервер UNS-MCP. Полный список коннекторов источников, поддерживаемых платформой Unstructured, смотрите здесь, а список назначений — здесь. Мы планируем добавить ещё больше!

ИсточникНазначение
S3S3
AzureWeaviate
Google DrivePinecone
OneDriveAstraDB
SalesforceMongoDB
SharepointNeo4j
Databricks Volumes
Databricks Volumes Delta Table

Чтобы использовать инструмент, который создаёт/обновляет/удаляет коннектор, учётные данные для этого конкретного коннектора должны быть определены в вашем файле .env. Ниже приведён список credentials для поддерживаемых нами коннекторов:

Название учётных данныхОписание
ANTHROPIC_API_KEYтребуется для запуска minimal_client для взаимодействия с нашим сервером.
AWS_KEY, AWS_SECRETтребуется для создания коннектора S3 через сервер uns-mcp, смотрите инструкции в документации и здесь
WEAVIATE_CLOUD_API_KEYтребуется для создания коннектора векторной БД Weaviate, смотрите инструкции в документации
FIRECRAWL_API_KEYтребуется для использования инструментов Firecrawl в external/firecrawl.py, зарегистрируйтесь на Firecrawl и получите API-ключ.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTтребуется для создания коннектора Astradb через сервер uns-mcp, смотрите инструкции в документации
AZURE_CONNECTION_STRINGтребуется вариант 1 для создания коннектора Azure через сервер uns-mcp, смотрите инструкции в документации
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYтребуется вариант 2 для создания коннектора Azure через сервер uns-mcp, смотрите инструкции в документации
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENтребуется вариант 3 для создания коннектора Azure через сервер uns-mcp, смотрите инструкции в документации
NEO4J_PASSWORDтребуется для создания коннектора Neo4j через сервер uns-mcp, смотрите инструкции в документации
MONGO_DB_CONNECTION_STRINGтребуется для создания коннектора Mongodb через сервер uns-mcp, смотрите инструкции в документации
GOOGLEDRIVE_SERVICE_ACCOUNT_KEYстроковое значение. Исходный ключ учётной записи сервера (следуйте документации) находится в json-файле, выполните base64 < /path/to/google_service_account_key.json в терминале, чтобы получить строковое значение
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETтребуется для создания коннектора Databricks volume/delta table через сервер uns-mcp, смотрите инструкции в документации и здесь
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDтребуется для создания коннектора One Drive через сервер uns-mcp, смотрите инструкции в документации
PINECONE_API_KEYтребуется для создания коннектора векторной БД Pinecone через сервер uns-mcp, смотрите инструкции в документации
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYтребуется для создания коннектора источника salesforce через сервер uns-mcp, смотрите инструкции в документации
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDтребуется для создания коннектора One Drive через сервер uns-mcp, смотрите инструкции в документации
LOG_LEVELИспользуется для установки уровня логирования для нашего minimal_client, например, установите ERROR, чтобы получать всё
CONFIRM_TOOL_USEустановите true, чтобы minimal_client мог подтверждать выполнение перед каждым вызовом инструмента
DEBUG_API_REQUESTSустановите true, чтобы uns_mcp/server.py мог выводить параметры запроса для лучшей отладки

Источник Firecrawl

Firecrawl — это API для веб-краулинга, который предоставляет две основные возможности в нашем MCP:

  1. Извлечение HTML-контента: Использование invoke_firecrawl_crawlhtml для запуска заданий краулинга и check_crawlhtml_status для их мониторинга
  2. Генерация текста, оптимизированного для LLM: Использование invoke_firecrawl_llmtxt для генерации текста и check_llmtxt_status для получения результатов

Как работает Firecrawl:

Процесс веб-краулинга:

  • Начинается с указанного URL и анализирует его для выявления ссылок
  • Использует карту сайта, если она доступна; в противном случае переходит по ссылкам, найденным на веб-сайте
  • Рекурсивно обходит каждую ссылку, чтобы обнаружить все подстраницы
  • Собирает контент с каждой посещённой страницы, обрабатывая рендеринг JavaScript и ограничения по частоте запросов
  • Задания можно отменить с помощью cancel_crawlhtml_job, если это необходимо
  • Используйте это, если вам нужна вся информация, извлечённая в виде сырого HTML, рабочий процесс Unstructured отлично её очищает :smile: Генерация текста для LLM:
  • После обхода извлекает чистое, осмысленное текстовое содержимое с обойденных страниц
  • Генерирует оптимизированные текстовые форматы, специально отформатированные для больших языковых моделей
  • Результаты автоматически загружаются в указанное местоположение S3
  • Примечание: задания генерации текста для LLM нельзя отменить после запуска. Функция cancel_llmtxt_job предоставлена для единообразия, но в настоящее время не поддерживается API Firecrawl.

Примечание: для использования этих функций необходимо установить переменную окружения FIRECRAWL_API_KEY.

Установка и настройка

Это руководство содержит пошаговые инструкции по установке и настройке сервера UNS_MCP с использованием Python 3.12 и инструмента uv.

Предварительные требования

  • Python 3.12+
  • uv для управления окружением
  • API-ключ от Unstructured. Вы можете зарегистрироваться и получить свой API-ключ здесь.

Использование uv (рекомендуется)

При использовании uvx дополнительная установка не требуется, так как он сам управляет выполнением. Однако, если вы предпочитаете установить пакет напрямую:

uv pip install uns_mcp

Настройка Claude Desktop

Для интеграции с Claude Desktop добавьте следующее содержимое в ваш claude_desktop_config.json:

Примечание: Файл находится в каталоге ~/Library/Application Support/Claude/.

Использование команды uvx:

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

Или с использованием пакета Python:

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

Использование исходного кода

  1. Клонируйте репозиторий.

  2. Установите зависимости:

    uv sync
    
  3. Установите ваш API-ключ Unstructured в качестве переменной окружения. Создайте файл .env в корневом каталоге со следующим содержимым:

    UNSTRUCTURED_API_KEY="YOUR_KEY"
    

    Обратитесь к .env.template для настраиваемых переменных окружения.

Теперь вы можете запустить сервер одним из следующих способов:

Использование установки редактируемого пакета Установите как редактируемый пакет:
uvx pip install -e .

Обновите конфигурацию Claude Desktop:

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

Примечание: Не забудьте указать путь к исполняемому файлу uvx в том окружении, где вы установили пакет

Использование протокола SSE-сервера

Примечание: Не поддерживается Claude Desktop.

Для протокола SSE вы можете упростить отладку, разделив клиент и сервер:

  1. Запустите сервер в одном терминале:

    uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
    # or
    make sse-server
    
  2. Протестируйте сервер с помощью локального клиента в другом терминале:

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

Примечание: Для остановки служб используйте Ctrl+C сначала на клиенте, затем на сервере.

Использование протокола Stdio-сервера

Настройте Claude Desktop для использования 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"
      ]
    }
  }
}

Или запустите локальный клиент:

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

Дополнительная настройка локального клиента

Настройте минимальный клиент с помощью переменных окружения:

  • LOG_LEVEL="ERROR": Установите, чтобы отключить отладочный вывод от LLM, показывая понятные сообщения для пользователей.
  • CONFIRM_TOOL_USE='false': Отключить подтверждение использования инструментов перед выполнением. Используйте с осторожностью, особенно во время разработки, так как LLM может выполнять дорогостоящие операции или удалять данные.

Инструменты отладки

Anthropic предоставляет инструмент MCP Inspector для отладки/тестирования вашего MCP-сервера. Выполните следующую команду, чтобы запустить отладочный интерфейс. Оттуда вы сможете добавить переменные окружения (указывающие на ваше локальное окружение) на левой панели. Укажите там ваш личный API-ключ как переменную окружения. Перейдите в tools, чтобы протестировать возможности, которые вы добавляете на MCP-сервер.

mcp dev uns_mcp/server.py

Если вам нужно регистрировать параметры вызовов запросов к UnstructuredClient, установите переменную окружения DEBUG_API_REQUESTS=false. Логи сохраняются в файл с форматом unstructured-client-{date}.log, который можно изучить для отладки параметров вызовов запросов к функциям UnstructuredClient.

Добавление доступа к терминалу для минимального клиента

Мы собираемся использовать @wonderwhy-er/desktop-commander, чтобы добавить доступ к терминалу для минимального клиента. Он построен на базе MCP Filesystem Server. Будьте осторожны, так как клиент (а также LLM) теперь имеет доступ к личным файлам.

Выполните следующую команду для установки пакета:

npx @wonderwhy-er/desktop-commander setup

Затем запустите клиент с дополнительным параметром:

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

Использование подмножества инструментов

Если ваш клиент поддерживает использование только подмножества инструментов, вот список того, о чем следует знать:

  • Инструмент update_workflow должен быть загружен в контекст вместе с инструментом create_workflow, так как он содержит подробное описание того, как создать и настроить пользовательский узел.

Известные проблемы

  • update_workflow - необходимо иметь в контексте конфигурацию рабочего процесса, который он обновляет, либо предоставив ее пользователем, либо вызвав инструмент get_workflow_info, так как этот инструмент не работает как аппликатор patch, он полностью заменяет конфигурацию рабочего процесса.

CHANGELOG.md

Любые новые разработанные функции/исправления/улучшения будут добавляться в CHANGELOG.md. Предпочтителен формат предварительного выпуска 0.x.x-dev до перехода к стабильной версии.

Устранение неполадок

  • Если у вас возникли проблемы с Error: spawn <command> ENOENT, это означает, что <command> не установлен или не виден в вашем PATH:
    • Убедитесь, что он установлен и добавлен в ваш PATH.
    • или укажите абсолютный путь к команде в поле command вашей конфигурации. Так, например, замените python на /opt/miniconda3/bin/python