这是一个用于与 Paperless-NGX API 服务器交互的 MCP(模型上下文协议)服务器。此服务器提供了管理 Paperless-NGX 实例中的文档、标签、联系人和文档类型的工具。
要通过 Smithery 自动安装 Paperless NGX MCP 服务器到 Claude Desktop:
npx -y @smithery/cli install @baruchiro/paperless-mcp --client claude
在你的 MCP 配置文件中添加以下内容:
// STDIO 模式(推荐用于本地或 CLI 使用)
"paperless": {
"command": "npx",
"args": [
"-y",
"@baruchiro/paperless-mcp@latest",
],
"env": {
"PAPERLESS_URL": "http://your-paperless-instance:8000",
"PAPERLESS_API_KEY": "your-api-token",
"PAPERLESS_PUBLIC_URL": "https://your-public-domain.com"
}
}
// HTTP 模式(推荐用于 Docker 或远程使用)
"paperless": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/baruchiro/paperless-mcp:latest",
],
"env": {
"PAPERLESS_URL": "http://your-paperless-instance:8000",
"PAPERLESS_API_KEY": "your-api-token",
"PAPERLESS_PUBLIC_URL": "https://your-public-domain.com"
}
}
获取你的 API 令牌:
替换 MCP 配置中的占位符:
http://your-paperless-instance:8000 替换为你的 Paperless-NGX URLyour-api-token 替换为你刚刚生成的令牌https://your-public-domain.com 替换为你的公共 Paperless-NGX URL(可选,默认回退到 PAPERLESS_URL)就这样!现在你可以让 Claude 帮助你管理 Paperless-NGX 文档了。
这里有一些你可以让 Claude 做的事情:
获取所有文档的分页列表。
参数:
list_documents({
page: 1,
page_size: 25
})
通过 ID 获取特定文档。
参数:
get_document({
id: 123
})
全文搜索文档。
参数:
search_documents({
query: "发票 2024"
})
通过 ID 下载文档文件。
参数:
download_document({
id: 123,
original: false
})
对多个文档执行批量操作。
参数:
示例:
// 给多个文档添加标签
bulk_edit_documents({
documents: [1, 2, 3],
method: "add_tag",
tag: 5
})
// 设置联系人和文档类型
bulk_edit_documents({
documents: [4, 5],
method: "set_correspondent",
correspondent: 2
})
// 合并文档
bulk_edit_documents({
documents: [6, 7, 8],
method: "merge",
metadata_document_id: 6,
delete_originals: true
})
// 将文档拆分为部分
bulk_edit_documents({
documents: [9],
method: "split",
pages: "[1-2,3-4,5]"
})
// 一次修改多个标签
bulk_edit_documents({
documents: [10, 11],
method: "modify_tags",
add_tags: [1, 2],
remove_tags: [3, 4]
})
// 修改自定义字段
bulk_edit_documents({
documents: [12, 13],
method: "modify_custom_fields",
add_custom_fields: {
"2": "שנה"
}
})
上传新文档到 Paperless-NGX。
参数:
post_document({
file: "base64_encoded_content",
filename: "invoice.pdf",
title: "一月发票",
created: "2024-01-19",
correspondent: 1,
document_type: 2,
tags: [1, 3],
archive_serial_number: "2024-001",
custom_fields: [1, 2]
})
获取所有标签。
list_tags()
创建一个新的标签。
参数:
create_tag({
name: "发票",
color: "#ff0000",
match: "invoice",
matching_algorithm: 5
})
获取所有联系人。
list_correspondents()
创建一个新的联系人。
参数:
create_correspondent({
name: "ACME Corp",
match: "ACME",
matching_algorithm: 5
})
获取所有文档类型。
list_document_types()
创建一个新的文档类型。
参数:
create_document_type({
name: "发票",
match: "发票总金额应付款项",
matching_algorithm: 1
})
获取所有自定义字段。
list_custom_fields()
通过 ID 获取特定自定义字段。
参数:
get_custom_field({
id: 1
})
创建一个新的自定义字段。
参数:
create_custom_field({
name: "发票编号",
data_type: "string"
})
更新现有的自定义字段。
参数:
update_custom_field({
id: 1,
name: "更新后的发票编号",
data_type: "string"
})
删除自定义字段。
参数:
delete_custom_field({
id: 1
})
对多个自定义字段执行批量操作。
参数:
bulk_edit_custom_fields({
custom_fields: [1, 2, 3],
operation: "delete"
})
如果出现以下情况,服务器会显示清晰的错误信息:
想要贡献或修改服务器?你需要知道以下几点:
npm install
node server.js http://localhost:8000 your-test-token
该服务器构建于:
此 MCP 服务器实现了 Paperless-NGX REST API 的端点。有关底层 API 的更多细节,请参阅 官方文档。
MCP 服务器可以以两种模式运行:
这是默认模式。服务器通过 stdio 通信,适合 CLI 和直接集成。
npm run start -- <baseUrl> <token>
要作为 HTTP 服务运行服务器,请使用 --http 标志。您还可以指定端口 --port(默认:3000)。此模式需要安装 Express(它被包含为依赖项)。
npm run start -- <baseUrl> <token> --http --port 3000
POST /mcp 可用。/mcp 的 GET 和 DELETE 请求将返回 405 方法不允许。本项目是 nloui/paperless-mcp 的分支。感谢原作者的工作。贡献和改进可能会返回上游。
要在 VS Code 中调试 MCP 服务器,请使用以下启动配置:
{
"type": "node",
"request": "launch",
"name": "调试 Paperless MCP (HTTP, ts-node ESM)",
"program": "${workspaceFolder}/node_modules/ts-node/dist/bin.js",
"args": [
"--esm",
"src/index.ts",
"--http",
"--baseUrl",
"http://your-paperless-instance:8000",
"--token",
"your-api-token",
"--port",
"3002"
],
"env": {
"NODE_OPTIONS": "--loader ts-node/esm",
},
"console": "integratedTerminal",
"skipFiles": [
"<node_internals>/**"
]
}
重要: 在调试之前,请取消注释 src/index.ts 中的以下行(大约第 175 行):
// await new Promise((resolve) => setTimeout(resolve, 1000000));
这可以防止服务器立即退出,并允许你设置断点和调试代码。