知识图谱服务

一个基于MCP协议的共享知识系统,为AI代理和人类提供可查询的知识库,支持关联链接和级联重新验证。

  • by cristinecula
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 cristinecula/knowledge-mcp

使用说明

知识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++进行桌面开发”工作负载

来自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

快速启动

  1. 添加到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
      }
    }
    
  2. SQLite数据库在以下位置自动创建 ~/.knowledge-mcp/knowledge.db 第一次跑步。

  3. 打开 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 用于在会话中期拉/推的工具(例如,立即共享刚刚存储的条目)。
  • 自动克隆: 如果缺少回购路径,但有 remote URL,系统会在启动时自动克隆它。
  • Git操作: 同步层处理 git add/commit/push/pull 自动。

冲突解决

自上次同步以来,本地和远程都发生了变化:

  1. 远程版本作为规范版本获胜,并覆盖本地条目
  2. 本地版本另存为新版本 [Sync Conflict] 进入
  3. A. conflicts_with 从冲突副本创建到规范条目的链接
  4. 冲突副本被标记为高度不准确,因此代理知道如何解决它
  5. 代理通过查看两个版本并保留正确的版本来自然解决问题

回购结构

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

许可证

麻省理工学院