内容
# Markdown 知识图谱笔记本 MCP 服务器
## 一个简单易读的外部内存系统,用于 AI 工具
<img width="1566" alt="image" src="https://github.com/user-attachments/assets/2b4bd84a-7308-43ef-b4f5-113fb5d3f290" />
该项目是一个基于 FastMCP 的服务器,提供管理存储为 Markdown 文件的简单“知识图谱笔记本”的工具。知识图谱中的每个实体都是一个单独的 Markdown 文件,关系在这些文件中定义。
预期的使用场景是用户设置此工具以指向一个空的 Obsidian vault,供人类自行阅读和更新。通过这种工作流程,随意的描述可以变成整洁且详细的结构化图形,理想用于搜索和图表。
这意味着你机器人朋友的记忆易于审查和修复,使他们上下文之外的世界变得可以触摸和把握。加上版本控制,你可以将你朋友的记忆回滚到你说出奇怪话之前,这种行为是正常的、酷的,也是健康的。
## 特性
* **实体管理:** 创建、删除实体。
* **观察管理:** 在实体内添加、删除观察(文本笔记)。
* **关系管理:** 添加、删除实体之间的关系。
* **图形检索:** 获取整个知识图谱的表示。
## 暴露的工具
服务器暴露以下 MCP 工具:
* `create_entity`:创建一个新实体。
* Payload: `{"name": "entity_name"}`
* `get_graph`:检索整个知识图谱。
* Payload: `{}`
* `add_observation`:向实体添加观察。
* Payload: `{"entity_name": "name", "observation": "text"}`
* `add_relationship`:在实体之间添加关系。
* Payload: `{"source_entity_name": "source", "verb_preposition": "verb", "target_entity": "target", "context": "optional_text"}`
* `delete_entity`:删除一个实体。
* Payload: `{"name": "entity_name"}`
* `delete_observation`:从实体中删除观察。
* Payload: `{"entity_name": "name", "observation": "exact_text_to_delete"}`
* `delete_relationship`:删除关系。
* Payload: `{"source_entity_name": "source", "verb_preposition": "verb", "target_entity": "target", "context": "exact_context"}`
## 安装
目前,我通过 nix flake 调用它,因为我是一个热爱 nix 的疯狂人。最简单的路径是你使用 Determinate Installer 安装 nix,并添加 `nix run github:mccartykim/md_knowledge_graph_mcp` 的 stdio 调用。
Claude/Windsurf 配置样式:
```
"mcp_servers" : {
"md_knowledge_graph": {
"command": "nix",
"args": [
"run",
"github:mccartykim/md_knowledge_graph_mcp"
],
"env" : {
"MD_NOTEBOOK_KNOWLEDGE_GRAPH_DIR": "/Users/your_name/personal/knowledge_graph"
}
}
}
```
这也可以通过 uv 运行。克隆此仓库并运行 `uv run server`,我希望很快在 pypy 上发布,以便于设置。
知识图谱的 Markdown 文件存储在由 `KG_MCP_MARKDOWN_PATH` 环境变量指定的目录中。如果未设置,则默认为名为 `kg_markdown_data` 的本地目录。
## 示例实体:
```
# Pleiades
Pleiades 是 Kimberly 的猫,简称 Plady
以 Pleiades 星系命名,这也是 Subaru 的命名来源。猫咪短小而低沉,像 Subaru 汽车一样。
## 关系
- named_after [[Subaru]] Pleiades(Plady)这只猫是以 Kimberly 的 Subaru 命名的。
```
如你所见,我们有名称、通过换行符分隔的观察,以及以 `verb [[link]] 可能有一些上下文` 类型模式列出的关系。
## 测试
单元测试位于 `tests/` 目录中:
* `test_kg_core.py`:测试核心 Markdown 文件操作逻辑。
* `test_server_tools.py`:使用 `fastmcp.Client` 测试 MCP 工具。
要运行测试(假设它们在包结构中):
```bash
# 从此服务器目录的根目录
python -m unittest discover tests
# 或者如果使用 pytest:
# pytest tests/
```
## 示例
`examples/` 目录包含帮助你入门的资源:
* `system_prompt.md` - 一个示例系统提示,用于与此知识图谱系统交互的 LLM,设计用于可以根据需要重新加载知识图谱的长上下文模型。
* `sample_kg_entry.md` - 一个示例实体条目,展示预期的 Markdown 格式。
* `mcp_server_guide.md` - 综合指南,介绍如何将此 MCP 服务器与各种 LLM 代理和客户端集成,包括 Claude Desktop、Goose、Continue 等的配置示例。包括代理内存管理的最佳实践。
连接信息
猜你喜欢
MarkItDown
将文件和办公文档转换为Markdown的Python工具。
Whisper 语音识别
OpenAI Whisper MCP Server - 基于本地 Whisper CLI 的离线语音识别与翻译,无需 API Key,支持...
claude-flow
Claude-Flow v2.7.0 是一个企业级AI编排平台。
oh-my-opencode
背景代理 · 精心挑选的代理,如 oracle、librarians、frontend engineer · 预构建工具,如 LSP/AST ·...
ai-engineering-from-scratch
学习它。构建它。交付给他人。最全面的开源AI工程课程:200多节课程,内容涵盖从线性代数到自主代理集群,支持Python、TypeScript、Rust和Julia。
hyperframes
编写HTML。渲染视频。为代理而建。