内容
# 非结构化 API MCP 服务器用于研究论文数据处理
通过利用非结构化 API,该服务器便于访问一组强大的工具,这些工具可以从研究论文中提取有意义的信息,然后可以用于微调语言模型(LLM),以减少研究人员的文献回顾时间。
### 在这里查看博客:
- 有关黑客马拉松、项目的详细说明以及跟进,请查看我在 Dev.to 上的博客文章:[Unstructured Model Context Protocol Hackathon.](https://dev.to/heetvekariya/unstructured-model-context-protocol-hackathon-26n7)
## 目录:
1. [设置](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#setup)
2. [要求](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#requirements)
3. [项目流程](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#project-flow)
4. [可用工具](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#available-tools)
5. [跟随步骤](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#follow-along)
6. [Claude 桌面集成](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#claude-desktop-integration)
7. [调试工具](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#debugging-tools)
8. [本地运行最小客户端,访问本地 MCP 服务器通过 HTTP + SSE](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#running-locally-minimal-client-accessing-local-the-mcp-server-over-http--sse)
## 设置
安装依赖:
- `uv add "mcp[cli]"`
- `uv pip install --upgrade unstructured-client python-dotenv`
或者使用 `uv sync`。
## 要求
在开始使用 **UNS_MCP** 项目之前,请确保您已完成以下设置:
1. **UNSTRUCTURED_API_KEY**
- 从 [Unstructured platform](https://unstructured.io/) 获取您的 API 密钥,以访问他们的文档处理 API。
2. **GOOGLEDRIVE_SERVICE_ACCOUNT_KEY**
- 设置 Google Cloud 项目并创建服务帐户,以便访问 Google Drive 读取 PDF。请查看设置过程 [这里](https://docs.unstructured.io/api-reference/workflow/sources/google-drive)。
- 保存您的服务帐户的 JSON 凭据,并使用它来设置 **GOOGLEDRIVE_SERVICE_ACCOUNT_KEY**。
3. **MONGO_DB_CONNECTION_STRING**
- 设置一个 MongoDB 数据库(云),并获取连接字符串以连接到数据库。请查看设置过程 [这里](https://docs.unstructured.io/api-reference/workflow/destinations/mongodb)。
4. **.env.template**
- `.env.template` 文件包含所有必需的环境变量。将此文件复制到 `.env` 并为上述提到的密钥设置必要的值。
示例 `.env` 文件:
```bash
UNSTRUCTURED_API_KEY="<key-here>"
MONGO_DB_CONNECTION_STRING="<CONNECTION_STRING>"
GOOGLEDRIVE_SERVICE_ACCOUNT_KEY="<converted string>"
```
## 项目流程
1. 用户查询 MCP 客户端
2. Claude 与 `UNS_MCP` 服务器交互
- Claude 将用户的查询转发到名为 `UNS_MCP` 的自定义 MCP 服务器。
3. MCP 工具执行非结构化 API
- `UNS_MCP` 与非结构化 API 交互,以处理研究论文 PDF,提取相关信息,并将其转换为结构化的 JSON 数据。
4. 结构化数据(JSON)输出存储在目标源中
- 从非结构化 API 得到的结果被转换为 JSON 格式,然后可以进一步用于微调 LLM,帮助研究人员快速找到相关信息,而无需手动阅读整篇论文。


## 可用工具
| 工具 | 描述 |
|------|-------------|
| `list_sources` | 列出来自非结构化 API 的可用源。 |
| `get_source_info` | 获取特定源连接器的详细信息。 |
| `create_gdrive_source` | 创建一个 Google Drive 源连接器。 |
| `update_gdrive_source` | 通过参数更新现有的 Google 源连接器。 |
| `delete_gdrive_source` | 通过源 ID 删除源连接器。 |
| `list_destinations` | 列出来自非结构化 API 的可用目标。 |
| `get_destination_info` | 获取特定目标连接器的详细信息。目前,我们有 s3/weaviate/astra/neo4j/mongo DB(更多即将推出!) |
| `create_mongodb_destination` | 通过参数创建一个 MongoDB 目标连接器。 |
| `update_mongodb_destination` | 通过目标 ID 更新现有的 MongoDB 目标连接器。 |
| `delete_mongodb_destination` | 通过目标 ID 删除 MongoDB 目标连接器。 |
| `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 删除特定作业。 |
## 跟随步骤
### 1. **设置所需连接器**
#### Google Drive 源连接器:
- **创建 Google Drive 源连接器**,将您的服务帐户与 Google Drive 连接并检索 PDF。
- **测试连接**以确保可访问性。
#### MongoDB 目标连接器:
- **设置 MongoDB 目标连接器**以存储处理后的数据。
- **测试连接**以确保可访问性。
---
### 2. **开发工作流**
1. **定义连接器**:设置 **Google Drive** 源和 **MongoDB** 目标连接器。
2. **分区**:使用 **自动分区** 以优化文档拆分。
3. **分块**:应用 **按页分块** 以便于管理的文本段落。
4. **丰富**:使用 **NER** 提取实体,并对任何表格进行 **表格丰富**。
5. **嵌入**:将文本转换为嵌入以进行查询或分析。
注意:**调整流程**:根据需要调整任何步骤(分区、分块、丰富、嵌入)。
---
### 3. **设置 Claude 桌面**
1. 安装 **Claude Desktop** 并按照 [下面](https://github.com/HeetVekariya/MCPHackathon?tab=readme-ov-file#claude-desktop-integration) 的步骤将其与 UNS_MCP 服务器集成。
2. **重启 Claude** 以连接到 MCP 服务器并确保工作流功能正常。
---
### 4. **查询并运行工作流**
- 使用 **Claude** 与系统交互并执行查询以列出、创建、编辑、删除和运行工作流。您可以执行许多此类任务,请查看上面提供的 `可用工具`。
### 5. **结果**



## Claude 桌面集成
要在 Claude Desktop 中安装:
1. 通过运行以下命令转到 `claude_desktop_config.json`。
```bash
# 对于 macOS 或 Linux:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
# 对于 Windows:
code $env:AppData\Claude\claude_desktop_config.json
```
2. 在该文件中添加:
```bash
{
"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
}
}
}
```
3. 重启 Claude Desktop。
4. 从 Claude Desktop 中看到的示例问题。
- 当您查询目标连接器列表时,您将看到 `No destinations found`。检查您在 `.env` 或配置 JSON 中的 API 密钥,它需要是您在 `https://platform.unstructured.io/app/account/api-keys` 中的个人密钥。
## 调试工具
Anthropic 提供了 `MCP Inspector` 工具来调试/测试您的 MCP 服务器。运行以下命令以启动调试 UI。在那里,您将能够在左侧面板中添加环境变量(指向您的本地环境)。在环境变量中包含您的个人 API 密钥。转到 `tools`,您可以测试您添加到 MCP 服务器的功能。
```
mcp dev uns_mcp/server.py
```
如果您需要记录请求调用参数到 `UnstructuredClient`,请设置环境变量 `DEBUG_API_REQUESTS=false`。
日志存储在格式为 `unstructured-client-{date}.log` 的文件中,可以检查以调试请求调用参数到 `UnstructuredClient` 函数。
## 本地运行最小客户端,访问本地 MCP 服务器通过 HTTP + SSE
这里的主要区别是,在开发过程中更容易在服务器端设置断点——客户端和服务器是解耦的。
```
# 在一个终端中,运行服务器:
uv run python uns_mcp/server.py --host 127.0.0.1 --port 8080
或者
make sse-server
# 在另一个终端中,运行客户端:
uv run python minimal_client/client.py "http://127.0.0.1:8080/sse"
或者
make sse-client
```
提示:先 `ctrl+c` 退出客户端,然后再退出服务器。否则服务器似乎会挂起。
连接信息
猜你喜欢
暂无推荐服务器