
该项目提供了一个模型上下文协议(MCP)服务器,该服务器暴露了与Obsidian保险库交互的工具。
允许MCP客户端(如AI助手):
克隆仓库(如果尚未进行):
# git clone <repository-url>
# cd OMCP
导航到项目目录:
cd /path/to/your/OMCP
创建Python虚拟环境(推荐以避免依赖冲突):
python -m venv .venv
激活虚拟环境:
.venv\Scripts\Activate.ps1
source .venv/bin/activate
(终端提示符现在应显示 (.venv))
安装包及其依赖项:
pip install .
此服务器使用环境变量进行配置,这些变量可以通过项目根目录中的.env文件方便地管理。
复制示例文件:
# 从项目根目录(OMCP/)
cp .env.example .env
(在Windows上,您可能需要使用 copy .env.example .env)
编辑.env文件:
使用文本编辑器打开新创建的.env文件。
设置OMCP_VAULT_PATH:这是唯一必需的变量。用您的Obsidian保险库的绝对路径更新它。即使在Windows上也使用正斜杠(/)作为路径分隔符。
OMCP_VAULT_PATH="/path/to/your/Obsidian/Vault"
查看可选设置:根据需要调整其他OMCP_变量,例如每日笔记位置、服务器端口或备份目录。阅读文件中的注释以获取解释。
(或者,您可以不使用.env文件,而是将这些变量设置为实际的系统环境变量。如果两者都设置了,服务器会优先使用系统环境变量。)
虽然像Claude Desktop这样的客户端应用程序会自动启动服务器,但您也可以从终端手动运行服务器以进行直接测试或调试。
.env文件,如配置部分所述。# 如果尚未激活
.venv\Scripts\Activate.ps1
(在Linux/macOS上使用 source .venv/bin/activate)(.venv) ...> python obsidian_mcp_server/main.py
服务器将启动,并打印其监听的地址(例如,http://127.0.0.1:8001)。通常,在完成测试后按Ctrl+C停止它。
记住:如果您打算使用Claude Desktop或其他启动器使用此服务器,请不要像这样手动运行它。相反,请配置客户端应用程序(参见下一节),它将处理启动和停止服务器进程。
许多MCP客户端(如Claude Desktop)可以直接启动服务器进程。要配置此类客户端,通常需要编辑其JSON配置文件(例如,macOS/Linux上的claude_desktop_config.json,在Windows上找到等效路径,位于AppData下)。
⚠️ 重要的JSON格式规则:
//或/* */注释)")正确引用\\)以下是在客户端JSON配置文件的mcpServers键下添加的一个示例条目:
{
"mcpServers": {
"obsidian_vault": {
"command": "C:\\path\\to\\your\\project\\OMCP\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\your\\project\\OMCP\\obsidian_mcp_server\\main.py"],
"env": {
"OMCP_VAULT_PATH": "C:/path/to/your/Obsidian/Vault",
"OMCP_DAILY_NOTE_LOCATION": "Journal/Daily"
}
}
}
}
关键点:
command和args字段中的Windows路径:
\\)作为路径分隔符.exe扩展名env块中的Windows路径:
/)以获得更好的兼容性.exe扩展名command路径必须指向您创建的.venv内的python.exe可执行文件args路径必须指向obsidian_mcp_server子文件夹内的main.py文件env块是确保服务器能够找到您的保险库路径的最可靠方法常见的错误要避免:
list_folderslist_notesget_note_contentget_note_metadataget_outgoing_linksget_backlinksget_all_tagssearch_notes_contentsearch_notes_metadatasearch_folderscreate_noteedit_noteappend_to_noteupdate_note_metadatadelete_noteget_daily_note_pathcreate_daily_noteappend_to_daily_note对于详细的分阶段实施计划,包括错误处理考虑,请参阅ROADMAP.md文件。
此项目正在积极开发中。以下是计划的功能:
v1.x(近期)
OMCP_TEMPLATE_DIR)。create_note_from_template工具(使用模板名称、目标路径、可选元数据)。create_folder实用函数。create_folderMCP工具。v1.y(中期/未来改进)
{{DATE}})。list_templates工具。append_to_note_by_metadata)。list_vault_structure工具,用于全面的保险库层次结构视图。v2.x+(潜在想法/长期)
move_item(source, destination)(初始版本可能不会更新链接)。rename_item(path, new_name)(初始版本可能不会更新链接)。replace_text_in_note(path, old, new, count)。prepend_to_note(path, content)。append_to_section(path, heading, content)(需要可靠的标题解析)。get_local_graph(path)(结合外链/反向链接)。search_notes_by_metadata_field(key, value)。execute_dataview_query(query_type, query) - 运行Dataview查询并获取结构化结果search_by_dataview_field(field, value) - 根据Dataview字段搜索笔记query_tasks(status, due_date, tags) - 在整个保险库中搜索和过滤任务get_kanban_data(board_path) - 获取结构化的看板数据get_calendar_events(start_date, end_date) - 查询日历事件和任务Q: 我的服务器找不到我的保险库。出了什么问题? A: 这通常是由于路径配置不正确。检查:
.env文件中的OMCP_VAULT_PATH使用正斜杠(/),即使在Windows上也是如此Q: 为什么我会遇到权限错误? A: 这通常发生在:
尝试:
Q: 我的AI客户端无法连接到服务器。我应该检查什么? A: 验证这些常见问题:
Q: 为什么我会收到“连接被拒绝”错误? A: 这通常意味着:
尝试:
netstat -ano | findstr :8001(Windows).env中的OMCP_SERVER_PORT使用不同的端口Q: 我收到了“[error] [obsidian_vault] 不期望的标记'S','Starting O'...不是有效的JSON”。出了什么问题? A: 此错误发生在客户端的JSON配置文件格式不正确时。常见的原因:
检查您的客户端配置文件(例如claude_desktop_config.json):
"C:\\path\\to\\file"Windows路径格式的正确示例:
{
"mcpServers": {
"obsidian_vault": {
"command": "C:\\path\\to\\your\\project\\OMCP\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\your\\project\\OMCP\\obsidian_mcp_server\\main.py"]
}
}
}
Q: 我收到了超时错误和“服务器断开连接”的消息。发生了什么? A: 这种错误模式(初始化成功,然后在60秒后超时)通常意味着:
按顺序尝试以下步骤:
检查运行的服务器进程:
# 在Windows上
netstat -ano | findstr :8001
# 查找PID,然后:
taskkill /F /PID <PID>
# 在Linux/macOS上
lsof -i :8001
# 查找PID,然后:
kill -9 <PID>
检查其他应用程序是否使用该端口:
.env中的端口:
OMCP_SERVER_PORT=8002
验证服务器进程:
检查系统资源:
重置一切:
.env文件并从.env.example创建一个新的如果尝试了所有这些步骤后问题仍然存在,请分享:
netstat -ano | findstr :8001(Windows)或lsof -i :8001(Linux/macOS)的输出Q: 服务器立即断开连接,显示“服务器传输意外关闭...进程提前退出”。出了什么问题? A: 这个错误意味着Python服务器进程几乎在被客户端启动后立即崩溃。这不是超时;服务器脚本本身未能运行或保持运行。
常见原因:
command没有指向.venv内的正确python.exe。args没有指向正确的obsidian_mcp_server/main.py脚本。\\)。.venv中未安装requirements.txt中的必需包。.env文件。OMCP_VAULT_PATH无效或不可访问。故障排除步骤:
command和args的绝对路径。使用转义的反斜杠(\\)对Windows路径。# 在Windows上
.\.venv\Scripts\activate
# 在Linux/macOS上
source .venv/bin/activate
python obsidian_mcp_server/main.py
ImportError、SyntaxError、FileNotFoundError)。pip check和pip install -r requirements.txt。.env和保险库路径: 确保.env存在、可读且OMCP_VAULT_PATH正确(使用正斜杠/)。Q: 为什么我不能在某些文件夹中创建/编辑笔记? A: 这可能是由于: