无结构MCP
一个MCP服务器实现,允许与非结构化API进行交互,提供列出、创建、更新和管理文档处理的来源、目的地和工作流的工具。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"UNS_MCP": {
"args": [
"uns_mcp"
],
"command": "uvx"
}
}
}
该服务需要配置环境变量:FIRECRAWL_API_KEY、UNSTRUCTURED_API_KEY
服务介绍
Unstructured API MCP 服务器
一个用于与 Unstructured API 交互的 MCP 服务器实现。此服务器提供了列出源和工作流的工具。
设置
- 安装依赖项:
uv add "mcp[cli]"uv pip install --upgrade unstructured-client python-dotenv
或者使用 uv sync。
- 将您的 Unstructured API 密钥设置为环境变量。
- 在根目录下创建一个
.env文件,并添加包含您的密钥的一行:UNSTRUCTURED_API_KEY="YOUR_KEY"
- 在根目录下创建一个
在本地测试时,任何指向生产环境的有效密钥都可以工作。然而,为了能够从客户端(例如 Claude for Desktop)返回有效结果,您需要从 https://platform.unstructured.io/app/account/api-keys 获取的个人密钥。
运行服务器
使用 MCP CLI:
mcp run uns_mcp/server.py
或:
uv run uns_mcp/server.py
可用工具
| 工具 | 描述 |
|---|---|
list_sources |
列出 Unstructured API 中可用的源。 |
get_source_info |
获取关于特定源连接器的详细信息。 |
create_[connector]_source |
创建源连接器。目前,我们有 s3/Google Drive/Azure 连接器(更多即将推出!)。 |
update_[connector]_source |
通过参数更新现有的源连接器。 |
delete_[connector]_source |
通过源 ID 删除源连接器。 |
list_destinations |
列出 Unstructured API 中可用的目的地。 |
get_destination_info |
获取关于特定目的地连接器的详细信息。目前,我们支持 s3/Weaviate/Astra/Neo4j/MongoDB(更多即将推出!)。 |
create_[connector]_destination |
通过参数创建目的地连接器。 |
update_[connector]_destination |
通过目的地 ID 更新现有目的地连接器。 |
delete_[connector]_destination |
通过目的地 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 删除特定任务。 |
要使用创建/更新/删除连接器的工具,必须在 .env 文件中定义该特定连接器的凭据。以下是我们支持的连接器的 credentials 列表:
| Credential Name | Description |
|---|---|
ANTHROPIC_API_KEY |
required to run the minimal_client to interact with our server. |
AWS_KEY, AWS_SECRET |
required to create S3 connector via uns-mcp server, see how in documentation and here |
WEAVIATE_CLOUD_API_KEY |
required to create Weaviate vector db connector, see how in documentation |
FIRECRAWL_API_KEY |
required to use Firecrawl tools in external/firecrawl.py, sign up on Firecrawl and get an API key. |
ASTRA_DB_APPLICATION_TOKEN, ASTRA_DB_API_ENDPOINT |
required to create Astradb connector via uns-mcp server, see how in documentation |
AZURE_CONNECTION_STRING |
required option 1 to create Azure connector via uns-mcp server, see how in documentation |
AZURE_ACCOUNT_NAME+AZURE_ACCOUNT_KEY |
required option 2 to create Azure connector via uns-mcp server, see how in documentation |
AZURE_ACCOUNT_NAME+AZURE_SAS_TOKEN |
required option 3 to create Azure connector via uns-mcp server, see how in documentation |
NEO4J_PASSWORD |
required to create Neo4j connector via uns-mcp server, see how in documentation |
MONGO_DB_CONNECTION_STRING |
required to create Mongodb connector via uns-mcp server, see how in documentation |
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY |
a string value. The original server account key (follow documentation) is in json file, run `cat /path/to/google_service_account_key.json |
DATABRICKS_CLIENT_ID,DATABRICKS_CLIENT_SECRET |
required to create Databricks volume/delta table connector via uns-mcp server, see how in documentation and here |
ONEDRIVE_CLIENT_ID, ONEDRIVE_CLIENT_CRED,ONEDRIVE_TENANT_ID |
required to create One Drive connector via uns-mcp server, see how in documentation |
PINECONE_API_KEY |
required to create Pinecone vector DB connector via uns-mcp server, see how in documentation |
SALESFORCE_CONSUMER_KEY,SALESFORCE_PRIVATE_KEY |
required to create salesforce source connector via uns-mcp server, see how in documentation |
SHAREPOINT_CLIENT_ID, SHAREPOINT_CLIENT_CRED,SHAREPOINT_TENANT_ID |
required to create One Drive connector via uns-mcp server, see how in documentation |
LOG_LEVEL |
Used to set logging level for our minimal_client, e.g. set to ERROR to get everything |
CONFIRM_TOOL_USE |
set to true so that minimal_client can confirm execution before each tool call |
DEBUG_API_REQUESTS |
set to true so that uns_mcp/server.py can output request parameters for better debugging |
Firecrawl 源
Firecrawl 是一个网络爬虫 API,它在我们的 MCP 中提供了两个主要功能:
- HTML 内容检索:使用
invoke_firecrawl_crawlhtml启动爬取任务,并使用check_crawlhtml_status监控这些任务 - 针对大语言模型优化的文本生成:使用
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 环境变量。
Claude 桌面集成
要在 Claude 桌面安装:
- 前往
~/Library/Application Support/Claude/并创建一个claude_desktop_config.json文件。 - 在该文件中添加:
{
"mcpServers":
{
"UNS_MCP":
{
"command": "ABSOLUTE/PATH/TO/.local/bin/uv",
"args":
[
"--directory",
"ABSOLUTE/PATH/TO/YOUR-UNS-MCP-REPO/uns_mcp",
"run",
"server.py"
],
"env":
[
"UNSTRUCTURED_API_KEY":"<your key>"
],
"disabled": false
}
}
}
-
重启 Claude Desktop。
-
从 Claude Desktop 观察到的示例问题。
- 当你查询目的地连接器列表时,你会看到
No destinations found。请检查.env或配置 json 中的 API 密钥,它需要是你在https://platform.unstructured.io/app/account/api-keys上的个人密钥。
- 当你查询目的地连接器列表时,你会看到
调试工具
Anthropic 提供了 MCP Inspector 工具来调试/测试你的 MCP 服务器。运行以下命令启动调试界面。从那里,你可以通过左侧窗格添加环境变量(指向你的本地环境)。在那里包括你的个人 API 密钥作为环境变量。转到 tools,你可以测试添加到 MCP 服务器的功能。
mcp dev uns_mcp/server.py
如果你需要记录对 UnstructuredClient 的请求调用参数,请设置环境变量 DEBUG_API_REQUESTS=false。
日志存储在一个格式为 unstructured-client-{date}.log 的文件中,可以检查这个文件来调试对 UnstructuredClient 函数的请求调用参数。
本地运行最小客户端
uv run python minimal_client/client.py uns_mcp/server.py
或者
make local-client
用于配置客户端行为的环境变量:
LOG_LEVEL="ERROR"# 如果您希望隐藏来自LLM的输出,并为用户提供清晰的消息CONFIRM_TOOL_USE='false'如果您希望在运行工具之前禁用工具使用确认(默认为True)。请注意该选项,因为LLM可能会决定清除您账户中的所有数据或运行一些昂贵的工作流;仅用于开发目的。
本地运行最小客户端,通过HTTP + SSE访问本地MCP服务器
这里的主要区别在于,在开发过程中更容易在服务器端设置断点——客户端和服务器是解耦的。
# in one terminal, run the server:
uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
or
make sse-server
# in another terminal, run the client:
uv run python minimal_client/client.py "http://127.0.0.1:8080/sse"
or
make sse-client
提示:先用ctrl+c退出客户端,然后再退出服务器。否则服务器似乎会挂起。
CHANGELOG.md
任何新开发的功能/修复/增强都将被添加到CHANGELOG.md中。在我们升级到稳定版本之前,0.x.x-dev 预发布格式是首选。