使用说明
项目简介
Paperless-MCP Server 是一个 MCP (Model Context Protocol) 服务器,它充当大型语言模型 (LLM) 客户端与 Paperless-ngx 文档管理系统之间的桥梁。通过 Paperless-MCP Server,LLM 客户端可以安全、标准地访问和操作 Paperless-ngx 中存储的文档资源,实现文档的检索、内容获取等功能,从而增强 LLM 应用的上下文感知能力。
主要功能点
- 文档资源访问: 允许 LLM 客户端通过 MCP 协议检索和访问 Paperless-ngx 文档管理系统中存储的文档资源。
- 文档搜索: 支持基于关键词在 Paperless-ngx 文档库中进行搜索,以便 LLM 客户端快速找到相关文档。
- 元数据获取: 提供访问文档元数据(如标签、类型、对应方等)的能力,丰富 LLM 应用的上下文信息。
- 标准 MCP 接口: 遵循 MCP 协议标准,易于集成到任何支持 MCP 协议的 LLM 客户端。
安装步骤
-
克隆仓库:
git clone https://github.com/PDangelmaier/Paperless-MCP-Server.git cd Paperless-MCP-Server -
安装 Python 依赖: 确保你的系统已安装 Python 和 pip。建议使用 Python 3.8 或更高版本。
pip install -r requirements.txt -
配置环境变量: 设置 Paperless-ngx API 的访问信息,你需要配置以下环境变量:
- 'PAPERLESS_BASE_URL': 你的 Paperless-ngx 实例的 API 基础 URL,例如 'http://your-paperless-ngx-instance/'。
- 'PAPERLESS_TOKEN': 用于 API 访问的 Paperless-ngx API 令牌。
-
运行服务器:
python server.py服务器默认会在 'stdio' 上监听 MCP 请求。你可以通过设置 'LOG_LEVEL' 环境变量来调整日志级别,例如 'export LOG_LEVEL=DEBUG'。
服务器配置 (MCP 客户端)
为了让 MCP 客户端连接到 Paperless-MCP 服务器,你需要提供以下配置信息。请将以下 JSON 配置添加到你的 MCP 客户端的服务器配置中:
{ "serverName": "paperless-mcp", "command": "python", "args": ["server.py"], "transport": "stdio", "config": { "base_url": "<请替换为你的Paperless-ngx API URL>", "token": "<请替换为你的Paperless-ngx API 令牌>" <!-- 可选: --> <!-- "timeout": 30.0 --> <!-- 请求 Paperless-ngx API 的超时时间,单位秒,默认为 30 秒 --> } }
配置参数说明:
- 'serverName': 服务器名称,可以自定义,例如 "paperless-mcp"。
- 'command': 启动服务器的命令,这里是 'python'。
- 'args': 启动命令的参数,指定运行 'server.py' 文件。
- 'transport': 指定 MCP 客户端与服务器通信的传输协议,这里使用 'stdio' (标准输入输出)。
- 'config': 服务器的配置信息,是一个 JSON 对象,包含以下字段:
- 'base_url': (必填) Paperless-ngx API 的基础 URL。请务必替换 '<请替换为你的Paperless-ngx API URL>' 为你实际的 Paperless-ngx API 地址。
- 'token': (必填) Paperless-ngx API 的访问令牌。请务必替换 '<请替换为你的Paperless-ngx API 令牌>' 为你实际的 API 令牌。
- 'timeout': (可选) 请求 Paperless-ngx API 的超时时间,单位为秒,默认为 30 秒。你可以根据网络状况调整此值。
注意: 请确保在 MCP 客户端配置中正确填写 'base_url' 和 'token',以便 Paperless-MCP 服务器能够成功连接到你的 Paperless-ngx 实例。
基本使用方法
配置完成后,MCP 客户端可以通过发送符合 MCP 协议的 JSON-RPC 请求与 Paperless-MCP 服务器交互。以下是一些基本的操作方法示例 (在 MCP 客户端中调用):
-
列出文档: 调用 'list_documents' 方法,可以分页列出 Paperless-ngx 中的文档。
{ "jsonrpc": "2.0", "method": "list_documents", "params": { "page": 1, "page_size": 10 }, "id": "list-docs-1" } -
获取文档详情: 调用 'get_document' 方法,根据文档 ID 获取指定文档的详细信息。
{ "jsonrpc": "2.0", "method": "get_document", "params": { "id": "123" // 替换为实际的文档 ID }, "id": "get-doc-1" } -
搜索文档: 调用 'search_documents' 方法,根据关键词搜索文档。
{ "jsonrpc": "2.0", "method": "search_documents", "params": { "query": "invoice" // 替换为你的搜索关键词 }, "id": "search-docs-1" } -
列出对应方、标签、文档类型: 可以使用 'list_correspondents', 'list_tags', 'list_document_types' 方法分别获取 Paperless-ngx 中的对应方、标签和文档类型列表。
更多详细的 API 方法和参数,请参考 'server.py' 文件中 'PaperlessMCPService' 类的 'handle_request' 方法的实现。
信息
分类
数据库与文件