Skip to main content
Glama
tycket033-tech

pdf-knowledge-mcp

README.md
# pdf-knowledge-mcp

`pdf-knowledge-mcp` 是一个面向 PDF 开发经验沉淀的本地 RAG MCP Server。它可以导入 PDF 解析、生成、渲染、文本提取、表格识别、版式分析、字体处理、OCR、PDF/A、签名、加密、性能优化等经验文档,并通过 MCP 工具提供检索和问答能力。

当前实现不依赖远程模型或外部向量数据库。文档会被切分为 chunk,使用本地 TF-IDF 向量和余弦相似度检索,并把索引持久化为 JSON 文件。后续可以在 `src/knowledge-store.ts` 中替换或扩展 embedding/provider。

## 安装与构建

```powershell
cd C:\src\pdf-knowledge-mcp
npm install
npm run build
```

## 启动

```powershell
npm start
```

该进程通过 stdio 提供 MCP 服务。

默认知识库索引路径为项目内的 `data/pdf-knowledge-index.json`。如需指定其他位置:

```powershell
$env:PDF_KNOWLEDGE_STORE_PATH = "C:\src\pdf-knowledge-mcp\data\pdf-knowledge-index.json"
npm start
```

## MCP 配置

推荐先链接成本地命令:

```powershell
cd C:\src\pdf-knowledge-mcp
npm link
```

然后添加到 Codex:

```powershell
codex mcp add pdf-knowledge -- pdf-knowledge-mcp
```

通用 MCP 客户端配置示例:

```json
{
  "mcpServers": {
    "pdf-knowledge": {
      "command": "node",
      "args": ["C:/src/pdf-knowledge-mcp/dist/index.js"],
      "env": {
        "PDF_KNOWLEDGE_STORE_PATH": "C:/src/pdf-knowledge-mcp/data/pdf-knowledge-index.json"
      }
    }
  }
}
```

## 工具

### `ingest_document`

导入 PDF 开发经验文档。支持直接传入 `content`,也支持传入 UTF-8 文本、Markdown、JSON、HTML 文件路径。

```json
{
  "title": "PDF text extraction notes",
  "source": "notes/text-extraction.md",
  "tags": ["parsing", "text", "font"],
  "content": "When extracting text from PDF content streams, ToUnicode CMaps are essential...",
  "chunkSize": 1800,
  "chunkOverlap": 200,
  "replaceExisting": true
}
```

也可以从文件导入:

```json
{
  "filePath": "C:/docs/pdf-rendering-notes.md",
  "tags": ["rendering", "performance"]
}
```

### `search_knowledge`

基于本地向量索引检索相关经验片段。

```json
{
  "query": "ToUnicode font extraction",
  "limit": 5,
  "tags": ["text"]
}
```

返回内容包括分数、文档标题、来源、标签、chunk id、命中词和 excerpt。

### `ask_pdf_expert`

先检索知识库,再基于检索结果生成带来源的 PDF 开发回答。

```json
{
  "question": "How should I handle fonts when extracting PDF text?",
  "limit": 5,
  "maxContextChars": 8000
}
```

如果没有匹配内容,工具会明确提示需要先导入相关经验文档。

## 验证

```powershell
npm test
```

Smoke test 会验证:

- 文档导入、分块和索引持久化;
- 本地向量检索和标签过滤;
- `ask_pdf_expert` 返回带来源的 RAG 回答;
- MCP Server 可以通过 stdio 响应 `initialize` 请求。

## 说明

这个服务适合作为 PDF 开发经验知识库的基础版本:它先保证本地、可追溯、可运行。未来可以扩展的方向包括真实 embedding 模型、SQLite/向量数据库、PDF/Docx 文档解析器、自动目录同步、以及与 `pdf-debug-mcp`、`pdf-specification-mcp` 的联合查询。

TDQS

A3.9/5.0

Scored across 3 tools

Disambiguation5/5

Each tool serves a distinct purpose: ingest for adding documents, search for retrieval, and ask for QA with citations. No overlapping functionality.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (ask_pdf_expert, ingest_document, search_knowledge), making their roles clear.

Tool Count4/5

Three tools is a minimal but reasonable set for a knowledge base server, covering the core operations of ingestion, retrieval, and question answering.

Completeness4/5

The server covers the essential CRUD-like operations for a RAG system (ingest, search, QA). Missing delete or update, but these are less critical for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues