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 平台支持的完整数据源连接器列表此处和目标列表此处。我们计划添加更多!
| 数据源 | 目标 |
|---|---|
| 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 | 通过 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 | 通过 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 中提供两个主要功能:
- 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函数是为了保持一致性,但 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>"
}
}
}
}
使用源代码
-
克隆仓库。
-
安装依赖项:
uv sync -
将您的 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 协议,您可以通过解耦客户端和服务器来更轻松地进行调试:
-
在一个终端中启动服务器:
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 服务器。运行以下命令以启动调试 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