Token导航 LogoToken导航TokenDH.com
Pdf Rag MCP logo
文档知识stdio官方级别未说明来源级核验

Pdf Rag MCP

MCP Server

一个基于FastAPI后端的PDF检索增强生成(RAG)知识库处理系统,支持LanceDB向量搜索、SQLite元数据管理和Chakra UI仪表盘,适用于文档处理和知识管理场景。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
PDF处理检索增强生成PythonClaudeClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

tekgnosis-net

提供方

tekgnosis-net

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -m venv .venv

详细介绍

PDF RAG MCP服务器

使用队列感知的FastAPI后端、LanceDB矢量搜索、SQLite元数据和Chakra UI仪表板将大量PDF处理到检索增强生成(RAG)知识库中。模型上下文协议(MCP)层将相同的语料库呈现给代理和IDE,因此搜索结果在客户端之间保持一致。

特性

  • 可配置的摄取管道,带有PyMuPDF或Docling解析和本地/OpenAI嵌入。
  • 具有进度回调、SHA-256重复数据删除和元数据丰富功能的有界工作队列。
  • REST、MCP和观察者共享的线程安全SQLite markdown存储库和LanceDB向量存储。
  • 递归目录观察器,用于下一步的删除和进程摄取 /pdfs.
  • 提供REST端点、MCP传输和静态前端资产的统一FastAPI服务器。
  • React+Chakra UI仪表板,用于队列监控和语义搜索。

建筑

src/
  backend/
    api.py           # REST + MCP endpoints and job manager
    processor.py     # Queue, workers, parsing + embedding pipeline
    config.py        # Environment-driven settings
    storage/         # SQLite MarkdownRepository + LanceDB VectorStore
    parsers/         # PyMuPDF and Docling adapters
    embeddings/      # EmbeddingManager (local / OpenAI)
  frontend/
    src/             # React + Chakra UI SPA
    package.json

快速启动

  1. 安装必备组件 –Python 3.11+、Node.js 20+、Docker(可选)、用于GPU摄取的NVIDIA容器工具包。
  2. Bootstrap后端
   python -m venv .venv
   source .venv/bin/activate
   pip install -r requirements.txt
  1. 构建前端
   cd src/frontend
   npm install
   npm run build
  1. 在本地运行
   uvicorn src.backend.api:app --host 0.0.0.0 --port 8000 --reload

对于热重载UI开发,请运行 npm run devsrc/frontend (服务http://localhost:5173).否则,FastAPI将服务于 frontend/dist 直接捆绑。

配置

所有设置都是环境驱动的(请参见 .env.sample).

变量默认值用途
PDF_PARSERpymupdf解析器后端(pymupdfdocling).
EMBEDDING_BACKENDlocallocal 句子变换器或 openai 远程嵌入。
SENTENCE_TRANSFORMER_MODELsentence-transformers/all-MiniLM-L6-v2本地嵌入模型名称。
EMBEDDING_DEVICEcpucpucuda;当 cuda,CUDA车轮在运行时安装。
OPENAI_BASE_URL / OPENAI_MODEL / OPENAI_API_KEY使用远程嵌入时需要。
DATABASE_URLsqlite:///data/markdown.dbSQLite元数据存储。
VECTOR_STORE_PATHdata/vector_storeLanceDB目录。
DATA_DIRdata运行时工件的基本路径。
FRONTEND_DIST_PATHfrontend/distFastAPI提供的静态资产。
PROCESS_WORKERS4工人线程数。
PROCESS_QUEUE_MAXSIZE100背压前排队的最大任务数。
WATCH_ENABLEDtrue切换目录监视器。
WATCH_DIR/pdfs递归扫描根文件夹以查找PDF。
WATCH_POLL_INTERVAL10扫描之间的秒数。
MAX_PROCESS_ATTEMPTS10在文件被列入黑名单之前失败。

存储凭据,例如 OPENAI_API_KEY.env (被git忽略)或平台秘密存储。

处理管道

  1. 排队——上传、观察者发现和同步请求成为 ProcessingTasks在一个有界的队列中。
  2. 工作池——可配置的守护进程线程将任务排成队列,发出生命周期回调,并隔离故障。
  3. 元数据丰富——文件系统统计数据与调用者提供的元数据合并。
  4. 解析-PyMuPDF或Docling生成markdown。
  5. 重复数据消除-SHA-256哈希查找跳过重新摄取相同内容。
  6. 持久性-标记保存到SQLite;嵌入块被分块并添加到具有余弦索引的LanceDB中。

REST端点、MCP工具和观察器都流经此管道,以实现一致的行为。

目录监视器

  • 默认启用(WATCH_ENABLED=true).
  • 递归扫描 WATCH_DIR 为了 *.pdf 文件夹。
  • 在多次故障后跳过已存储或列入黑名单的路径。
  • 将任务添加到共享队列中,以便观察程序处理尊重背压并发出进度事件。
  • 通过设置禁用 WATCH_ENABLED=false 或者通过环境变量调整轮询间隔/重试阈值。

REST+MCP接口

路径方法描述
/api/processPOST上传PDF(多部分)。返回作业描述符。
/api/process/statusGET队列,正在进行、已完成和失败的作业摘要。
/api/searchGET语义搜索(?query=...&top_k=5).
/api/markdownGET通过以下方式获取存储的降价 document_idtitle.
/.well-known/mcp/serverGETMCP发现文档。
/mcp/tools/query_pdfsPOSTMCP搜索工具({"query": "...", "top_k": 5}).
/mcp/tools/fetch_markdownPOSTMCP工具用于检索降价({"document_id": 1}{ "title": "..." }).

Claude桌面配置:

{
  "mcpServers": {
    "pdf-rag": {
      "type": "http",
      "url": "http://localhost:8000"
    }
  }
}

前端仪表板

  • npm run dev –Vite开发服务器,热重载。
  • npm run build –FastAPI提供的生产捆绑包。
  • npm run ci:build –TypeScript类型检查+构建(匹配CI)。

UI公开了一个处理队列选项卡(实时进度、重试、失败)和一个搜索选项卡,用于具有元数据预览的语义查询。

Docker工作流程

# Pull published image (recommended)
docker run --rm -p 8000:8000 ghcr.io/tekgnosis-net/pdf-rag-mcp:latest

# Build locally
docker build -t pdf-rag-mcp .
docker run --rm -p 8000:8000 pdf-rag-mcp

# Docker Compose (uses GHCR image by default)
docker compose up --build

GPU加速:

docker run --rm -p 8000:8000 --gpus all \
  -e EMBEDDING_DEVICE=cuda \
  ghcr.io/tekgnosis-net/pdf-rag-mcp:latest

安装 ./data/app/data 用于持久SQLite/LanceDB存储,并将主机文件夹映射到 /app/data/pdfs 给观察者喂食。

开发工作流程和CI奇偶校验

在推送之前,运行GitHub Actions强制执行的相同检查:

.venv/bin/ruff check .
.venv/bin/pytest -q
(cd src/frontend && npm ci && npm run ci:build)
docker build -t pdf-rag-mcp-local .

这些步骤反映了 Test, Build and Publish 工作流(lint、pytest、前端类型检查/构建、Docker构建)。

故障排除

症状建议的补救措施
sentence_transformers 缺少安装可选依赖项或切换到 EMBEDDING_BACKEND=openai.
Watcher忽略文件确认PDF文件在 WATCH_DIR,未列入黑名单,队列未满。
出现重复条目确保源标记不同;重复数据消除对解析的内容哈希进行操作。
OpenAI错误验证 OPENAI_BASE_URL, OPENAI_MODEL,以及 OPENAI_API_KEY 价值观。
空搜索结果检查嵌入创建日志,并确认LanceDB目录可写。

许可证

麻省理工学院许可证©2025项目贡献者

目录标签

目录标签

PDF处理检索增强生成PythonClaude本地部署知识库管理向量搜索文档解析

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP