Unstructured API MCP Server

Official

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Used for loading environment variables from a .env file, specifically for storing and accessing the Unstructured API key

  • Serves as the implementation language for the MCP server, with specific dependencies including unstructured-client for API interaction

非结构化 API MCP 服务器

用于与非结构化 API 交互的 MCP 服务器实现。该服务器提供列出源和工作流的工具。

可用工具

工具描述
list_sources列出非结构化 API 中可用的来源。
get_source_info获取有关特定源连接器的详细信息。
create_source_connector创建源连接器。)
update_source_connector通过参数更新现有的源连接器。
delete_source_connector通过源 ID 删除源连接器。
list_destinations列出非结构化 API 中可用的目的地。
get_destination_info获取有关特定目标连接器的详细信息
create_destination_connector通过参数创建目标连接器。
update_destination_connector通过目标 ID 更新现有的目标连接器。
delete_destination_connector根据目标 ID 删除目标连接器。
list_workflows列出来自非结构化 API 的工作流程。
get_workflow_info获取有关特定工作流程的详细信息。
create_workflow创建具有源、目标 ID 等的新工作流。
run_workflow运行具有工作流 ID 的特定工作流
update_workflow通过参数更新现有的工作流程。
delete_workflow根据 ID 删除特定工作流。
list_jobs列出非结构化 API 中特定工作流的作业。
get_job_info通过作业 ID 获取特定作业的详细信息。
cancel_job根据 ID 删除特定作业。

以下是UNS-MCP服务器当前支持的连接器列表,请点击此处查看非结构化平台支持的源连接器完整列表,并点击此处查看目标连接器列表。我们计划添加更多连接器!

来源目的地
S3S3
Azure威维特
Google 云端硬盘松果
OneDrive阿斯特拉数据库
SalesforceMongoDB
SharePointNeo4j
Databricks 卷
Databricks 卷增量表

要使用创建/更新/删除连接器的工具,必须在 .env 文件中定义该连接器的凭据。以下是我们支持的连接器的credentials列表:

凭证名称描述
ANTHROPIC_API_KEY需要运行minimal_client来与我们的服务器交互。
AWS_KEYAWS_SECRET需要通过uns-mcp服务器创建 S3 连接器,请参阅文档此处了解如何操作
WEAVIATE_CLOUD_API_KEY需要创建 Weaviate 向量数据库连接器,请参阅文档中的方法
FIRECRAWL_API_KEY需要在external/firecrawl.py中使用 Firecrawl 工具,在Firecrawl上注册并获取 API 密钥。
ASTRA_DB_APPLICATION_TOKEN ASTRA_DB_API_ENDPOINT需要通过uns-mcp服务器创建 Astradb 连接器,请参阅文档中的方法
AZURE_CONNECTION_STRING需要选项 1 通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法
AZURE_ACCOUNT_NAME + AZURE_ACCOUNT_KEY需要选项 2 通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法
AZURE_ACCOUNT_NAME + AZURE_SAS_TOKEN需要选项 3 来通过uns-mcp服务器创建 Azure 连接器,请参阅文档中的方法
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_IDDATABRICKS_CLIENT_SECRET需要通过uns-mcp服务器创建 Databricks 卷/增量表连接器,请参阅文档此处了解如何操作
ONEDRIVE_CLIENT_IDONEDRIVE_CLIENT_CREDONEDRIVE_TENANT_ID需要通过uns-mcp服务器创建 One Drive 连接器,请参阅文档中的方法
PINECONE_API_KEY需要通过uns-mcp服务器创建 Pinecone 矢量 DB 连接器,请参阅文档中的方法
SALESFORCE_CONSUMER_KEYSALESFORCE_PRIVATE_KEY需要通过uns-mcp服务器创建 salesforce 源连接器,请参阅文档中的方法
SHAREPOINT_CLIENT_IDSHAREPOINT_CLIENT_CREDSHAREPOINT_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是一个 Web 爬取 API,它在我们的 MCP 中提供两项主要功能:

  1. HTML 内容检索:使用invoke_firecrawl_crawlhtml启动抓取作业并使用check_crawlhtml_status进行监控
  2. LLM 优化文本生成:使用invoke_firecrawl_llmtxt生成文本,使用check_llmtxt_status检索结果

Firecrawl 的工作原理:

Web爬取过程:

  • 从指定的 URL 开始并分析它以识别链接
  • 如果可用,则使用站点地图;否则,遵循网站上的链接
  • 递归遍历每个链接以发现所有子页面
  • 收集每个访问页面的内容,处理 JavaScript 渲染和速率限制
  • 如果需要,可以使用cancel_crawlhtml_job取消作业
  • 如果您需要将所有信息提取到原始 HTML 中,请使用此功能,Unstructured 的工作流程可以很好地清理它:微笑:

LLM 文本生成:

  • 爬取完成后,从爬取的页面中提取干净、有意义的文本内容
  • 生成专门针对大型语言模型格式化的优化文本格式
  • 结果自动上传到指定的 S3 位置
  • 注意:LLM 文本生成作业一旦启动便无法取消。cancel_llmtxt_job 函数是为了保持一致性而提供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 桌面

为了与 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 密钥设置为环境变量。在根目录中创建一个 .env 文件,其中包含以下内容:
    UNSTRUCTURED_API_KEY="YOUR_KEY"
    请参阅.env.template了解可配置的环境变量。

您现在可以使用以下方法之一运行服务器:

uvx pip install -e .

更新您的 Claude 桌面配置:

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

注意:请记住指向安装包的环境中 uvx 可执行文件

注意: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 ,然后在服务器上使用。

配置 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" # or make sse-client-terminal

使用工具子集

如果您的客户端仅支持使用部分工具,则您应该注意以下事项:

  • update_workflow工具必须与create_workflow工具一起在上下文中加载,因为它包含有关如何创建和配置自定义节点的详细描述。

已知问题

  • update_workflow - 需要在上下文中具有正在更新的工作流的配置,可以通过用户提供或调用get_workflow_info工具来实现,因为该工具不能用作patch应用程序,它完全取代了工作流配置。

变更日志.md

任何新开发的功能/修复/增强功能都将添加到 CHANGELOG.md。在我们发布稳定版本之前,最好使用 0.xx-dev 预发布格式。

故障排除

  • 如果您遇到Error: spawn <command> ENOENT则表示<command>未安装或未在您的 PATH 中可见:
    • 确保安装它并将其添加到您的 PATH。
    • 或者在配置的command字段中提供命令的绝对路径。例如,将python替换为/opt/miniconda3/bin/python
ID: 56f7310rbq