Unstructured MCP Server

공식

Unstructured Platform에서 비정형 데이터 처리 워크플로우를 설정하고 상호작용하세요.

문서

Unstructured API MCP 서버

Unstructured API와 상호 작용하기 위한 MCP 서버 구현입니다. 이 서버는 소스와 워크플로우를 나열하는 도구를 제공합니다.

사용 가능한 도구

도구설명
list_sourcesUnstructured API에서 사용 가능한 소스를 나열합니다.
get_source_info특정 소스 커넥터에 대한 자세한 정보를 가져옵니다.
create_source_connector소스 커넥터를 생성합니다.)
update_source_connector매개변수로 기존 소스 커넥터를 업데이트합니다.
delete_source_connector소스 ID로 소스 커넥터를 삭제합니다.
list_destinationsUnstructured API에서 사용 가능한 대상을 나열합니다.
get_destination_info특정 대상 커넥터에 대한 자세한 정보를 가져옵니다.
create_destination_connector매개변수로 대상 커넥터를 생성합니다.
update_destination_connector대상 ID로 기존 대상 커넥터를 업데이트합니다.
delete_destination_connector대상 ID로 대상 커넥터를 삭제합니다.
list_workflowsUnstructured API에서 워크플로우를 나열합니다.
get_workflow_info특정 워크플로우에 대한 자세한 정보를 가져옵니다.
create_workflow소스, 대상 ID 등으로 새 워크플로우를 생성합니다.
run_workflow워크플로우 ID로 특정 워크플로우를 실행합니다.
update_workflow매개변수로 기존 워크플로우를 업데이트합니다.
delete_workflowID로 특정 워크플로우를 삭제합니다.
list_jobsUnstructured API에서 특정 워크플로우의 작업을 나열합니다.
get_job_info작업 ID로 특정 작업에 대한 자세한 정보를 가져옵니다.
cancel_jobID로 특정 작업을 삭제합니다.
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_SECRETuns-mcp 서버를 통해 S3 커넥터를 생성하는 데 필요합니다. 문서여기에서 방법을 확인하세요.
WEAVIATE_CLOUD_API_KEYWeaviate 벡터 DB 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
FIRECRAWL_API_KEYexternal/firecrawl.py에서 Firecrawl 도구를 사용하는 데 필요합니다. Firecrawl에서 가입하고 API 키를 받으세요.
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINTuns-mcp 서버를 통해 Astradb 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
AZURE_CONNECTION_STRINGuns-mcp 서버를 통해 Azure 커넥터를 생성하는 옵션 1에 필요합니다. 문서에서 방법을 확인하세요.
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEYuns-mcp 서버를 통해 Azure 커넥터를 생성하는 옵션 2에 필요합니다. 문서에서 방법을 확인하세요.
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKENuns-mcp 서버를 통해 Azure 커넥터를 생성하는 옵션 3에 필요합니다. 문서에서 방법을 확인하세요.
NEO4J_PASSWORDuns-mcp 서버를 통해 Neo4j 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
MONGO_DB_CONNECTION_STRINGuns-mcp 서버를 통해 Mongodb 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY문자열 값입니다. 원본 서버 계정 키(문서 참조)는 json 파일에 있으며, 터미널에서 base64 < /path/to/google_service_account_key.json을(를) 실행하여 문자열 값을 얻습니다.
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRETuns-mcp 서버를 통해 Databricks 볼륨/델타 테이블 커넥터를 생성하는 데 필요합니다. 문서여기에서 방법을 확인하세요.
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_IDuns-mcp 서버를 통해 One Drive 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
PINECONE_API_KEYuns-mcp 서버를 통해 Pinecone 벡터 DB 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEYuns-mcp 서버를 통해 salesforce 소스 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_IDuns-mcp 서버를 통해 One Drive 커넥터를 생성하는 데 필요합니다. 문서에서 방법을 확인하세요.
LOG_LEVELminimal_client의 로깅 수준을 설정하는 데 사용됩니다. 예: 모든 것을 얻으려면 ERROR로 설정하세요.
CONFIRM_TOOL_USEtrue로 설정하면 minimal_client이(가) 각 도구 호출 전에 실행을 확인할 수 있습니다.
DEBUG_API_REQUESTStrue로 설정하면 uns_mcp/server.py이(가) 더 나은 디버깅을 위해 요청 매개변수를 출력할 수 있습니다.

Firecrawl 소스

Firecrawl은 MCP에서 두 가지 주요 기능을 제공하는 웹 크롤링 API입니다:

  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 함수는 일관성을 위해 제공되지만 현재 Firecrawl API에서 지원되지 않습니다.

참고: 이 함수들을 사용하려면 FIRECRAWL_API_KEY 환경 변수가 설정되어야 합니다.

설치 및 구성

이 가이드는 Python 3.12와 uv 도구를 사용하여 UNS_MCP 서버를 설정하고 구성하는 단계별 지침을 제공합니다.

사전 요구 사항

  • Python 3.12 이상
  • 환경 관리를 위한 uv
  • Unstructured의 API 키. 여기에서 가입하고 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. Unstructured API 키를 환경 변수로 설정합니다. 루트 디렉터리에 다음 내용으로 .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 서버 프로토콜 사용

stdio를 사용하도록 Claude Desktop 구성:

{
  "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 서버를 디버그/테스트하기 위한 MCP Inspector 도구를 제공합니다. 다음 명령을 실행하여 디버깅 UI를 시작하세요. 여기에서 왼쪽 창에 환경 변수(로컬 환경을 가리킴)를 추가할 수 있습니다. 개인 API 키를 환경 변수로 포함하세요. tools로 이동하여 MCP 서버에 추가한 기능을 테스트할 수 있습니다.

mcp dev uns_mcp/server.py

UnstructuredClient에 요청 호출 매개변수를 기록해야 하는 경우 환경 변수 DEBUG_API_REQUESTS=false을 설정하세요. 로그는 unstructured-client-{date}.log 형식의 파일에 저장되며, 이를 검사하여 UnstructuredClient 함수에 대한 요청 호출 매개변수를 디버깅할 수 있습니다.

최소 클라이언트에 터미널 액세스 추가

@wonderwhy-er/desktop-commander를 사용하여 최소 클라이언트에 터미널 액세스를 추가할 것입니다. 이는 MCP 파일 시스템 서버를 기반으로 구축되었습니다. 이제 클라이언트(및 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 - 이 도구는 patch 적용기로 작동하지 않고 워크플로 구성을 완전히 대체하므로, 업데이트 중인 워크플로의 구성을 사용자가 제공하거나 get_workflow_info 도구를 호출하여 컨텍스트에 포함해야 합니다.

CHANGELOG.md

새로 개발된 기능/수정 사항/개선 사항은 CHANGELOG.md에 추가됩니다. 안정 버전으로 올리기 전에 0.x.x-dev 사전 릴리스 형식이 선호됩니다.

문제 해결

  • Error: spawn <command> ENOENT 관련 문제가 발생하면 <command>이 설치되지 않았거나 PATH에 표시되지 않는 것을 의미합니다:
    • 설치하고 PATH에 추가했는지 확인하세요.
    • 또는 구성의 command 필드에 명령의 절대 경로를 제공하세요. 예를 들어 python/opt/miniconda3/bin/python로 바꾸세요.