By ataersoy
Read/write subagents for an Obsidian vault, backed by a local Obsidian REST API MCP server. Ships vault-reader (read-only) and vault-writer (append/patch, no delete) plus the obsidian MCP server.
Read-only retrieval agent for the user's Obsidian vault (via the obsidian MCP server). Use to look up, search, list, or fetch notes from the vault — e.g. pulling project notes into a manuscript, finding where a topic is discussed, or reading existing notes. Operates on whatever vault folder (the "scope") the caller names in the task prompt; if no scope is given, it searches the whole vault. Cannot modify the vault (no write tools).
Write-capable agent for the user's Obsidian vault (via the obsidian MCP server). Use to create notes, append content, or edit existing notes — e.g. saving manuscript notes or research snippets into the vault. Can append and patch; it CANNOT delete notes. Writes to whatever vault folder (the "scope") the caller names in the task prompt; if no scope is given, it asks rather than guessing. Operates autonomously: it does not ask the user to confirm writes.
Requires secrets
Needs API keys or credentials to function
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A portable Claude Code plugin that gives any workspace read/write
access to a local Obsidian vault, via the
Local REST API plugin and the
mcp-obsidian MCP server.
obsidian-vault-tools:vault-reader — read-only subagent (list / search / fetch notes).
No write tools at all.obsidian-vault-tools:vault-writer — write subagent (append + patch). Cannot delete.
Operates autonomously (does not ask before writing). Both agents take the target folder (the
"scope") from the caller's task prompt — they have no hardcoded project folder.obsidian MCP server — declared in .mcp.json, run via uvx mcp-obsidian.
The API key is read from the OBSIDIAN_API_KEY environment variable — no secret is stored in
this repo.uvx).OBSIDIAN_API_KEY (see setup)./plugin marketplace add ataersoy/obsidian-vault-tools
/plugin install obsidian-vault-tools@obsidian-vault-tools
…or add to ~/.claude/settings.json (matches the manual-config style):
{
"extraKnownMarketplaces": {
"obsidian-vault-tools": {
"source": { "source": "github", "repo": "ataersoy/obsidian-vault-tools" },
"autoUpdate": true
}
},
"enabledPlugins": { "obsidian-vault-tools@obsidian-vault-tools": true }
}
Plugins cannot ship a secret or a permission allowlist, so add both to your
~/.claude/settings.json once:
{
"env": {
"OBSIDIAN_API_KEY": "<your-obsidian-local-rest-api-key>"
},
"permissions": {
"allow": [
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_list_files_in_vault",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_list_files_in_dir",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_get_file_contents",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_batch_get_file_contents",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_simple_search",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_complex_search",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_get_periodic_note",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_get_recent_periodic_notes",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_append_content",
"mcp__plugin_obsidian-vault-tools_obsidian__obsidian_patch_content"
]
}
}
Notes:
OBSIDIAN_API_KEY can also be exported from your shell profile (~/.zshrc) instead of
settings.json — either works for the ${OBSIDIAN_API_KEY} reference in .mcp.json.delete_file is intentionally left out of the allowlist, so any deletion still prompts.Tell Claude which vault folder to work in (the scope) when delegating:
"Use
obsidian-vault-tools:vault-readerto pull my notes fromProject_Xinto this draft.""Use
obsidian-vault-tools:vault-writerto append these findings toProject_X/notes.md."
If you don't name a folder, the reader searches the whole vault and the writer asks for the target rather than guessing.
settings.json is not enough. Registering the marketplace there does not install
the plugin — run claude plugin install obsidian-vault-tools@obsidian-vault-tools (or
/plugin install …), then restart.claude plugin install fails to clone with an SSH git@github.com: Permission denied (publickey) error, point git at HTTPS for GitHub (one-time, per machine):
git config --global url."https://github.com/".insteadOf "git@github.com:"
obsidian MCP server ships inside this
plugin, its tools are exposed as mcp__plugin_obsidian-vault-tools_obsidian__obsidian_* (not
mcp__obsidian__*). The agent tools: lists and the allowlist above already use the namespaced
form — keep them in sync if you rename the plugin.npx claudepluginhub ataersoy/obsidian-vault-tools --plugin obsidian-vault-toolsUnified capability management center for Skills, Agents, and Commands.
Brand Voice transforms scattered brand materials into enforceable AI guardrails — automatically. It searches across Notion, Google Drive, Confluence, Gong, Slack, and meeting transcripts to distill your strongest brand signals into a single source of truth, then applies them to every piece of AI-generated content. The more your team creates with Claude, the more consistent your brand becomes.