Unstructured MCP Server

官方

在Unstructured Platform中设置并交互您的非结构化数据处理工作流。

文档

Unstructured API MCP 服务器

一个用于与 Unstructured API 交互的 MCP 服务器实现。此服务器提供列出数据源和工作流的工具。

可用工具

工具描述
list_sources列出 Unstructured API 中的可用数据源。
get_source_info获取特定数据源连接器的详细信息。
create_source_connector创建一个数据源连接器。)
update_source_connector通过参数更新现有的数据源连接器。
delete_source_connector通过数据源 ID 删除一个数据源连接器。
list_destinations列出 Unstructured API 中的可用目标。
get_destination_info获取特定目标连接器的详细信息
create_destination_connector通过参数创建一个目标连接器。
update_destination_connector通过目标 ID 更新现有的目标连接器。
delete_destination_connector通过目标 ID 删除一个目标连接器。
list_workflows列出 Unstructured API 中的工作流。
get_workflow_info获取特定工作流的详细信息。
create_workflow使用数据源、目标 ID 等创建一个新工作流。
run_workflow使用工作流 ID 运行特定工作流
update_workflow通过参数更新现有工作流。
delete_workflow通过 ID 删除特定工作流。
list_jobs列出 Unstructured API 中特定工作流的作业。
get_job_info通过作业 ID 获取特定作业的详细信息。
cancel_job通过 ID 删除特定作业。
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通过 uns-mcp 服务器创建 S3 连接器所必需,请参阅文档此处
WEAVIATE_CLOUD_API_KEY创建 Weaviate 向量数据库连接器所必需,请参阅文档
FIRECRAWL_API_KEYexternal/firecrawl.py 中使用 Firecrawl 工具所必需,请在 Firecrawl 上注册并获取 API 密钥。
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINT通过 uns-mcp 服务器创建 Astradb 连接器所必需,请参阅文档
AZURE_CONNECTION_STRING通过 uns-mcp 服务器创建 Azure 连接器的必需选项 1,请参阅文档
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEY通过 uns-mcp 服务器创建 Azure 连接器的必需选项 2,请参阅文档
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKEN通过 uns-mcp 服务器创建 Azure 连接器的必需选项 3,请参阅文档
NEO4J_PASSWORD通过 uns-mcp 服务器创建 Neo4j 连接器所必需,请参阅文档
MONGO_DB_CONNECTION_STRING通过 uns-mcp 服务器创建 Mongodb 连接器所必需,请参阅文档
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY一个字符串值。原始服务器帐户密钥(遵循文档)位于 json 文件中,在终端中运行 base64 < /path/to/google_service_account_key.json 以获取字符串值
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRET通过 uns-mcp 服务器创建 Databricks volume/delta table 连接器所必需,请参阅文档此处
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_ID通过 uns-mcp 服务器创建 One Drive 连接器所必需,请参阅文档
PINECONE_API_KEY通过 uns-mcp 服务器创建 Pinecone 向量数据库连接器所必需,请参阅文档
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEY通过 uns-mcp 服务器创建 salesforce 数据源连接器所必需,请参阅文档
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_ID通过 uns-mcp 服务器创建 One Drive 连接器所必需,请参阅文档
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 函数是为了保持一致性,但 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 服务器协议

配置 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 服务器。运行以下命令以启动调试 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 - 需要在上下文中包含其正在更新的工作流的配置,可以通过用户提供或调用 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