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, смотрите здесь, а список назначений — здесь. Мы планируем добавить ещё больше!
| Источник | Назначение |
|---|---|
| S3 | S3 |
| Azure | Weaviate |
| Google Drive | Pinecone |
| OneDrive | AstraDB |
| Salesforce | MongoDB |
| Sharepoint | Neo4j |
| 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:
- Извлечение HTML-контента: Использование
invoke_firecrawl_crawlhtmlдля запуска заданий краулинга иcheck_crawlhtml_statusдля их мониторинга - Генерация текста, оптимизированного для 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>"
}
}
}
}
Использование исходного кода
-
Клонируйте репозиторий.
-
Установите зависимости:
uv sync -
Установите ваш 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 вы можете упростить отладку, разделив клиент и сервер:
-
Запустите сервер в одном терминале:
uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080 # or make sse-server -
Протестируйте сервер с помощью локального клиента в другом терминале:
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