Obsidian分析服务器

一个基于obsidiantools Python包的MCP服务器,用于程序化分析和交互Obsidian.md知识库。

  • by mohit
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 mohit/obsidiantools-mcp-server

使用说明

黑曜石MCP服务器

一个MCP(模型上下文协议)服务器,它公开了 黑曜石醇 用于分析Obsidian.md Vault的Python包。这允许AI助手以编程方式分析黑曜石金库并与之交互。

特性

MCP服务器提供对黑曜石工具功能的全面访问:

Vault初始化和连接

  • init_vault:使用可选的子目录筛选初始化vault进行分析
  • connect_vault:构建包含可选附件的图形结构
  • gather_vault:通过可选的代码删除从笔记中收集明文内容

图分析

  • get_graph_stats:获取全面的图形统计数据(节点、边、密度、中心性)
  • 导出图形:以多种格式导出vault图(GEXF、GraphML、JSON、YAML)

元数据抽取

  • get_note_metadata:以DataFrame/JSON格式获取所有笔记的详细元数据
  • 获取媒体元数据:获取媒体文件的元数据
  • get_canvas_metadata:获取画布文件的元数据

文件管理

  • get_file_indices:按类型列出所有文件(笔记、媒体、画布)
  • get_nonexisten_files:查找指向不存在文件的断开链接
  • 获取隔离文件:查找未从任何地方链接的孤立文件

链接分析

  • 获取所有链接:按类型组织所有链接(维基链接、反向链接、嵌入、标记)
  • get_note_links:获取特定笔记的所有链接

内容提取

  • get_note_content:提取各种内容类型(源、可读、封面、标签、数学)
  • search_notes:在笔记中进行全文搜索

标签管理

  • 获取所有标签:获取所有使用频率标签
  • find_notes_by_tag:查找包含特定标签的所有笔记

帆布支架

  • get_canvas_content:获取画布文件的JSON内容

分析

  • 分析文化结构:获取全面的保险库结构分析

安装

  1. 克隆此存储库:
git clone <repository-url>
cd obsidiantools-mcp-server
  1. 安装依赖项:
pip install -r requirements.txt
  1. 使服务器可执行:
chmod +x obsidiantools_mcp_server.py

用法

作为MCP服务器

  1. 添加到您的MCP客户端配置中(例如,Claude Desktop):
{
  "mcpServers": {
    "obsidiantools": {
      "command": "python",
      "args": ["/path/to/obsidiantools_mcp_server.py"]
    }
  }
}
  1. 服务器将可供您的AI助手用于vault分析。

直接使用Python

import obsidiantools.api as otools

# Initialize and analyze a vault
vault = otools.Vault('/path/to/obsidian/vault')
vault.connect().gather()

# Get metadata
df = vault.get_note_metadata()
print(df)

# Access the graph
import networkx as nx
print(nx.info(vault.graph))

工作流示例

以下是分析黑曜石金库的典型工作流程:

  1. 初始化保管库:

    init_vault(vault_path="/path/to/vault")
    
  2. 连接以构建图形:

    connect_vault(include_attachments=true)
    
  3. 收集内容 (可选,文本分析所需):

    gather_vault(remove_code=false)
    
  4. 分析保险库:

    get_graph_stats()
    analyze_vault_structure()
    get_note_metadata(as_json=true)
    
  5. 搜索和探索:

    search_notes(query="machine learning")
    find_notes_by_tag(tag="research")
    

工具参考

初始化工具

init_vault

  • 参数:
    • vault_path (必填):黑曜石拱顶之路
    • include_subdirs (可选):要包含的子目录列表
  • 退货:成功/错误消息

connect_vault

  • 参数:
    • include_attachments (可选,默认值:false):在图形中包含附件
  • 退货:图形连接信息

gather_vault

  • 参数:
    • remove_code (可选,默认值:false):从文本中删除代码块
  • 退货:成功/错误消息

分析工具

get_graph_stats

  • 参数:无
  • 退货:带有图形度量和最相关注释的词典

分析文化结构

  • 参数:无
  • 退货:全面的保险库分析,包括计数和统计

元数据工具

get_note_metadata

  • 参数:
    • as_json (可选,默认值:true):返回JSON或DataFrame字符串
  • 退货:注意元数据,包括链接、标签和结构

搜索工具

search_notes

  • 参数:
    • query (必填):要搜索的文本
    • search_type (可选):“源”或“可读”
  • 退货:与上下文匹配的列表

find_notes_by_tag

  • 参数:
    • tag (必填):要搜索的标签(带或不带#)
  • 退货:注释名称列表

需求

  • Python 3.9或更高版本
  • 带有标记文件的黑曜石金库
  • requirements.txt中列出的所有依赖项

局限性

  • 该软件包最适合使用标准wikilink语法的保管库
  • 维基链接中的相对路径(如 [[../note]])不完全支持
  • 该图可能与Obsidian的图视图略有不同(参见 黑曜石工具维基)

故障排除

“保险库未初始化”错误

一定要打电话 init_vault 在使用其他工具之前,请先使用有效的vault路径。

“保险库未连接”错误

呼叫 connect_vault 之后 init_vault 构建图形结构。

缺少内容错误

呼叫 gather_vault 连接后启用文本搜索和内容提取。

图形导出错误

确保您拥有输出路径和所需库的写入权限(例如,用于YAML导出的PyYAML)。

许可证

此MCP服务器遵循黑曜石工具包的许可(修改后的BSD 3条款)。

贡献

欢迎投稿!请随时提交问题或拉取请求。

致谢

此MCP服务器建立在优秀的 黑曜石醇 Mark Farragher的包裹