拱顶树
一个MCP服务器,让Claude Code在不运行黑曜石的情况下深入了解黑曜石库——维基链接、frontmatter、反向链接图。
组件
- 拱顶树核心:用于vault解析的Rust库
- 拱顶树mcp:独立MCP服务器(stdio)
- 拱顶树是:用于浏览器/插件的WASM绑定
- lib组织者:具有CLI和全文搜索功能的文档库管理器
- 插件:带有嵌入式WASM和MCP服务器的黑曜石插件
快速开始
独立二进制
cargo build --release -p vault-tree-mcp
cp ./target/release/vault-tree-mcp ~/.local/bin/添加到您的Claude Code MCP配置中:
{
"mcpServers": {
"vault-tree": {
"command": "vault-tree-mcp"
}
}
}黑曜石插件
构建WASM模块:
cd crates/wasm && wasm-pack build --target web --out-dir ../../plugin/wasm构建插件:
cd plugin && npm install && npm run build复制 plugin/ 内容到 .obsidian/plugins/vault-tree/ 并在黑曜石设置中启用。
该插件在端口22365(Claude Code CLI的WebSocket)和22366(Claude Desktop的HTTP)上运行MCP服务器。
工具
知识提供者
从自由和开源软件知识库中查找外部信息:
| 提供者 | 类型 | 数据 |
|---|---|---|
wikipedia | 百科全书 | 文章、摘要 |
dbpedia | 结构化数据 | 维基百科作为链接数据 |
wikidata | 知识图 | 实体、关系、QID |
github | 代码 | repo、用户、星号(令牌可选) |
sourceforge | 代码 | 项目,下载 |
npm | 包 | Node.js包,版本 |
crates.io | 软件包 | 铁锈板条箱,下载 |
stackoverflow | 问答 | 问题、答案、标签 |
reddit | 社交 | 帖子、子版块、分数 |
openlibrary | 书籍 | 作者、作品、ISBN |
arxiv | 学术论文、作者、摘要 | |
musicbrainz | 音乐 | 艺术家、专辑、曲目 |
wikiart | 艺术 | 艺术家、绘画 |
defillama | DeFi/加密 | 协议、TVL、链 |
shodan | 安全 | IP、端口、漏洞(需要API密钥) |
环境变量:
GITHUB_TOKEN-GitHub PAT适用于更高的速率限制(5000/hr vs 60/hr)SHODAN_API_KEY-Shodan提供商需要
{
"name": "knowledge_lookup",
"arguments": {
"query": "Functional programming",
"provider": "wikipedia"
}
}AI链接建议
使用本地(Ollama)或云(OpenAI/OpenRouter)LLM建议内部链接:
{
"name": "suggest_links",
"arguments": {
"file_path": "path/to/note.md",
"apply": true
}
}批处理
处理整个文件夹:
{
"name": "batch_suggest_links",
"arguments": {
"folder_path": "Writing",
"apply": true
}
}笔记生成
通过知识查找创建笔记:
{
"name": "create_note",
"arguments": {
"query": "Uniswap",
"provider": "defillama"
}
}拱形树
生成vault的带注释树:
{
"vault_path": "/path/to/vault",
"depth": 3
}输出设计为令牌高效:
Writing/
|-- building-droo-foo.md [elixir,phoenix] 2025-01-18 7
|-- the-agalma.md [philosophy] 2025-11-14 2
`-- drafts/
`-- obsidian-plugin.md [draft] 0
3 notes, 2 directories标签和日期来自frontmatter。 N 是传出链接。
vault_search
正则表达式搜索所有markdown文件:
{
"vault_path": "/path/to/vault",
"pattern": "TODO",
"case_insensitive": true,
"max_results": 50
}库工具
管理文档库(PDF、EPUB、DJVU、MOBI):
| 工具 | 说明 |
|---|---|
lib_init | 使用git跟踪初始化新库 |
lib_scan | 扫描目录中的文档 |
lib_duplicates | 通过BLAKE3哈希查找重复文件 |
lib_classify | 从文件名获取主题建议 |
lib_ingest | 使用自动分类将文件添加到库中 |
lib_search | 搜索库元数据 |
lib_pdf_search | PDF/EPUB内容全文搜索(Tantivy) |
lib_status | 显示库统计信息 |
secrets_scan | 检测敏感文件(密钥、凭据) |
lib组织者CLI
lib-organizer init ~/library # Create library
lib-organizer scan -d ~/Downloads # Find documents
lib-organizer ingest -l ~/library *.pdf # Add to library
lib-organizer search -l ~/library "rust" # Search metadata
lib-organizer search -l ~/library --fulltext "ownership" # Full-text search
lib-organizer secrets ~/projects --strict # Scan for secrets
lib-organizer completions zsh # Generate shell completions插件命令
- 将vault树复制到剪贴板
- 在光标处插入vault树 (作为代码块)
- 在模态中显示vault树
建筑
cargo build --release # all Rust crates
cargo test # run tests
# WASM
cd crates/wasm && wasm-pack build --target web --out-dir ../../plugin/wasm
# Plugin
cd plugin && npm run build测试MCP服务器
# Initialize
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | ./target/release/vault-tree-mcp
# List tools
echo '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}' | ./target/release/vault-tree-mcp
# Generate tree
echo '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"vault_tree","arguments":{"vault_path":"/path/to/vault"}}}' | ./target/release/vault-tree-mcp结构
vault-tree/
├── Cargo.toml # Workspace root
├── crates/
│ ├── core/ # Vault parsing library
│ ├── mcp/ # MCP server
│ ├── lib-organizer/ # Document library + CLI
│ │ └── src/
│ │ ├── cli.rs # Binary entry point
│ │ ├── scanner.rs # File discovery
│ │ ├── classifier.rs
│ │ ├── organizer.rs
│ │ ├── search/ # Tantivy full-text search
│ │ └── secrets.rs
│ └── wasm/ # WASM bindings
├── plugin/ # Obsidian plugin
└── README.md许可证
麻省理工学院
