graphthulhu
MCP服务器,让AI完全访问您的知识图谱。支持 Logseq 和 黑曜石 --两者都具有完全的读写支持。浏览页面、搜索块、分析链接结构、跟踪决策、管理抽认卡和编写内容——所有这些都贯穿整个 模型上下文协议.
内置Go with 官方MCP Go SDK.
为什么
您的知识图存储相互连接的页面、块和链接。但是人工智能助手看不到任何东西——他们对你的第二个大脑视而不见。
graphthulhu解决了这个问题。它通过MCP公开您的整个知识图,因此Claude(或任何MCP客户端)可以:
- 读取任何具有完整块树、解析链接、标签和属性的页面
- 在所有具有上下文结果的区块中搜索(父链+兄弟链)
- 遍历链接图,发现概念是如何连接的
- 找出知识缺口——孤立页面、死角、弱链接区域
- 通过关联组件分析发现主题集群
- 创建页面、写入块、构建层次结构、双向链接页面(Logseq)
- 使用原始DataScript/Datalog查询内置工具未涵盖的任何内容(Logseq)
- 查看带有间隔重复统计的抽认卡(Logseq)
- 探索白板及其空间连接(Logseq)
它将“告诉我关于X”变成了一个真正理解你的知识图结构的人工智能。
工具
9个类别的37个工具。大多数工作都有两个后端;有些只是Logseq(DataScript查询、闪卡、白板)。
导航
| 工具 | 后端 | 描述 |
|---|---|---|
get_page | 两者都 | 具有解析链接、标签和属性的完整递归块树 |
get_block | 两者都 | 通过带有祖先链、子代、兄弟姐妹的UUID进行阻止 |
list_pages | Both | 按命名空间、属性或标签过滤;按名称/修改/创建排序 |
get_links | 与包含它们的块的前向和后向链接 | |
get_references | Logseq | 通过以下方式引用特定块的所有块 ((uuid)) |
traverse | 通过链接图在两个页面之间查找两个 | BFS路径 |
搜索
| 工具 | 后端 | 描述 |
|---|---|---|
search | 两者都有 | 父链+兄弟上下文的全文搜索 |
query_properties | 两者 | 使用运算符(eq、contains、gt、lt)按属性值查找 |
query_datalog | Logseq | 对Logseq数据库的原始DataScript/Datalog查询 |
find_by_tag | 两者都 | 支持子标签层次结构的标签搜索 |
分析
| 工具 | 后端 | 描述 |
|---|---|---|
graph_overview | 两者 | 全局统计:页面、块、链接、最连接、命名空间 |
find_connections | 两者都有 | 直接链接、最短路径、页面之间的共享连接 |
knowledge_gaps | 两个 | 孤立页面、死角、弱链接区域 |
list_orphans | 两者 | 列出带有块数和属性状态的孤立页面名称 |
topic_clusters | 两个 | 带有轮毂标识的连接部件 |
写
| 工具 | 后端 | 描述 |
|---|---|---|
create_page | 都有 | 带有属性和初始块的新页面 |
append_blocks | 两者都 | 附加纯文本块(比uprt_blocks更简单) |
upsert_blocks | 两者都 | 使用嵌套子级进行批量创建,以实现深层层次结构 |
update_block | 两者都 | 用UUID替换块内容 |
delete_block | 两者 | 删除块和所有子项 |
move_block | Both | 在另一个块之前、之后或作为子块重新定位(支持跨页) |
link_pages | 两者 | 具有可选关系上下文的双向链接 |
delete_page | 两者 | 删除页面及其所有块 |
rename_page | 两者 | 重命名页面并更新全部 [[links]] 在图表中 |
bulk_update_properties | Both | 在一次调用中在多个页面上设置属性 |
决定
| 工具 | 后端 | 描述 |
|---|---|---|
decision_check | 两个 | 表面都是未完成、逾期和已解决的决定,具有截止日期状态 |
decision_create | Both | 创建一个DECIDE块 #decision 标签、截止日期、选项、上下文 |
decision_resolve | 两者 | 将决定标记为已完成,并注明解决日期和结果 |
decision_defer | 两者都 | 有理由推截止日期,跟踪延期次数,在3+后发出警告 |
analysis_health | 两个 | 图形连接的审计分析/策略页面(3个以上链接或有决定权) |
期刊
| 工具 | 后端 | 描述 |
|---|---|---|
journal_range | 两个 | 具有完整块树的日期范围内的条目 |
journal_search | 两者都 | 在期刊中搜索,可选择按日期过滤 |
抽认卡
| 工具 | 后端 | 描述 |
|---|---|---|
flashcard_overview | Logseq | SRS统计数据:总数、到期、新与已审查、平均重复次数 |
flashcard_due | Logseq | 卡片应易于审查,并间隔时间 |
flashcard_create | Logseq | 使用创建前/后卡 #card 标签 |
白板
| 工具 | 后端 | 描述 |
|---|---|---|
list_whiteboards | Logseq | 图中的所有白板 |
get_whiteboard | Logseq | 嵌入式页面、块引用、视觉连接 |
健康
| 工具 | 后端 | 描述 |
|---|---|---|
health | 两者 | 检查服务器状态:版本、后端、只读模式、页数 |
安装
下载二进制文件
从以下网址获取您平台的最新版本 并将其添加到您的PATH中。
去安装
go install github.com/skridlevsky/graphthulhu@latest从源代码构建
git clone https://github.com/skridlevsky/graphthulhu.git
cd graphthulhu
go build -o graphthulhu .设置:Logseq
- 在Logseq中,转到 设置→ 特性 并启用 HTTP API服务器
- 点击 API 出现在顶部工具栏中的图标
- 点击 启动服务器
- 点击 创建令牌 并复制生成的令牌——您需要它进行配置
API运行于 http://127.0.0.1:12315 默认情况下。
设置:黑曜石
无需插件或服务器。graphthulhu读取你的保险库 .md 文件直接。
您需要提供vault的路径:
graphthulhu serve --backend obsidian --vault /path/to/your/vault或者通过环境变量:
export GRAPHTHULHU_BACKEND=obsidian
export OBSIDIAN_VAULT_PATH=/path/to/your/vault
graphthulhu黑曜石后端支持完整的读写操作。它将YAML frontmatter解析为属性,从标题和索引构建块树 [[wikilinks]] 用于反向链接解析。写入使用原子临时文件重命名,每次修改后都会重建内存中的索引。文件监视(fsnotify)使索引与外部编辑保持同步。从可配置的子文件夹中检测每日笔记(默认值: daily notes).
配置
Logseq——克劳德密码
添加到MCP设置(~/.claude/claude_code_config.json 或项目级别 .claude/settings.json):
{
"mcpServers": {
"graphthulhu": {
"command": "graphthulhu",
"env": {
"LOGSEQ_API_URL": "http://127.0.0.1:12315",
"LOGSEQ_API_TOKEN": "your-token-here"
}
}
}
}Logseq--克劳德桌面
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"graphthulhu": {
"command": "graphthulhu",
"env": {
"LOGSEQ_API_URL": "http://127.0.0.1:12315",
"LOGSEQ_API_TOKEN": "your-token-here"
}
}
}
}黑曜石——克劳德密码
{
"mcpServers": {
"graphthulhu": {
"command": "graphthulhu",
"args": ["--backend", "obsidian", "--vault", "/path/to/your/vault"],
"env": {}
}
}
}黑曜石--克劳德桌面
{
"mcpServers": {
"graphthulhu": {
"command": "graphthulhu",
"args": ["--backend", "obsidian", "--vault", "/path/to/your/vault"],
"env": {}
}
}
}只读模式
要禁用所有写入操作(Logseq--Obsidian始终是只读的):
{
"mcpServers": {
"graphthulhu": {
"command": "graphthulhu",
"args": ["--read-only"],
"env": {
"LOGSEQ_API_URL": "http://127.0.0.1:12315",
"LOGSEQ_API_TOKEN": "your-token-here"
}
}
}
}版本控制警告
在使用Logseq后端启动时,graphthulhu会检查您的图目录是否受git控制。如果没有,它会向stderr打印一条警告,建议您初始化版本控制。没有它,写入操作无法撤消。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
LOGSEQ_API_URL | http://127.0.0.1:12315 | Logseq HTTP API终结点 |
LOGSEQ_API_TOKEN | (Logseq需要) | Logseq设置中的承载令牌 |
GRAPHTHULHU_BACKEND | logseq | 后端类型: logseq 或 obsidian |
OBSIDIAN_VAULT_PATH | -- | 黑曜石保险库根路径 |
建筑
main.go Entry point — backend routing, MCP server startup
cli.go CLI subcommands: journal, add, search
server.go MCP server setup — conditional tool registration
backend/backend.go Backend interface + optional capability interfaces
client/logseq.go Logseq HTTP API client with retry/backoff
vault/
vault.go Obsidian vault client — reads .md files into Backend interface
markdown.go Markdown → block tree parser (heading-based sectioning)
frontmatter.go YAML frontmatter parser
index.go Backlink index builder from [[wikilinks]]
tools/
navigate.go Page, block, links, references, BFS traversal
search.go Full-text, property, DataScript/frontmatter, tag search
analyze.go Graph overview, connections, gaps, clusters
write.go Create, update, delete, move, link operations
decision.go Decision protocol: check, create, resolve, defer, analysis health
journal.go Date range and search within journals
flashcard.go SRS overview, due cards, card creation
whiteboard.go List and inspect whiteboards
helpers.go Result formatting utilities
graph/
builder.go In-memory graph construction from any backend
algorithms.go Overview, connections, gaps, clusters, BFS
parser/content.go Regex extraction of [[links]], ((refs)), #tags, properties
types/
logseq.go Shared types with custom JSON unmarshaling
tools.go Input types for all 32 tools设计决策
- 后端接口。 所有工具程序均针对
backend.Backend不是一个具体的客户。添加新的后端意味着实现接口——不需要更改工具。 - 完整的方块树,而不是平面文本。 每次读取页面都会返回完整的嵌套层次结构,每个块上都有解析的元数据。
- 每个搜索结果的上下文。 搜索不仅返回匹配的块,还包括父链和兄弟链,以便AI了解结果所在的位置。
- 用于分析的内存图。 分析工具在内存中构建BFS、连接组件和间隙检测的完整链接图。这使得每次查询的延迟保持较低水平。
- 可选功能接口。 工具如
query_properties和find_by_tag检查后端是否实现PropertySearcher或TagSearcher在运行时,回到DataScript for Logseq。这允许Obsidian使用文件扫描,而Logseq保留其Datalog查询。 - DataScript作为逃生口。 当内置工具不覆盖查询时,
query_datalog允许您对Logseq数据库运行任意Datalog。 - 对每个块进行内容解析。 解析器提取
[[links]],((block refs)),#tags,key:: value原始块内容中的属性、任务标记和优先级。 - 黑曜石的标题块。 黑曜石标记按标题(H1-H6)划分为层次块树。块UUID通过以下方式持久化 `` HTML注释用于跨编辑的稳定性,对于没有嵌入ID的文件,具有确定性回退。
- 文件监视。 黑曜石后端使用fsnotify监视vault目录,并有选择地重新索引更改的文件,使内存中的索引与外部编辑保持同步。
发展
go build -o graphthulhu . # Build
go test ./... # Test
go vet ./... # Vet