使用说明
知识mcp
一个共享的代理知识系统,作为 主控程序 服务器。它为人工智能代理(和人类)提供了一个持久的、可查询的知识库,具有关联链接和级联重新验证功能——当知识发生变化时,相关条目会自动标记以供审查。
为多个代理跨多个存储库工作的团队而构建。将约定、架构决策、模式、陷阱、调试说明和流程文档存储在一个地方,并让代理在工作时查询它们。
特性
- 关联知识图 --使用类型化关系(依赖、派生、阐述、矛盾、取代、相关、冲突_与)链接条目。当一个条目被更新时,链接的条目会根据它们之间的联系程度而累积不准确。
- 级联再验证 --当知识条目更新时,依赖于它或从中派生的条目会自动标记为“需要重新验证”
- 全文搜索 --FTS5支持跨标题、内容和标签的关键字搜索。
- 语义搜索 --使用局部嵌入或OpenAI进行可选的向量相似性搜索。结果通过交互排名融合与关键字搜索合并。
- 知识图可视化 --内置D3.js强制导向图UI
localhost:3333. - 分层范围界定 --条目的范围可以是公司、项目或仓库。查询向上继承(回购查询包括项目和公司知识)。
- 基于Git的团队同步 --通过git repo在团队中共享知识。带有YAML frontmatter的Markdown文件是事实的来源;本地SQLite充当个人索引。冲突检测可以保留两个版本,并让代理自然解决。
- 入口版本历史 --配置git sync后,检查任何条目的完整提交历史,并在任何时间点检索其内容。
- 11个MCP工具 --存储、查询、获取、列出、强化、弃用、更新、删除、同步知识,以及条目版本历史。
安装
先决条件
- Node.js 20或更晚
- npm (包含在Node.js中)
- C++编译器工具链
better-sqlite3本机编译:- macOS: Xcode命令行工具(
xcode-select --install) - Linux(Debian/Ubuntu):
sudo apt install build-essential python3 - Linux(Fedora):
sudo dnf install gcc-c++ make python3 - 窗户: Visual Studio 生成工具 具有“用C++进行桌面开发”工作负载
- macOS: Xcode命令行工具(
来自npm(推荐)
npm install -g knowledge-mcp
knowledge-mcp --help
或直接与 npx --无需全局安装:
npx knowledge-mcp --help
来源
git clone https://github.com/cristinecula/knowledge-mcp.git
cd knowledge-mcp
npm install
npm run build
验证安装:
node build/index.js --help
快速启动
-
添加到MCP客户端配置中(请参阅 配置 详细信息)。
推荐 --使用git sync实现团队共享和持久历史记录:
{ "knowledge": { "type": "local", "command": [ "npx", "knowledge-mcp", "--sync-repo", "/path/to/shared-knowledge-repo" ], "enabled": true } }同步仓库可以是任何git仓库(空的或现有的)。如果它有一个配置的远程,系统将自动推送和拉取更改。
更简单的替代方案 --仅限本地,不同步:
{ "knowledge": { "type": "local", "command": ["npx", "knowledge-mcp"], "enabled": true } } -
SQLite数据库在以下位置自动创建
~/.knowledge-mcp/knowledge.db第一次跑步。 -
打开
http://localhost:3333查看知识图可视化。
代理商说明
服务器附带了发送给MCP客户端的内置代理指令 在初始化握手期间。兼容的客户端(克劳德代码、OpenCode、, 等等)自动将这些注入代理的系统提示符,告诉它 在会话期间查询、存储和维护知识。无需手动设置。
但是,内置指令描述了 如何 使用工具--代理
也受益于告诉他们的顶级推动 当 使用它们。我们
建议将以下内容添加到全局规则文件中
(~/.config/opencode/AGENTS.md 对于OpenCode, ~/.claude/CLAUDE.md 对于克劳德
代码):
## Knowledge Base
A persistent knowledge base is available via the `knowledge_*` MCP tools. Use it for non-trivial tasks (multi-step work, debugging, feature implementation -- not quick one-off questions).
### Session Start
- Query the knowledge base for entries relevant to the current project or task before diving into work. This avoids re-discovering things learned in previous sessions.
### During Work
- Store non-obvious discoveries: architectural decisions, conventions, debugging insights, gotchas, and patterns that would save time if known in a future session.
- Link new entries to related existing knowledge.
- Reinforce entries you verify are still accurate.
- Deprecate or update entries that are outdated.
### After Completing Tasks
- If the task involved significant findings or decisions worth remembering, store them before finishing.
如果你想在上面添加特定于项目的指导,你可以创建一个
AGENTS.md (OpenCode)或 CLAUDE.md (Claude Code)在您的项目根目录中。
配置
MCP客户端设置
添加到您的MCP客户端配置中(例如,Claude Desktop claude_desktop_config.json,OpenCode opencode.json等等):
{
"knowledge": {
"type": "local",
"command": [
"npx",
"knowledge-mcp"
],
"enabled": true
}
}
启用git sync后:
{
"knowledge": {
"type": "local",
"command": [
"npx",
"knowledge-mcp",
"--sync-repo",
"/path/to/shared-knowledge-repo"
],
"enabled": true
}
}
启用语义搜索(本地嵌入):
{
"knowledge": {
"type": "local",
"command": [
"npx",
"knowledge-mcp",
"--embedding-provider",
"local"
],
"enabled": true
}
}
CLI选项
| 选项 | 描述 | 默认值 |
|---|---|---|
--db-path <path> |
SQLite数据库的路径 | ~/.knowledge-mcp/knowledge.db |
--graph-port <port> |
知识图可视化端口 | 3333 |
--no-graph |
禁用图形可视化服务器 | -- |
--embedding-provider <type> |
嵌入提供程序: none, local,或 openai |
none |
--openai-api-key <key> |
用于OpenAI嵌入的API密钥(或集合 OPENAI_API_KEY env) |
|
--embedding-model <model> |
覆盖默认嵌入模型 | 提供程序默认值 |
--sync-repo <path> |
通往团队知识同步的单个git仓库的路径 | -- |
--sync-config <path> |
多仓库同步JSON配置文件的路径 | -- |
--sync-interval <seconds> |
自动同步间隔(秒)(0表示禁用) | 300 |
--backfill-embeddings |
启动时为所有现有条目生成嵌入 | -- |
--help |
显示帮助消息 | -- |
多回购配置
要在多个存储库之间同步(例如,公司范围内与项目特定知识的单独存储库),请使用 --sync-config 使用JSON文件:
{
"repos": [
{
"name": "company-knowledge",
"path": "/path/to/company-repo",
"scope": "company",
"remote": "git@github.com:org/company-knowledge.git"
},
{
"name": "project-alpha",
"path": "/path/to/project-alpha-repo",
"project": "alpha",
"remote": "git@github.com:org/project-alpha-knowledge.git"
},
{
"name": "personal",
"path": "/path/to/personal-repo"
}
]
}
系统根据以下内容将条目路由到第一个匹配的仓库 scope 和 project.如果 remote 如果提供,系统将自动克隆本地不存在的仓库。
嵌入提供者
| 提供者 | 型号 | 尺寸 | 备注 |
|---|---|---|---|
none |
-- | -- | 无语义搜索,仅关键字搜索 |
local |
all-MiniLM-L6-v2 |
384 | 通过本地运行 @xenova/transformers首次使用时下载约30MB型号。 |
openai |
text-embedding-3-small |
1536 | 需要API密钥。 |
工具
store_knowledge
储存新知识。支持指向现有条目的可选链接和自动嵌入生成。
query_knowledge
使用自由文本查询搜索知识库。将FTS5关键字搜索与可选的向量相似性搜索(往复式排名融合)相结合。自动强化已访问的条目。
list_knowledge
无需搜索查询即可浏览和筛选条目。按类型、项目、范围或状态筛选。不会自动增强。
get_knowledge
按ID检索知识条目的完整内容。支持短ID前缀(至少4个字符)——如果前缀唯一标识一个条目,则会自动解析。如果存在歧义,则返回候选匹配项以帮助消除歧义。
reinforce_knowledge
明确地重新验证条目,将其不准确分数重置为0。当您验证条目是否仍然准确时,请使用此选项。
deprecate_knowledge
将条目标记为已弃用。默认查询结果中排除了弃用的条目。该条目未被删除。
delete_knowledge
永久删除条目及其所有相关链接和嵌入。不可逆转。用于错误创建的条目。
update_knowledge
更新条目的内容、标题、标签、类型、项目或范围。自动触发依赖条目的级联重新验证,并重新生成嵌入。
sync_knowledge
手动触发与git repo的同步。支持 pull (导入远程更改), push (导出本地更改),或 both仅在以下情况下可用 --sync-repo 已配置。
get_entry_history
检索知识条目的git提交历史记录。返回一个提交列表(最新的第一个),显示条目的创建、修改时间和创建者。需要配置git sync。
get_entry_at_version
在特定的git提交中检索知识条目的完整内容。使用后 get_entry_history 检查条目在特定时间点的样子。需要配置git sync。
Git同步
同步层通过共享的git存储库实现团队知识共享。每个团队成员都运行自己的本地实例 --sync-repo 指向共享仓库。
运作原理
- 真相来源: git仓库中的Markdown文件(
entries/{type}/{slug}_{id8}.md)YAML frontmatter包含元数据和链接。没有单独的链接目录——链接嵌入在每个条目的首页。 - 本地数据库: SQLite充当个人索引/缓存。仅本地字段(访问计数、上次访问)保持本地状态——每个人的使用都是个人的。
- 请填写: 每次本地写入(存储、更新、删除、链接、弃用)都会立即作为Markdown文件写入仓库并在本地提交。快速写入被批处理为单个提交(150毫秒去抖动)。按同步间隔(默认5分钟)或按需通过
sync_knowledge工具。 - 拉动式启动: 当服务器启动时,它将所有更改从配置的存储库拉入本地数据库。
- 手动同步: 使用
sync_knowledge用于在会话中期拉/推的工具(例如,立即共享刚刚存储的条目)。 - 自动克隆: 如果缺少回购路径,但有
remoteURL,系统会在启动时自动克隆它。 - Git操作: 同步层处理
git add/commit/push/pull自动。
冲突解决
自上次同步以来,本地和远程都发生了变化:
- 远程版本作为规范版本获胜,并覆盖本地条目
- 本地版本另存为新版本
[Sync Conflict]进入 - A.
conflicts_with从冲突副本创建到规范条目的链接 - 冲突副本被标记为高度不准确,因此代理知道如何解决它
- 代理通过查看两个版本并保留正确的版本来自然解决问题
回购结构
shared-knowledge-repo/
entries/
convention/
{slug}_{id8}.md
decision/
{slug}_{id8}.md
pattern/
{slug}_{id8}.md
...
设置
# Start the server with a sync repo
node build/index.js --sync-repo /path/to/shared-knowledge
# OR with a multi-repo config
node build/index.js --sync-config config.json
建筑
模型不准确
当知识条目更新时,链接条目会根据变化幅度和链接类型权重累积不准确度。不准确度超过可配置阈值的条目被标记为“需要重新验证”。强化条目会将其不准确度重置为0。
链接类型权重不准确: 派生(1.0)、矛盾(0.7)、依赖(0.6)、阐述(0.4)、取代(0.3)、相关(0.1)、冲突(0)。
状态转换:
active--默认状态needs_revalidation--不准确度超过阈值的条目的虚拟状态deprecated--手动弃用,从默认查询结果中排除
数据模型
- 知识 --带有FTS5全文搜索索引的主条目表
- 知识链接 --条目之间的类型化关联(源+目标+类型的唯一约束)
- 知识嵌入 --语义搜索的向量嵌入
所有表都使用UUID主键和ISO 8601时间戳。冲突检测用途 version 和 synced_version 列——每次内容更改操作都会递增 version,以及 synced_version 跟踪与遥控器协调的最后一个版本。如果本地和远程都已超越 synced_version,这是一场真正的冲突。这 synced_at 列记录条目上次与仓库同步的时间。
界定范围
条目的范围按层次划分:
- 公司 --对所有查询可见
- 项目 --对项目和仓库查询可见
- 仓库 --仅对仓库查询可见
给定范围内的查询会自动继承更广泛范围内的条目。
知识图可视化
服务器运行时,打开 http://localhost:3333 查看知识图。D3.js力定向图显示:
- 节点 --按知识类型进行颜色编码,按访问次数确定大小
- 边缘 --键入并标记链接关系
- 侧边栏 --单击节点以检查其详细信息,包括渲染的markdown内容和可折叠的版本历史记录(配置git sync时)
- 过滤器 --按类型、范围、状态或项目筛选(从您的条目中填充动态下拉列表)
发展
# Build
npm run build
# Watch mode (TypeScript compilation)
npm run dev
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
项目结构
src/
index.ts # Entry point, CLI args, tool registration
instructions.ts # Built-in agent instructions for MCP clients
types.ts # Types, enums, constants, conversion helpers
db/
connection.ts # SQLite connection (WAL mode, auto-create)
schema.ts # DDL: tables, indexes, FTS5, triggers
queries.ts # All CRUD, search, link, embedding queries
tools/
store.ts # store_knowledge
query.ts # query_knowledge
get.ts # get_knowledge
list.ts # list_knowledge
reinforce.ts # reinforce_knowledge
deprecate.ts # deprecate_knowledge
delete.ts # delete_knowledge
update.ts # update_knowledge
sync.ts # sync_knowledge
history.ts # get_entry_history, get_entry_at_version
sync/
config.ts # Sync repo path management
serialize.ts # Entry/link JSON serialization
fs.ts # Repo file I/O (read, write, delete, list)
git.ts # Git operations (add, commit, push, pull, log, show)
routing.ts # Entry-to-repo routing based on scope/project
history.ts # Entry version history resolution (DB → routing → git)
merge.ts # Conflict detection (no_change, remote_wins, local_wins, conflict)
pull.ts # Import remote changes, handle conflicts
push.ts # Export local entries/links to repo
write-through.ts # Immediate sync on local writes
commit-scheduler.ts # Batched commit scheduling
embeddings/
provider.ts # Embedding provider interface + factory
local.ts # Local provider (@xenova/transformers)
openai.ts # OpenAI provider
similarity.ts # Cosine similarity, vector search, RRF, backfill
graph/
server.ts # Graph visualization HTTP server
handler.ts # API routes + static file serving
static/ # D3.js graph UI (HTML, JS, CSS)
__tests__/
db.test.ts # Database layer tests
tools.test.ts # Tool integration tests
similarity.test.ts # Similarity/RRF math tests
inaccuracy.test.ts # Inaccuracy propagation tests
sync.test.ts # Sync layer tests
e2e-sync.test.ts # End-to-end sync tests with real git repos
e2e-helpers.ts # E2E test infrastructure
history.test.ts # Entry version history tests
commit-scheduler.test.ts # Commit scheduler tests
handler.test.ts # Graph API handler tests
许可证
麻省理工学院
