一键导入
openclaw-skill
Read, search, create, and edit notes in your Obsidian vault via the Obsidian MCP Server plugin.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Read, search, create, and edit notes in your Obsidian vault via the Obsidian MCP Server plugin.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
| name | openclaw-skill |
| description | Read, search, create, and edit notes in your Obsidian vault via the Obsidian MCP Server plugin. |
| metadata | {"openclaw":{"requires":{"bins":["curl","jq"]}}} |
You have access to the user's Obsidian vault via the Obsidian MCP Server plugin. Use the helper script to read, search, create, and edit notes.
Environment variables:
| Variable | Required | Default | Description |
|---|---|---|---|
OBSIDIAN_MCP_TOKEN | No | — | Bearer token from Obsidian Settings > Obsidian MCP Server. Only needed if authentication is enabled. |
OBSIDIAN_MCP_PORT | No | 27123 | Server port |
OBSIDIAN_MCP_HOST | No | 127.0.0.1 | Server host |
The helper script is at: ./scripts/obsidian-mcp.sh
./scripts/obsidian-mcp.sh init
# No arguments
./scripts/obsidian-mcp.sh call describe_vault
# With arguments (pass a JSON object)
./scripts/obsidian-mcp.sh call read_note '{"path": "Notes/Meeting.md"}'
The script auto-initializes a session if none exists and re-initializes on session expiry. You generally don't need to call init manually.
./scripts/obsidian-mcp.sh tools
These tools are safe — they never modify the vault.
get_active_fileGet the content and metadata of the currently active (focused) note in Obsidian.
./scripts/obsidian-mcp.sh call get_active_file
No parameters.
read_noteRead a note by its vault-relative path.
./scripts/obsidian-mcp.sh call read_note '{"path": "Notes/Meeting.md"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path (e.g. Notes/Meeting.md) |
get_note_metadataGet frontmatter, tags, headings, and links of a note without its full content.
./scripts/obsidian-mcp.sh call get_note_metadata '{"path": "Notes/Meeting.md"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path |
get_backlinksGet incoming links (backlinks) to a note — which other notes link to it.
./scripts/obsidian-mcp.sh call get_backlinks '{"path": "Concepts/UART.md"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path |
Returns up to 50 backlinks with surrounding context (max 200 chars each).
read_attachmentRead a binary attachment. Images are returned as base64 image content (AI can see them). Non-image files return metadata only.
./scripts/obsidian-mcp.sh call read_attachment '{"path": "Attachments/diagram.png"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path to attachment |
describe_vaultGet a vault overview: name, file/folder counts, total size, file type breakdown, and tag count.
./scripts/obsidian-mcp.sh call describe_vault
No parameters.
list_folderList files and folders inside a directory.
./scripts/obsidian-mcp.sh call list_folder '{"path": "Projects/", "recursive": true, "depth": 2}'
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | No | / | Directory path |
sort_by | string | No | — | name, modified, created, or size |
sort_order | string | No | asc | asc or desc |
file_types | string[] | No | — | Filter by extension (e.g. [".md"]). Folders always included. |
recursive | boolean | No | false | List subdirectories recursively |
depth | integer | No | unlimited | Max recursion depth (only with recursive: true) |
list_all_tagsList all hashtags in the vault with usage counts.
./scripts/obsidian-mcp.sh call list_all_tags
No parameters.
list_recent_notesList the most recently modified markdown notes (newest first).
./scripts/obsidian-mcp.sh call list_recent_notes '{"count": 20}'
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
count | integer | No | 10 | Number of notes (1–50) |
search_notesFilter notes by date range, tags, and/or frontmatter fields.
./scripts/obsidian-mcp.sh call search_notes '{"tags": ["#work"], "frontmatter": {"status": "draft"}}'
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | No | ISO date (YYYY-MM-DD). Notes modified after this date. |
end_date | string | No | ISO date. Notes modified before this date. |
tags | string[] | No | Filter by tags (e.g. ["#work"]) |
frontmatter | object | No | Filter by frontmatter fields (AND logic) |
Returns up to 100 results.
search_contentFull-text or regex search across all notes with line-number snippets.
./scripts/obsidian-mcp.sh call search_content '{"query": "TODO", "folder": "Projects/"}'
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | Yes | — | Search text (case-insensitive) or regex pattern |
regex | boolean | No | false | Treat query as regex |
folder | string | No | — | Restrict to this folder |
include_metadata | boolean | No | false | Include frontmatter and tags in results |
Returns up to 50 matching files with line snippets.
list_sessionsList active MCP sessions with client info and per-session tool usage stats.
./scripts/obsidian-mcp.sh call list_sessions
No parameters.
These tools modify the vault. Use with care.
create_noteCreate a new note. Fails if a file already exists at that path. Auto-creates parent folders.
./scripts/obsidian-mcp.sh call create_note '{"path": "Notes/NewNote.md", "content": "# New Note\n\nContent here."}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path for the new note |
content | string | Yes | Note content (max 100,000 chars) |
edit_noteReplace the entire content of an existing note.
./scripts/obsidian-mcp.sh call edit_note '{"path": "Notes/Meeting.md", "content": "# Updated content"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path |
content | string | Yes | New content (max 100,000 chars) |
append_noteAppend (or prepend) text to an existing note.
./scripts/obsidian-mcp.sh call append_note '{"path": "Notes/Log.md", "content": "\n## New Entry\nDetails here."}'
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | Yes | — | Vault-relative path |
content | string | Yes | — | Text to add (max 50,000 chars) |
mode | string | No | append | append or prepend |
patch_noteFind-and-replace edit. Replaces the first occurrence of old_string with new_string.
./scripts/obsidian-mcp.sh call patch_note '{"path": "Notes/project.md", "old_string": "Status: draft", "new_string": "Status: active"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path |
old_string | string | Yes | Exact text to find (min 1 char) |
new_string | string | Yes | Replacement text (max 100,000 chars) |
Errors if zero or multiple matches are found.
rename_noteRename or move a note. Obsidian auto-updates wikilinks.
./scripts/obsidian-mcp.sh call rename_note '{"path": "Inbox/raw-idea.md", "new_path": "Projects/idea-validated.md"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Current vault-relative path |
new_path | string | Yes | New vault-relative path |
create_folderCreate a folder (with intermediate parents, like mkdir -p).
./scripts/obsidian-mcp.sh call create_folder '{"path": "Projects/NewProject/Research"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative folder path |
add_attachmentSave a base64-encoded binary file to the vault.
./scripts/obsidian-mcp.sh call add_attachment '{"filename": "diagram.png", "data": "<base64>", "folder": "Attachments"}'
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filename | string | Yes | — | Filename with extension |
data | string | Yes | — | Base64-encoded content (max 10 MB) |
folder | string | No | Obsidian default | Target folder |
append_daily_noteAppend text to today's daily note. Creates the note if it doesn't exist.
./scripts/obsidian-mcp.sh call append_daily_note '{"text": "- Met with team about Q2 roadmap"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
text | string | Yes | Text to append (max 50,000 chars) |
delete_notePermanently delete a note. This cannot be undone via the MCP server.
./scripts/obsidian-mcp.sh call delete_note '{"path": "Notes/OldNote.md"}'
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | Yes | Vault-relative path |
| Error | Meaning | Action |
|---|---|---|
| HTTP 403 | Invalid or missing token | Check OBSIDIAN_MCP_TOKEN (only if auth is enabled in Obsidian settings) |
| HTTP 404 | Session expired or server restarted | Script auto-retries with a new session |
| Connection refused | Obsidian not running or plugin disabled | Start Obsidian and enable the plugin |
| Tool error in response | Invalid parameters or access denied | Check parameters and access control rules |
describe_vault to understand the vault structure before diving into specific notes.list_folder with recursive: true to explore the folder hierarchy.search_content for full-text search and search_notes for metadata-based filtering.read_note before edit_note or patch_note to avoid overwriting content.