Token导航 LogoToken导航TokenDH.com
KnowledgeGraph MCP Server logo
数据服务stdio官方级别未说明来源级核验

KnowledgeGraph MCP Server

MCP Server

knowledgegraph-mcp

MCP server for enabling persistent knowledge storage for Claude through a knowledge graph with multiple storage backends and fuzzy search

工具数

11

提示词数

0

GitHub Stars

23

资源数

0
知识图谱PostgreSQLVS CodeClaudeCursorWindsurfClaude DesktopVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

n-r-w

提供方

n-r-w

最后核验

2026/5/18 04:04

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npx knowledgegraph-mcp --help

详细介绍

](https://mseep.ai/app/n-r-w-knowledgegraph-mcp)

警告

我对这样的自动化上下文管理工具感到失望,因为它几乎不可能控制。过了一段时间,我总是不得不手动清理混乱或纠正不恰当的LLM笔记。 相反,我创建了一个工具,让LLM代理访问动态加载的上下文。但是,上下文本身是用户创建的:https://github.com/n-r-w/agent-standards-mcp

知识图谱MCP服务器

一种在对话中为LLM提供持久内存的简单方法。此服务器允许Claude或vscode使用知识图记住有关您、您的项目和您的偏好的信息。

主要特点:

  • 多个存储后端:PostgreSQL(推荐)或SQLite(本地文件)
  • 项目分离:保持不同项目的隔离(使用提示自动检测)
  • 更好的搜索:使用模糊搜索和分页查找信息

完整安装指南

按照以下步骤操作,以使知识图与Claude一起工作:

步骤1:选择安装方法

选项A:NPX(最简单-无需下载)

# Test that it works
npx knowledgegraph-mcp --help

选项B:Docker

# Clone and build
git clone https://github.com/n-r-w/knowledgegraph-mcp.git
cd knowledgegraph-mcp
docker build -t knowledgegraph-mcp .

第二步:选择数据库

SQLite(默认-无需设置):

  • 无需安装数据库
  • 在中自动创建的数据库文件 [you home folder]/.knowledge-graph/
  • 非常适合个人使用和大多数场景
  • 这是默认后端

PostgreSQL(适用于高级用户):

  • 在您的系统上安装PostgreSQL
  • 创建数据库: CREATE DATABASE knowledgegraph;
  • 更适合多个并发用户的生产使用

步骤3:配置客户端

克劳德桌面

编辑您的Claude Desktop配置文件:

查找您的配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

如果选择NPX+SQLite(默认且最简单):

{
  "mcpServers": {
    "Knowledge Graph": {
      "command": "npx",
      "args": ["-y", "knowledgegraph-mcp"]
    }
  }
}
备注:SQLite将在中自动创建数据库 [you home folder]/.knowledge-graph/knowledgegraph.db。要使用自定义位置,请添加: "KNOWLEDGEGRAPH_SQLITE_PATH": "/path/to/your/database.db"

如果您选择Docker+SQLite(默认):

{
  "mcpServers": {
    "Knowledge Graph": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "[you home folder]/.knowledge-graph:/app/.knowledge-graph",
        "knowledgegraph-mcp"
      ]
    }
  }
}
备注:卷挂载可确保您的数据在Docker运行之间保持不变。对于自定义路径,请添加: -e KNOWLEDGEGRAPH_SQLITE_PATH=/app/.knowledge-graph/custom.db

如果你选择PostgreSQL:

{
  "mcpServers": {
    "Knowledge Graph": {
      "command": "npx",
      "args": ["-y", "knowledgegraph-mcp"],
      "env": {
        "KNOWLEDGEGRAPH_STORAGE_TYPE": "postgresql",
        "KNOWLEDGEGRAPH_CONNECTION_STRING": "postgresql://postgres:yourpassword@localhost:5432/knowledgegraph"
      }
    }
  }
}

VS Code

如果您还想将其与VS Code一起使用,请将其添加到您的用户设置(JSON)中或创建 .vscode/mcp.json:

使用NPX+SQLite(默认):

{
  "mcp": {
    "servers": {
      "Knowledge Graph": {
        "command": "npx",
        "args": ["-y", "knowledgegraph-mcp"],
      }
    }
  }
}

使用Docker(默认SQLite):

{
  "mcp": {
    "servers": {
      "Knowledge Graph": {
        "command": "docker",
        "args": [
          "run", "-i", "--rm",
          "-e", "KNOWLEDGEGRAPH_CONNECTION_STRING=sqlite://./knowledgegraph.db",
          "knowledgegraph-mcp"
        ]
      }
    }
  }
}

使用Docker+PostgreSQL:

首先,确保你的PostgreSQL数据库已经设置好:

# Create the database (run this once)
psql -h 127.0.0.1 -p 5432 -U postgres -c "CREATE DATABASE knowledgegraph;"

然后配置VS代码:

{
  "mcp": {
    "servers": {
      "Knowledge Graph": {
        "command": "docker",
        "args": [
          "run", "-i", "--rm",
          "--network", "host",
          "-e", "KNOWLEDGEGRAPH_STORAGE_TYPE=postgresql",
          "-e", "KNOWLEDGEGRAPH_CONNECTION_STRING=postgresql://postgres:yourpassword@127.0.0.1:5432/knowledgegraph",
          "knowledgegraph-mcp"
        ]
      }
    }
  }
}

Docker+PostgreSQL的替代方案(如果 --network host 不起作用):

{
  "mcp": {
    "servers": {
      "Knowledge Graph": {
        "command": "docker",
        "args": [
          "run", "-i", "--rm",
          "--add-host", "host.docker.internal:host-gateway",
          "-e", "KNOWLEDGEGRAPH_STORAGE_TYPE=postgresql",
          "-e", "KNOWLEDGEGRAPH_CONNECTION_STRING=postgresql://postgres:yourpassword@host.docker.internal:5432/knowledgegraph",
          "knowledgegraph-mcp"
        ]
      }
    }
  }
}
重要说明: - 替换 yourpassword 使用您的实际PostgreSQL密码 - 确保 knowledgegraph 启动前数据库已存在 - 如果您遇到连接错误,请尝试上述替代配置 - 有关Docker+PostgreSQL问题的疑难解答,请参阅 常见问题 章节

步骤4:选择LLM系统提示

定制:

  • 根据您的域修改实体类型
  • 根据您的数据模式调整搜索策略
  • 添加特定于域的标签和关系类型

LLM兼容性:

  • 所有LLM的行为都不同。对一些人来说,一般的说明就足够了,而另一些人则需要详细描述一切
  • 使用LLM解释为什么它没有使用知识图。问 Explain STEP-BY-STEP why you didn't use the knowledge graph? DO NOT DO ANYTHING ELSE 以获得详细的报告并确定说明中的问题。

可用提示:

步骤5:重新启动克劳德桌面(或VS代码)

关闭并重新打开Claude Desktop。现在,您应该在可用工具中看到“知识图谱”。

步骤6:测试它是否有效

LLM的快速测试命令:

  1. “记住,我更喜欢上午的会议”→ 创建首选项实体
  2. “约翰·史密斯在谷歌担任软件工程师”→ 创建个人+公司+关系
  3. “查找所有在谷歌工作的人”→ 测试搜索和关系
  4. “将上午的会议偏好标记为紧急”→ 测试标签
备注:该服务包括全面的输入验证,以防止错误。如果您遇到任何问题,请检查 故障排除指南 共同的解决方案。

工作原理-LLM电源特性

知识图通过四个相互关联的概念实现了强大的查询:

1.实体-您的知识节点

将人员、项目、公司、技术存储为可搜索的实体。

实例-项目管理:

{
  "name": "Sarah_Chen",
  "entityType": "person",
  "observations": ["Senior React developer", "Leads frontend team", "Available for urgent tasks"],
  "tags": ["developer", "team-lead", "available"]
}

LLM福利: 通过标签搜索立即找到“所有可用的团队线索”。

2.关系-启用发现查询

连接实体以回答复杂的问题,如“谁在做什么?”

真实示例-团队结构:

{
  "from": "Sarah_Chen",
  "to": "Project_Alpha",
  "relationType": "leads"
}

LLM福利: 查询“查找Sarah领导的所有项目”或“谁领导Alpha项目?”

3.观察-原子事实

存储有关实体的特定、可搜索的事实。

真实示例-可操作信息:

  • “可用于紧急任务”→ 查找可用人员
  • “使用React 18.2”→ 寻找具有特定技术的项目
  • “截止日期:2024年3月15日”→ 查找即将到来的截止日期

4.标签-即时过滤

启用即时状态和类别搜索。

实例-项目工作流程:

  • ["urgent", "in-progress", "frontend"] → 查找紧急前端任务
  • ["completed", "bug-fix"] → 跟踪已完成的错误修复
  • ["available", "senior"] → 查找可用的高级职员

配置选项

环境变量

服务器支持多种环境变量进行自定义:

数据库配置

  • KNOWLEDGEGRAPH_STORAGE_TYPE:数据库类型(sqlitepostgresql,默认值: sqlite)
  • KNOWLEDGEGRAPH_CONNECTION_STRING:数据库连接字符串
  • KNOWLEDGEGRAPH_SQLITE_PATH:自定义SQLite数据库路径(可选)
  • KNOWLEDGEGRAPH_PROJECT:数据隔离的项目标识符(默认值: knowledgegraph_default_project)

搜索配置

  • KNOWLEDGEGRAPH_SEARCH_MAX_RESULTS:数据库搜索返回的最大结果数(默认值: 100,最大值: 1000)
  • KNOWLEDGEGRAPH_SEARCH_BATCH_SIZE:处理大型查询数组的批处理大小(默认值: 10,最大值: 50)
  • KNOWLEDGEGRAPH_SEARCH_MAX_CLIENT_ENTITIES:客户端搜索要加载的最大实体数(默认值: 10000,最大值: 100000)
  • KNOWLEDGEGRAPH_SEARCH_CLIENT_CHUNK_SIZE:用于在客户端搜索中处理大型数据集的块大小(默认值: 1000,最大值: 10000)
备注:搜索限制会自动验证并限制在安全范围内,以防止性能问题。

性能优化

搜索系统包括几个性能优化:

实体加载限制:

  • KNOWLEDGEGRAPH_SEARCH_MAX_CLIENT_ENTITIES 限制客户端搜索加载的实体数量
  • 防止大型数据集的内存问题
  • 达到限制时记录警告
  • 适用于SQLite和PostgreSQL后端

块状处理:

  • KNOWLEDGEGRAPH_SEARCH_CLIENT_CHUNK_SIZE 控制大型实体集的块大小
  • 当实体计数超过块大小时自动使用
  • 提高内存使用率和搜索性能
  • 通过重复数据删除保持结果准确性

按数据集大小推荐的值:

  • 小型(\10000个实体):尽可能使用数据库级搜索,或 KNOWLEDGEGRAPH_SEARCH_MAX_CLIENT_ENTITIES=2000, KNOWLEDGEGRAPH_SEARCH_CLIENT_CHUNK_SIZE=200

性能监控:

  • 应用限制时记录警告
  • 自动记录分块以提高透明度
  • 配置验证可防止次优设置

可用工具

服务器提供以下工具来管理您的知识图谱:

数据创建工具

create_entities

创建 知识图中的新实体(人、概念、对象)。

  • 什么时候: 用于尚未存在的实体
  • 约束: 每个实体必须有≥1个非空观察值
  • 行为: 忽略具有现有名称的实体(使用add_observations进行更新)

输入:

  • entities (Entity\[\]):实体对象数组。每项要求:

- name (string):唯一标识符,非空 - entityType (string):类别(例如,“人”、“项目”),非空 - observations (string\[\]):关于实体的事实,必须包含≥1个非空字符串 - tags (string\[\],可选):用于过滤的精确匹配标签

  • project_id (字符串,可选):用于隔离数据的项目名称

创建关系

连接 实体,以实现强大的查询和发现。

  • 即时利益: 查找公司的所有人员、使用某项技术的所有项目、所有依赖关系
  • 关键在于: 团队结构、项目依赖关系、技术栈
  • 示例: “John在谷歌工作”,“React依赖于JavaScript”,“Sarah管理的Project Alpha”

输入:

  • relations (Relations\[\]):关系对象数组。每项要求:

- from (string):源实体名称(必须存在) - to (string):目标实体名称(必须存在) - relationType (string):活动语音中的关系类型(works_at、manages、depends_on、uses)

  • project_id (字符串,可选):用于隔离数据的项目名称

添加观察结果

对现有实体的事实观察。

  • 要求: 目标实体必须存在,每次更新≥1个非空观察值
  • 最佳实践: 保持观察的原子性和特异性

输入:

  • observations (ObservationUpdate\[\]):观测更新数组。每项要求:

- entityName (string):目标实体名称(必须存在) - observations (string\[\]):要添加的新事实,必须包含≥1个非空字符串

  • project_id (字符串,可选):用于隔离数据的项目名称

添加标签

用于即时筛选的状态/类别标签。

  • 即时利益: 按状态(紧急、已完成、进行中)或类型(技术、个人)查找实体
  • 必修的: 用于高效的项目管理和快速检索
  • 示例: \[“目标”、“完成”、“错误”、“功能”、“个人”\]

输入:

  • updates (TagUpdate\[\]):标签更新数组。每项要求:

- entityName (string):目标实体名称(必须存在) - tags (string\[\]):要添加的状态/类别标签(精确匹配,区分大小写)

  • project_id (字符串,可选):用于隔离数据的项目名称

数据检索工具

read_graph

检索 包含所有实体和关系的完整知识图。

  • 用例: 全面概述,了解当前状态,查看所有连接
  • 范围: 返回指定项目中的所有内容

输入:

  • project_id (字符串,可选):用于隔离数据的项目名称

搜索知识

搜索 通过文本或标签显示实体。 支持多个查询 用于批量搜索。

  • 强制性策略: 1) 首先尝试searchMode='exact'2)如果没有结果,则使用searchMode='模糊'3)如果仍然为空,则将模糊阈值降低到0.1
  • 精确模式: 完美的子字符串匹配(快速、精确)
  • 模糊模式: 相似/拼写错误的术语(较慢、较宽)
  • 标签搜索: 使用exactTags进行精确的类别过滤
  • 多个查询: 使用自动重复数据删除功能在一次调用中搜索多个对象

输入:

  • query (string | string\[\],可选):用于文本搜索的搜索查询。对于多对象搜索,可以是单个字符串或字符串数组。当exactTags仅用于标签搜索时为可选。
  • searchMode (字符串,可选):“精确”或“模糊”(默认值:“确切”)。仅当精确返回无结果时才使用模糊
  • fuzzyThreshold (数字,可选):模糊相似性阈值。0.3=默认值,0.1=非常宽泛,0.7=非常严格。值越低,结果越多
  • exactTags (string\[\],可选):用于精确匹配搜索的标签(区分大小写)。用于类别筛选
  • tagMatchMode (string,可选):对于exactTags:“any”=具有any标签的实体,“all”=具有all标签的实体(默认值:“any”)
  • page (数字,可选):分页页码(从0开始,默认值:0)
  • pageSize (数字,可选):每页结果数(1-1000,默认值:50)
  • project_id (字符串,可选):用于隔离数据的项目名称

示例:

  • 基本搜索: search_knowledge(query="JavaScript", searchMode="exact")
  • 分页搜索: search_knowledge(query="React", page=0, pageSize=20)
  • 大型数据集: search_knowledge(query="components", page=2, pageSize=100)
  • 多个查询: search_knowledge(query=["JavaScript", "React"], page=0, pageSize=30)
  • 标签+分页: search_knowledge(query="React", exactTags=["frontend"], page=1, pageSize=25)
  • 仅标记搜索: search_knowledge(exactTags=["urgent", "bug"], tagMatchMode="all") -无需查询

分页优势:

  • 演出:使用OFFSET/LIMIT进行数据库级分页,以实现高效的大型数据集处理
  • 记忆:通过限制每个请求的结果来减少内存使用
  • 导航:分页元数据提供totalPages、currentPage和导航提示
  • 可扩展性:高效处理包含数千个实体的知识图

open_nodes

检索 特定实体的确切名称及其相互连接。

  • 返回: 请求的实体及其之间的关系
  • 用例: 当你知道确切的实体名称并想要详细信息时

输入:

  • names (string\[\]):要检索的实体名称数组
  • project_id (字符串,可选):用于隔离数据的项目名称

数据管理工具

删除内容

永久删除 实体及其所有关系。

  • 警告: 无法撤消,级联以删除所有连接
  • 用例: 实体不再相关或创建错误

输入:

  • entityNames (string\[\]):要删除的实体名称数组
  • project_id (字符串,可选):用于隔离数据的项目名称

删除观察

移除 在保持实体完整的同时,对实体进行具体观察。

  • 用例: 纠正错误信息或删除过时的细节
  • 保存: 实体和其他意见保持不变

输入:

  • deletions (ObservationDeleation\[\]):删除请求数组。每项要求:

- entityName (string):目标实体名称 - observations (string\[\]):要删除的具体观察结果

  • project_id (字符串,可选):用于隔离数据的项目名称

删除关系

更新 当连接发生变化时的关系结构。

  • 关键在于: 作业更改(删除旧的“works_at”)、项目完成(删除“assigned_to”)、技术迁移(删除旧“use”)
  • 维护: 准确的网络结构,防止混淆
  • 工作流: 创建新关系时,始终删除过时的关系

输入:

  • relations (关系\[\]):要删除的关系数组。每项要求:

- from (string):源实体名称 - to (string):目标实体名称 - relationType (string):要删除的确切关系类型

  • project_id (字符串,可选):用于隔离数据的项目名称

移除标签

更新 通过删除过时的标签来显示实体状态。

  • 关键: 对于状态跟踪-完成时删除“进行中”,解决后删除“紧急”
  • 维护: 干净的搜索结果和准确的状态
  • 工作流: 添加新状态标签时,始终删除旧状态标签

输入:

  • updates (TagUpdate\[\]):标签删除请求数组。每项要求:

- entityName (string):目标实体名称 - tags (string\[\]):要删除的过时标签(精确匹配,区分大小写)

  • project_id (字符串,可选):用于隔离数据的项目名称

开发和测试

多后端测试

该项目包括全面的多后端测试,以确保SQLite和PostgreSQL之间的兼容性:

对两个后端运行测试:

npm run test:multi-backend

运行所有测试(原始+多后端):

npm run test:all-backends

使用Taskfile(如果已安装):

task test:multi-backend
task test:comprehensive

开发设置

克隆和设置:

git clone https://github.com/n-r-w/knowledgegraph-mcp.git
cd knowledgegraph-mcp
npm install
npm run build

运行测试:

npm test                    # All tests including multi-backend
npm run test:unit          # Unit tests only
npm run test:performance   # Performance benchmarks

故障排除

如果您在设置或使用过程中遇到任何问题,请参阅我们的综合 故障排除指南,其中包括:

  • 输入验证错误
  • 数据库连接问题
  • 配置问题
  • Docker相关挑战
  • 测试执行失败
  • 性能优化

该指南包括常见问题的分步解决方案和诊断命令,以帮助识别问题。

基于MCP内存服务器

这是官方的增强版 MCP内存服务器 具有附加功能:

  • 多种存储选项:PostgreSQL(推荐)或SQLite(本地文件)
  • 项目分离:将不同的项目隔离开来
  • 更好的搜索:使用模糊搜索查找信息
  • 轻松设置:Docker支持和简单安装

许可证

MIT许可证-您可以自由使用、修改和分发此软件。

目录标签

目录标签

知识图谱PostgreSQLVS Coderesearch-and-dataknowledgegraphmemorysqlitemcpvscodeTypeScript本地部署LLM记忆数据库存储智能搜索项目隔离

支持客户端

ClaudeCursorWindsurfClaude DesktopVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

来源包(packageName,安装包名)

knowledgegraph-mcp

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP