一个全面的Obsidian MCP服务器,包含45个工具,覆盖混合文件系统原生和API基础架构。扩展了obsidian-mcp,增加了高级插件控制、反向链接、标签管理和分析功能。
注意:此项目扩展了基础的
obsidian-mcp服务器。原始的README被保留为README.upstream.md。
文件系统原生工具(33个工具) - 完全离线工作,无需Obsidian:
API基础工具(12个工具) - 当Obsidian运行时增强的功能:
get_backlinks_fs - 查找所有链接到特定笔记的笔记get_broken_links_fs - 识别保险库中的损坏链接analyze_note_tags_fs - 提取前言和内联标签add_tag_fs - 向笔记前言添加标签remove_tag_fs - 从前言中移除标签search_by_tag_fs - 通过标签查找笔记insert_after_heading_fs - 在特定标题后插入内容insert_after_block_fs - 在块引用后插入内容update_frontmatter_field_fs - 更新/添加前言字段append_to_note_fs - 在笔记末尾追加内容note_statistics_fs - 个别笔记的综合统计信息vault_statistics_fs - 聚合保险库统计信息search_tasks - 使用表情元数据搜索任务(📅⏫🔁✅)create_task - 创建带有元数据的任务toggle_task_status - 切换完成/未完成状态update_task_metadata - 更新截止日期、优先级和重复性get_task_statistics - 任务完成情况分析extract_dataview_fields - 解析所有语法变体(::, [], ())search_by_dataview_field - 通过字段值查找笔记add_dataview_field - 添加内联字段remove_dataview_field - 移除内联字段parse_kanban_board - 解析markdown看板结构add_kanban_card - 向列中添加卡片move_kanban_card - 在列之间移动卡片toggle_kanban_card - 切换卡片完成状态get_kanban_statistics - 看板分析get_link_graph - 完整的保险库链接图find_orphaned_notes - 识别孤立的笔记find_hub_notes - 寻找高度连接的笔记analyze_link_health - 保险库连接度量get_note_connections - 多级连接探索parse_canvas - 解析JSON画布v1.0文件add_canvas_node - 添加文本/文件节点add_canvas_edge - 用边连接节点remove_canvas_node - 删除节点get_canvas_node_connections - 分析节点关系expand_template - 简单的{{变量}}扩展create_note_from_template_fs - 离线应用模板list_templates - 浏览可用模板execute_dataview_query - 执行完整的DQL查询(LIST/TABLE/TASK)list_notes_by_tag_dql - 基于标签的DQL查询list_notes_by_folder_dql - 基于文件夹的DQL查询table_query_dql - 创建表格数据视图render_templater_template - 动态模板渲染create_note_from_template_api - 从模板器模板创建笔记insert_templater_template - 在光标处插入模板get_active_file - 获取当前活动文件open_file - 在Obsidian中打开文件close_active_file - 关闭当前文件navigate_back - 在历史记录中向后导航navigate_forward - 在历史记录中向前导航toggle_edit_mode - 切换编辑/预览模式execute_command - 运行Obsidian命令list_commands - 列出所有可用命令search_commands - 通过名称/ID搜索命令# 需要Python 3.11+
python --version
# 安装uv(推荐的包管理器)
curl -LsSf https://astral.sh/uv/install.sh | sh
# 克隆仓库
git clone https://github.com/aleksakarac/obsidian-mcp.git
cd obsidian-mcp
# 使用uv安装(推荐)
uv pip install .
# 或使用pip
pip install .
在Claude Code配置中添加(~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": [
"--directory",
"/绝对路径/to/obsidian-mcp",
"run",
"obsidian-mcp"
],
"env": {
"OBSIDIAN_VAULT_PATH": "/路径/to/你的/obsidian/保险库"
}
}
}
}
在Obsidian中安装本地REST API插件
配置插件设置:
更新Claude Code配置:
{
"mcpServers": {
"obsidian": {
"command": "uv",
"args": [
"--directory",
"/绝对路径/to/obsidian-mcp",
"run",
"obsidian-mcp"
],
"env": {
"OBSIDIAN_VAULT_PATH": "/路径/to/你的/obsidian/保险库",
"OBSIDIAN_REST_API_KEY": "你的-api-key-这里",
"OBSIDIAN_API_URL": "http://localhost:22714"
}
}
}
}
# 搜索高优先级未完成任务
search_tasks(
status="未完成",
priority="高",
sort_by="截止日期",
limit=10
)
# 创建带有元数据的任务
create_task(
file_path="项目/当前.md",
content="审查PR #123",
priority="高",
due_date="2025-11-01",
tags=["代码审查", "紧急"]
)
# 提取所有内联字段
extract_dataview_fields(file_path="项目笔记.md")
# 查找状态=活跃的笔记
search_by_dataview_field(
field_name="状态",
field_value="活跃"
)
# 解析看板结构
parse_kanban_board(file_path="看板/冲刺.md")
# 在列之间移动卡片
move_kanban_card(
file_path="看板/冲刺.md",
card_text="实现身份验证",
from_column="待办事项",
to_column="进行中"
)
# 查找孤立的笔记
find_orphaned_notes()
# 获取链接图
get_link_graph()
# 分析保险库健康状况
analyze_link_health()
# 执行DQL查询
execute_dataview_query(
query="TABLE 状态, 截止日期 FROM #项目 WHERE 状态 = '活跃'"
)
# 打开文件
open_file(file_path="日常/2025-10-22.md")
# 获取活动文件
get_active_file()
# 执行命令
execute_command(command_id="编辑器:切换粗体")
文件系统优先方法:
API增强:
文件系统工具:
API工具:
参见TESTING.md获取详细的测试文档。
# 运行所有测试
uv run pytest
# 运行特定测试套件
uv run pytest tests/unit/test_tasks.py -v
# 运行并生成覆盖率报告
uv run pytest --cov=src --cov-report=html
obsidian-mcp/
├── src/
│ ├── models/ # Pydantic数据模型
│ ├── tools/ # MCP工具实现
│ ├── utils/ # 共享实用程序(模式,API客户端)
│ └── server.py # FastMCP服务器及工具注册
├── tests/
│ ├── unit/ # 工具单元测试
│ └── integration/ # 端到端工作流测试
├── specs/ # 特性规范
└── pyproject.toml # 项目配置
src/tools/中创建工具模块src/models/obsidian.py中添加Pydantic模型src/server.py中使用@mcp.tool()装饰器注册工具tests/unit/中添加单元测试欢迎贡献!请:
MIT许可证 - 详情见LICENSE