黑曜石cli-mcp
MCP服务器 黑曜石CLI 具有明确的运行时配置文件,供受管和个人使用。默认配置文件为 governed-readonly; governed-mutation 在读取表面之上添加有界模板和升级工作流,而广泛的遗留表面仅通过显式 personal-unrestricted 轮廓。
需求
- 黑曜石 桌面应用程序正在运行(macOS、Linux、Windows)
- 黑曜石CLI 安装:
- macOS/Linux(通过Homebrew):
brew install obsidianmd/tap/obsidian
- 窗口:请参见 黑曜石CLI发布
- Node.js 22+
平台说明: 在macOS上进行了全面测试。Linux是通过相同的Homebrew水龙头(Linuxbrew)支持的。Windows支持未经测试--环境变量注入(HOME/TMPDIR)可能表现不同;欢迎捐款。
安装
无需安装--直接使用运行 npx:
npx -y @joemugen/obsidian-cli-mcp
或全局安装:
npm install -g @joemugen/obsidian-cli-mcp
配置
| 变量 |
描述 |
默认值 |
OBSIDIAN_BIN |
Obsidian CLI二进制文件的路径 |
obsidian |
OBSIDIAN_VAULT |
默认固定保险库名称 |
在受管配置文件中是必需的;可选 personal-unrestricted |
OBSIDIAN_VAULT_ROOT |
固定保险库的规范文件系统根 |
在受管配置文件中是必需的 |
OBSIDIAN_POLICY_FILE |
JSON vault策略文件 |
受管配置文件中需要 |
MCP_PROFILE |
governed-readonly, governed-mutation,或 personal-unrestricted |
governed-readonly |
MCP_TRANSPORT |
stdio 或 http |
stdio |
MCP_PORT |
HTTP端口(当 MCP_TRANSPORT=http) |
3000 |
MCP_HTTP_HOST |
HTTP绑定主机(当 MCP_TRANSPORT=http) |
127.0.0.1 |
MCP_HTTP_AUTH_TOKEN |
HTTP身份验证的共享承载令牌 |
受管HTTP和任何远程HTTP绑定都需要 |
MCP_HTTP_ALLOW_REMOTE_BIND |
显式远程绑定选择加入(true) |
默认情况下禁用 |
重要信息(macOS): 始终指向 OBSIDIAN_BIN 到Homebrew二进制文件($(brew --prefix)/bin/obsidian).Homebrew二进制文件正确地将stdout刷新到管道;普通的应用程序包符号链接则不会。
档案
governed-readonly
- 安全默认值。
- 注册精确的路径注释/属性读取以及策略过滤的受管发现(
obsidian_search, obsidian_search_context,过滤链接,过滤反向链接)。
- 需要
OBSIDIAN_VAULT, OBSIDIAN_VAULT_ROOT,以及 OBSIDIAN_POLICY_FILE.
- 禁用每次呼叫保险库覆盖。
governed-mutation
- 在上面添加精确的路径变异表面以及受控模板和升级助手
governed-readonly.
- 允许精确的路径注释/属性编辑和受管理的工作流工具:
obsidian_create_note_from_template, obsidian_create_review_note, obsidian_create_promotion_candidate, obsidian_create_curated_note,以及 obsidian_log_promotion.
- 块重命名、移动、删除、任务切换、将模板插入活动笔记、每日突变、插件/主题/代码段突变、运行时状态突变和执行/评估表面。
- 需要与相同的固定保险库和策略输入
governed-readonly.
personal-unrestricted
- 完整遗留界面的兼容性配置文件,包括变异和面向开发人员的工具。
- 不是默认值。
- 用于受控的个人使用,而非受控的部署。
受监管的保险库政策
受控配置文件在调用Obsidian CLI之前强制执行真实路径策略:
- 仅限精确路径注释/属性操作
- 仅在配置内部进行有界发现
discoveryAllowlist 根
- 已批准的模板仅在配置内部读取
templateAllowlist 根
- 审核笔记、促销候选人、策划目的地和促销日志的工作流路由
- 默认拒绝配置的写入分配列表之外的写入
- 明确的丹尼支持
- 隐藏的路径和
.obsidian/** 默认拒绝
- 针对固定路径的规范化
OBSIDIAN_VAULT_ROOT
- 可选符号链接遍历拒绝
看 examples/governed-vault-policy.example.json 以保守的第二个大脑为例。
客户端设置
克劳德桌面
编辑操作系统的配置文件:
| 操作系统 |
路径 |
| macOS |
~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux |
~/.config/Claude/claude_desktop_config.json |
| 窗户 |
%APPDATA%\Claude\claude_desktop_config.json |
{
"mcpServers": {
"obsidian-cli": {
"command": "npx",
"args": ["-y", "@joemugen/obsidian-cli-mcp"],
"env": {
"MCP_PROFILE": "governed-readonly",
"OBSIDIAN_BIN": "/opt/homebrew/bin/obsidian",
"OBSIDIAN_VAULT": "MyVault",
"OBSIDIAN_VAULT_ROOT": "/path/to/MyVault",
"OBSIDIAN_POLICY_FILE": "/path/to/governed-vault-policy.json"
}
}
}
}
保存后重新启动Claude Desktop。
克劳德代码
添加到您的项目 .mcp.json (或 ~/.claude/mcp.json 全球):
{
"mcpServers": {
"obsidian-cli": {
"command": "npx",
"args": ["-y", "@joemugen/obsidian-cli-mcp"],
"env": {
"MCP_PROFILE": "governed-readonly",
"OBSIDIAN_BIN": "/opt/homebrew/bin/obsidian",
"OBSIDIAN_VAULT": "MyVault",
"OBSIDIAN_VAULT_ROOT": "/path/to/MyVault",
"OBSIDIAN_POLICY_FILE": "/path/to/governed-vault-policy.json"
}
}
}
}
或者直接从CLI添加:
claude mcp add obsidian-cli --transport stdio \
-e MCP_PROFILE=governed-readonly \
-e OBSIDIAN_BIN=/opt/homebrew/bin/obsidian \
-e OBSIDIAN_VAULT=MyVault \
-e OBSIDIAN_VAULT_ROOT=/path/to/MyVault \
-e OBSIDIAN_POLICY_FILE=/path/to/governed-vault-policy.json \
-- npx -y @joemugen/obsidian-cli-mcp
光标
编辑 ~/.cursor/mcp.json:
{
"mcpServers": {
"obsidian-cli": {
"command": "npx",
"args": ["-y", "@joemugen/obsidian-cli-mcp"],
"env": {
"MCP_PROFILE": "governed-readonly",
"OBSIDIAN_BIN": "/opt/homebrew/bin/obsidian",
"OBSIDIAN_VAULT": "MyVault",
"OBSIDIAN_VAULT_ROOT": "/path/to/MyVault",
"OBSIDIAN_POLICY_FILE": "/path/to/governed-vault-policy.json"
}
}
}
}
泽德
编辑 ~/.config/zed/settings.json:
{
"context_servers": {
"obsidian-cli": {
"command": {
"path": "npx",
"args": ["-y", "@joemugen/obsidian-cli-mcp"],
"env": {
"MCP_PROFILE": "governed-readonly",
"OBSIDIAN_BIN": "/opt/homebrew/bin/obsidian",
"OBSIDIAN_VAULT": "MyVault",
"OBSIDIAN_VAULT_ROOT": "/path/to/MyVault",
"OBSIDIAN_POLICY_FILE": "/path/to/governed-vault-policy.json"
}
}
}
}
}
HTTP传输(网络/多客户端)
MCP_PROFILE=governed-readonly MCP_TRANSPORT=http MCP_PORT=3000 \
MCP_HTTP_HOST=127.0.0.1 \
MCP_HTTP_AUTH_TOKEN=change-me \
OBSIDIAN_BIN=/opt/homebrew/bin/obsidian \
OBSIDIAN_VAULT=MyVault \
OBSIDIAN_VAULT_ROOT=/path/to/MyVault \
OBSIDIAN_POLICY_FILE=/path/to/governed-vault-policy.json \
node dist/index.js
服务器在以下位置公开了一个可流式传输的HTTP端点 http://localhost:3000/mcp.
HTTP传输仍然是选择加入,不是默认部署路径。第2阶段硬化被故意限制:
- 环回(
127.0.0.1)保持默认绑定
- 受控HTTP要求
MCP_HTTP_AUTH_TOKEN
- 非环回绑定需要
MCP_HTTP_ALLOW_REMOTE_BIND=true
- 没有显式opt-in的远程绑定失败关闭
- 这是受控使用,而不是互联网安全部署模型
工具
默认值 governed-readonly 配置文件仅注册有界的受控读取和发现表面。 governed-mutation 添加了精确的路径注释/属性变异工具以及下面列出的受管工作流工具。完整的旧版工具目录仅在以下情况下可用 MCP_PROFILE=personal-unrestricted 已明确设置。
受控工作流工具
| 工具 |
说明 |
obsidian_search |
仅在策略批准的发现根内使用服务器端结果过滤进行搜索 |
obsidian_search_context |
在策略批准的发现根中使用有界上下文进行搜索 |
obsidian_list_links |
列出允许注释中的传出链接,过滤服务器端被阻止的目标 |
obsidian_list_backlinks |
列出允许注释的反向链接,在服务器端过滤被阻止的源 |
obsidian_create_note_from_template |
将已批准的受管理模板类型中的注释创建到已批准的目标中 |
obsidian_create_review_note |
为已批准的源注释创建来源保留审查注释 |
obsidian_create_promotion_candidate |
为已批准的来源说明创建保存来源的晋升候选人说明 |
obsidian_create_curated_note |
从批准的模板类型创建策划的笔记到批准的策划区域 |
obsidian_log_promotion |
创建一个促销日志,将来源和策划的笔记链接起来 |
备注
| 工具 |
说明 |
obsidian_read_note |
按名称或路径阅读笔记 |
obsidian_create_note |
创建新笔记 |
obsidian_delete_note |
删除注释 |
obsidian_move_note |
将笔记移动到另一个文件夹 |
obsidian_rename_note |
重命名笔记(更新所有反向链接) |
obsidian_append_note |
将内容附加到注释中 |
obsidian_prepend_note |
将内容预先添加到注释中 |
obsidian_outline |
获取笔记的标题大纲 |
obsidian_wordcount |
获取单词和字符数 |
obsidian_file_info |
获取文件元数据(路径、大小、日期…) |
obsidian_diff |
比较笔记的两个版本 |
obsidian_eval |
在Obsidian上下文中执行JavaScript |
金库
| 工具 |
说明 |
obsidian_vault_info |
显示vault名称、路径和文件数 |
obsidian_list_files |
列出文件,可选择按文件夹或扩展名筛选 |
obsidian_list_folders |
列出所有文件夹 |
obsidian_list_vaults |
列出所有黑曜石拱顶 |
obsidian_version |
获取Obsidian和CLI版本 |
obsidian_list_recents |
列出最近打开的文件 |
obsidian_random_read |
从保险库或文件夹中读取随机笔记 |
obsidian_list_aliases |
列出frontmatter中定义的所有注释别名 |
搜索
| 工具 |
说明 |
obsidian_search |
在所有笔记中进行全文搜索 |
obsidian_search_context |
使用周围环境进行搜索 |
前言
| 工具 |
说明 |
obsidian_list_properties |
在注释中列出所有frontmatter属性 |
obsidian_get_property |
获取特定的属性值 |
obsidian_set_property |
设置属性值 |
obsidian_remove_property |
删除属性 |
标签
| 工具 |
说明 |
obsidian_list_tags |
列出vault或注释中的所有标记 |
obsidian_get_tag |
获取使用特定标签的笔记 |
链接
| 工具 |
说明 |
obsidian_list_links |
列出笔记中的传出链接 |
obsidian_list_backlinks |
列出指向笔记的传入链接 |
obsidian_list_orphans |
列出没有传入链接的笔记 |
obsidian_list_deadends |
仅列出带有传出链接的笔记 |
obsidian_list_unresolved |
列出损坏的维基链接 |
每日笔记
| 工具 |
说明 |
obsidian_read_daily |
阅读今天的每日简报 |
obsidian_append_daily |
将内容添加到今天的每日笔记中 |
obsidian_prepend_daily |
为今天的每日笔记预置内容 |
任务
| 工具 |
说明 |
obsidian_list_tasks |
在笔记或vault范围内列出任务 |
obsidian_toggle_task |
切换任务复选框 |
模板
| 工具 |
说明 |
obsidian_list_templates |
列出可用模板 |
obsidian_read_template |
读取模板,可选择解析变量 |
obsidian_insert_template |
在活动笔记中插入模板 |
书签
| 工具 |
说明 |
obsidian_list_bookmarks |
列出所有书签(笔记、文件夹、搜索、URL) |
obsidian_add_bookmark |
添加书签 |
插件
| 工具 |
说明 |
obsidian_list_plugins |
列出所有已安装的插件 |
obsidian_list_plugins_enabled |
仅列出已启用的插件 |
obsidian_get_plugin |
获取插件信息 |
obsidian_enable_plugin |
启用插件 |
obsidian_disable_plugin |
禁用插件 |
obsidian_install_plugin |
安装社区插件 |
obsidian_uninstall_plugin |
卸载插件 |
历史 (需要文件恢复插件)
| 工具 |
说明 |
obsidian_history_list |
列出所有跟踪的版本 |
obsidian_history_read |
阅读笔记的特定版本 |
obsidian_history_restore |
将笔记还原到以前的版本 |
同步 (需要黑曜石同步)
| 工具 |
说明 |
obsidian_sync_status |
获取当前同步状态 |
obsidian_sync_history |
列出文件的同步版本 |
obsidian_sync_read |
读取特定的同步版本 |
obsidian_sync_restore |
将文件还原为同步版本 |
obsidian_sync_deleted |
列出从同步历史记录中删除的文件 |
工作区
| 工具 |
说明 |
obsidian_workspace |
获取当前工作区布局并打开窗格 |
obsidian_list_tabs |
列出当前打开的所有选项卡 |
obsidian_daily_path |
获取今天日记的文件路径 |
命令和热键
| 工具 |
说明 |
obsidian_list_commands |
列出所有可用命令(命令选项板) |
obsidian_execute_command |
按ID执行黑曜石命令 |
obsidian_list_hotkeys |
列出所有已配置的键盘快捷键 |
obsidian_get_hotkey |
获取特定命令的热键 |
主题
| 工具 |
说明 |
obsidian_list_themes |
列出所有已安装的主题 |
obsidian_get_theme |
获取特定主题的信息 |
obsidian_set_theme |
激活主题(或重置为默认值) |
obsidian_install_theme |
安装社区主题 |
obsidian_uninstall_theme |
卸载主题 |
代码片段
| 工具 |
说明 |
obsidian_list_snippets |
列出所有已安装的CSS代码段 |
obsidian_list_snippets_enabled |
仅列出已启用的CSS代码段 |
obsidian_enable_snippet |
启用CSS代码段 |
obsidian_disable_snippet |
禁用CSS代码段 |
基础 (需要黑曜石基础插件)
| 工具 |
说明 |
obsidian_list_bases |
列出所有基本文件 |
obsidian_query_base |
从基础查询项目 |
obsidian_list_base_views |
在Base中列出视图 |
obsidian_create_base_item |
在Base中创建项目 |
贡献
看 贡献.md 了解架构概述、设计决策以及如何添加新工具。
许可证
看 许可证.