Unstructured API MCP 服务器

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

  • by liuchongchong1995
  • 本地部署
  • 更新于
在 GitHub 查看 liuchongchong1995/uns-mcp

使用说明

非结构化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 服务器当前支持,请查看非结构化平台支持的源连接器的完整列表 这里 目的地列表 这里。我们计划添加更多!

源 目标
S3 S3
Azure 编织
谷歌云端硬盘 松果
OneDrive AstraDB
Salesforce MongoDB
Sharepoint Neo4j
Rancher卷
Databricks卷增量表

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

凭证名称 描述
ANTHROPIC_API_KEY 需要运行 minimal_client 与我们的服务器进行交互。
AWS_KEY, AWS_SECRET 需要通过以下方式创建S3连接器 uns-mcp 服务器,请参阅 文档 和 这里
WEAVIATE_CLOUD_API_KEY 需要创建Weaviate矢量db连接器,请参阅 文档
FIRECRAWL_API_KEY 需要在中使用Firecrawl工具 external/firecrawl.py,注册 火爬 并获取API密钥。
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINT 需要通过以下方式创建Astradb连接器 uns-mcp 服务器,请参阅 文档
AZURE_CONNECTION_STRING 通过创建Azure连接器所需的选项1 uns-mcp 服务器,请参阅 文档
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEY 通过创建Azure连接器所需的选项2 uns-mcp 服务器,请参阅 文档
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKEN 通过创建Azure连接器所需的选项3 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 需要通过以下方式创建copula卷/增量表连接器 uns-mcp 服务器,请参阅 文档 和 这里
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_ID 需要通过以下方式创建One Drive连接器 uns-mcp 服务器,请参阅 文档
PINECONE_API_KEY 需要通过以下方式创建Pinecone矢量DB连接器 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源

火爬 是一个网络抓取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 函数是为了保持一致性而提供的,但Firecrawl API当前不支持该函数。

注:A FIRECRAWL_API_KEY 必须设置环境变量才能使用这些函数。

安装和配置

本指南提供了使用Python 3.12和 uv 工具。

先决条件

  • 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 对于可配置的环境变量。

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

Using Editable Package Installation Install as an editable package:
uvx pip install -e .

更新您的Claude桌面配置:

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

备注:记得指向安装包的环境中的uvx可执行文件

Using SSE Server Protocol

注意: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 首先在客户端,然后是服务器。

Using Stdio Server Protocol

配置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密钥作为env var.包含在其中。转到 tools,您可以测试添加到MCP服务器的功能。

mcp dev uns_mcp/server.py

如果您需要将请求调用参数记录到 UnstructuredClient,设置环境变量 DEBUG_API_REQUESTS=false. 日志存储在一个文件中,格式为 unstructured-client-{date}.log,可以检查这些参数以调试请求调用参数 UnstructuredClient 功能。

向最小客户端添加终端访问权限

我们将使用 @wonderwhy er/桌面命令 以向最小客户端添加终端访问。它建立在MCP文件系统服务器上。小心,因为客户(也是法学硕士)现在 可以访问私人文件。

执行以下命令安装软件包:

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 applier,它完全取代了工作流配置。

更改日志.md

任何新开发的功能/修复/增强都将添加到CHANGELOG.md.0.x.dev预发布格式中,然后再升级到稳定版本。

故障排除

  • 如果您遇到以下问题 Error: spawn <command> ENOENT 意思 <command> 在您的PATH中未安装或不可见:
    • 确保安装它并将其添加到PATH中。
    • 或在中提供命令的绝对路径 command 配置的字段。例如,替换 python 随着 /opt/miniconda3/bin/python