loading…
Search for a command to run...
loading…
Indexes local and enterprise documents to provide a unified personal knowledge base for AI clients via the Model Context Protocol. It supports full-text search
Indexes local and enterprise documents to provide a unified personal knowledge base for AI clients via the Model Context Protocol. It supports full-text search across various file formats and integrates with platforms like Feishu and WeChat Work.
个人知识库 MCP 服务器 — 对本地文档建立索引,并提供一组飞书 API 工具,通过 MCP 协议供 AI 客户端访问。
支持 BM25 关键词搜索 + 向量语义搜索的混合检索(Hybrid Search),基于 RRF 融合排名,全部运行在单个 SQLite 文件中,零外部依赖。
当前项目现状、能力边界和使用建议,以 PROJECT_STATUS.md 为准。
当前代码里,
search_documents主要搜索本地已索引文件;飞书内容当前主要通过独立 MCP 工具按需读取/写入,并不会自动统一同步进本地 SQLite 索引。
index_file 增量索引 + 本地搜索 + 飞书工具npm install
编辑 config.json:
{
"local": {
"enabled": true,
"watch_paths": [
"~/Documents",
"~/Desktop"
],
"file_extensions": [".txt", ".md", ".pdf", ".docx", ".pptx"],
"exclude_patterns": ["**/node_modules/**", "**/.git/**"]
},
"feishu": {
"enabled": false,
"app_id": "",
"app_secret": ""
},
"database": {
"path": "./data/knowledge.db"
}
}
npm run build
npm run index
增量模式:只处理新增/修改的文件,自动清理已删除文件的索引,自动为新增/变更文档生成 embedding 向量。
npm run embed
仅用于为历史存量文档补生成 embedding。日常使用无需手动调用,npm run index 和 sync_local_documents 已自动生成。
首次运行会自动下载 embedding 模型(~80MB),后续运行使用缓存。
npm start
在 Cherry Studio / Cursor / 其他 MCP 客户端中添加:
{
"personal-knowledge": {
"command": "node",
"args": ["/absolute/path/to/personal-knowledge-mcp/dist/index.js"],
"cwd": "/absolute/path/to/personal-knowledge-mcp"
}
}
如果你希望快速了解当前代码现实,而不是只看产品概述,建议先读:
PROJECT_STATUS.md
| 命令 | 说明 |
|---|---|
npm run build |
编译 TypeScript |
npm run dev |
开发模式(watch 编译) |
npm run index |
索引本地文档(增量) |
npm run embed |
生成文档 embedding 向量 |
npm start |
启动 MCP Server |
npm run sync |
预留脚本,当前未实现完整“同步所有文档源”流程 |
查询 → jieba 分词 → FTS5 BM25 搜索 ─┐
├→ RRF 融合排名 → 每文档最多3片段 → Top-K
查询 → embedding 模型 → sqlite-vec KNN ┘
| 工具 | 说明 |
|---|---|
search_documents |
搜索文档(支持混合检索) |
get_document |
获取完整文档内容 |
list_documents |
列出文档(按更新时间排序) |
get_stats |
获取统计信息 |
sync_local_documents |
手动触发本地文档同步 |
index_file |
索引单个本地文件(适合新写入文件的秒级可搜) |
以下工具是“直连飞书 Open API”的工具层,不等于“飞书内容已进入本地搜索索引”。
| 工具 | 说明 |
|---|---|
get_bitable_records |
获取多维表格记录(支持筛选、排序) |
list_bitable_tables |
列出多维表格中的数据表 |
create_bitable_records |
创建多维表格记录(批量) |
update_bitable_record |
更新单条多维表格记录 |
batch_update_bitable_records |
批量更新多维表格记录 |
delete_bitable_records |
删除多维表格记录(批量) |
list_wiki_spaces |
列出可访问的知识空间列表 |
get_wiki_nodes |
获取知识空间节点列表(支持递归) |
get_wiki_node_content |
获取知识库文档内容(只需 node_token) |
get_docx_content |
获取云文档纯文本内容 |
list_drive_files |
列出云盘文件夹中的文件 |
get_drive_file_content |
获取云盘文件内容 |
get_sheet_data |
获取电子表格数据 |
list_sheets |
列出电子表格工作表 |
write_sheet_data |
写入电子表格数据 |
append_sheet_data |
追加电子表格数据 |
list_bitable_fields |
列出多维表格字段定义 |
create_bitable_field |
创建多维表格字段 |
update_bitable_field |
更新多维表格字段 |
delete_bitable_field |
删除多维表格字段 |
personal-knowledge-mcp/
├── src/
│ ├── index.ts # 入口(动态 import,解决 onnxruntime 线程问题)
│ ├── server.ts # MCP Server 实现
│ ├── types.ts # TypeScript 类型定义
│ ├── storage/
│ │ └── database.ts # SQLite + FTS5 + sqlite-vec 数据库
│ ├── crawlers/
│ │ └── local-crawler.ts # 本地文档爬虫(增量索引)
│ ├── feishu/ # 飞书 API 集成
│ │ ├── client.ts # 飞书客户端
│ │ ├── bitable.ts # 多维表格
│ │ ├── sheets.ts # 电子表格
│ │ ├── wiki.ts # 知识库
│ │ ├── docx.ts # 云文档
│ │ └── drive.ts # 云盘
│ └── utils/
│ ├── file-parser.ts # 文件解析(PDF/DOCX/PPTX)
│ ├── tokenizer.ts # 中文分词(jieba)
│ ├── chunker.ts # 文档分块
│ └── embedder.ts # 本地 embedding 模型(批量推理)
├── data/
│ └── knowledge.db # SQLite 数据库(自动生成)
├── config.json # 配置文件
└── package.json
documents 主文档表(id, source, title, content, metadata)
chunks 文档分块表(doc_id, chunk_index, content, tokenized_content)
chunks_fts FTS5 全文索引(基于分块,中文分词后存储)
chunks_vec sqlite-vec 向量索引(384 维 float embedding)
Node.js v24 + onnxruntime-node 存在线程 mutex 兼容性问题,进程退出时可能出现 mutex lock failed 错误。不影响功能,embedding 生成和搜索均正常工作。index.ts 已通过动态 import 和 OMP_NUM_THREADS=1 环境变量缓解此问题。
另外需要注意:
feishu-crawler,也没有“飞书全文自动同步入本地库”的实现npm run sync 目前是预留脚本,不应当作可用的全量同步入口LocalCrawler.startWatching() 已实现,但默认启动路径没有启用文件监听;当前仍以手动 npm run index 为主索引速度慢? 减少 watch_paths 范围,用 exclude_patterns 排除大目录。增量索引只处理变更文件。
Embedding 生成慢? npm run embed 使用批量推理(每批 50 条),比逐条处理快数倍。首次运行需下载模型(~80MB),后续使用缓存。
搜索不到文档? 确认已运行 npm run index,检查 file_extensions 是否包含目标文件类型。
如何更新索引? 重新运行 npm run index,增量处理变更文件并自动清理已删除文件,同时自动为新增/变更文档生成 embedding 向量。
飞书内容会自动进入 search_documents 吗? 当前不会。飞书内容主要通过独立 MCP 工具按需读取。如果希望进入本地搜索,建议导出为本地文件,或按 Work Wiki 流程写入 raw/ / wiki/ 后再用 index_file 或 npm run index 建索引。
Cherry Studio 连接失败? 确认已运行 npm run build,配置中使用绝对路径。
MIT
Выполни в терминале:
claude mcp add personal-knowledge-mcp-server -- npx CSA PROJECT - FZCO © 2026 IFZA Business Park, DDP, Premises Number 31174 - 001
Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.