wiki-mcp
Retrieval-augmented MCP server for company project documents (Markdown, Word, Excel, PDF) with vector search, offline embedding, and token-based project authorization.
README
wiki-mcp — 公司项目知识库 MCP Server
把项目资料(原理图说明、客户需求、接口约定等)向量化入库,通过 MCP 协议 提供给 Claude Code 做检索增强(对应《AI Coding 系统项目规划书》§4.3 / P3 阶段)。
- 完全离线可运行:embedding 用本地 ONNX 模型(fastembed + bge-small-zh),纯 CPU 即可,无外部依赖。
- 格式支持:Markdown / txt / Word (.docx) / Excel (.xlsx) / PDF。
- 按项目授权:Bearer token → 可访问项目列表,检索与读取都强制过滤。
- MCP 工具:
search_wiki(语义检索)、read_doc(读全文)、list_projects。
安全红线:本仓库只含代码与模拟数据。真实业务资料只在公司内网 (Server A)上入库,绝不进入外部开发环境。MCP 返回的文档内容一律视为 不可信输入(防 prompt injection,见规划书 §07)。
快速开始(开发环境)
python3 -m venv .venv && .venv/bin/pip install -e .
cp config.example.yaml config.yaml
cp tokens.example.yaml tokens.yaml # 改成真实 token,勿提交 git
# 用模拟数据验证
.venv/bin/python scripts/make_sample_office_docs.py
.venv/bin/wiki-mcp ingest sample_data/demo-alpha -p demo-alpha
.venv/bin/wiki-mcp ingest sample_data/demo-beta -p demo-beta
.venv/bin/wiki-mcp search "温度采集用的什么芯片" # 本地测检索
.venv/bin/wiki-mcp serve # http://0.0.0.0:9000/mcp
CLI
| 命令 | 说明 |
|---|---|
wiki-mcp ingest <目录> -p <项目> [--wipe] |
入库(--wipe 先清空该项目) |
wiki-mcp serve |
启动 MCP server |
wiki-mcp search "<问题>" [-p 项目] [-k N] |
本地测试检索(不走鉴权) |
wiki-mcp projects |
列出库中项目 |
Claude Code 侧接入
项目仓库的 .mcp.json(模板见 team-skills 仓库):
{
"mcpServers": {
"company-wiki": {
"type": "http",
"url": "https://server-a.internal:9000/mcp",
"headers": { "Authorization": "Bearer ${WIKI_TOKEN}" }
}
}
}
工程师在 shell profile 里 export WIKI_TOKEN="wk-个人token"。
部署到 Server A
方式一:在线部署(Server A 能出网时,推荐)
Server A 为 Ubuntu 22.04 时,先装 Python 3.12(与开发环境一致; 系统自带的 3.10 理论兼容但未做测试):
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt install python3.12 python3.12-venv
然后:
git clone <本仓库地址> /opt/wiki-mcp && cd /opt/wiki-mcp
python3.12 -m venv .venv
# 国内服务器 pip 建议走镜像:
.venv/bin/pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple
cp config.example.yaml config.yaml
cp tokens.example.yaml tokens.yaml # 生成真实 token
# 国内服务器连不上 huggingface.co,首次 ingest 前设置 HF 镜像:
export HF_ENDPOINT=https://hf-mirror.com
.venv/bin/wiki-mcp ingest <内网文档目录> -p <项目名>
.venv/bin/wiki-mcp serve
模型只在首次下载,之后缓存在 models/,运行期不再依赖外网。
方式二:离线包部署(备选,Server A 不能出网时)
- 在本机(能上网、与 Server A 同为 linux x86_64、Python 大版本一致)执行:
bash scripts/build_offline_bundle.sh→ 产出wiki-mcp-offline-bundle.tar.gz(含依赖 wheels + embedding 模型 + 源码 + 安装脚本)。 - 拷贝到 Server A:
tar xzf ... && cd offline_bundle && ./install.sh。 - 配置
config.yaml/tokens.yaml,对内网文档目录执行ingest,再serve。
注意:wheels 与构建机的平台/Python 版本绑定(当前包为 linux x86_64 + cp312)。
systemd 示例
[Unit]
Description=wiki-mcp knowledge base MCP server
After=network.target
[Service]
User=wikimcp
WorkingDirectory=/opt/wiki-mcp
ExecStart=/opt/wiki-mcp/.venv/bin/wiki-mcp serve
Restart=always
[Install]
WantedBy=multi-user.target
TLS
服务本身是明文 HTTP,生产环境在前面放 nginx/caddy 做 TLS 终结
(内网也要 HTTPS,token 不能明文过网),Claude Code 侧 URL 用 https://。
运维要点
- token 生命周期:入职添加、离职删除(tokens.yaml 改后重启服务)、定期轮换。
- 换 embedding 模型:整库重建(删除
data/wiki.db后全部重新 ingest), 库内 meta 会校验模型一致性,混用会报错。 - 检索质量升级(可选):默认 bge-small-zh 纯 CPU 毫秒级,wiki 规模够用。
若试点后觉得检索质量不足,改
config.yaml的model: BAAI/bge-m3并重建库; bge-m3 在 CPU 上入库偏慢,Server A 有 GPU 时可pip install fastembed-gpu替换 fastembed 加速(检索本身单条查询 CPU 也够)。 - 更新文档:重跑
ingest即可,按(project, path)覆盖更新。 - 规模:brute-force 检索在 10 万 chunk 量级下毫秒级返回,wiki 规模足够; 再大再考虑换专用向量库。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。