duckuments-mcp
Provides tools to commit already-staged files with the user's git identity, without pushing or adding co-authors.
Allows reading and writing files in an Obsidian vault, including fetching notes by path, listing notes, searching, updating or patching note content under headings, and accessing the currently open note.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@duckuments-mcp summarize my active note"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
duckuments-mcp
A personal Model Context Protocol server that lets code agents (Claude Code, etc.) read and write your Obsidian vault, plus a few personal workflow tools.
It talks to the Local REST API with MCP Obsidian plugin over HTTP, and speaks MCP to the agent over stdio.
Claude Code ──stdio──> duckuments-mcp ──HTTP+Bearer──> Obsidian Local REST API ──> vault filesTools
tool | what it does |
| read a note by vault-relative path |
| read the note currently open in Obsidian |
| list vault files, or a folder's contents |
| create/overwrite a note (PUT) |
| insert under a heading; nest with |
| plain-text vault search |
| commit already-staged files with your git identity (no push, no co-author) |
| write your Obsidian roles note into the project's |
Related MCP server: Advanced Obsidian MCP Server
Prompts (slash commands)
Prompts act on the active note in Obsidian (open the note, then run the command):
/duckuments:fill_out— read the note and fill it out (note only, no code)/duckuments:work_on— implement the note's points into the project/duckuments:plan_for— plan into the note (note only, no code)/duckuments:debug— find and fix the described issue, then report/duckuments:summarize— write a client-ready summary into the note's## Summerize section/duckuments:commit— write a conventional message and call thecommittool/duckuments:init— call theinittool
Setup
Install the Local REST API plugin in Obsidian, enable it, and copy its API key.
Configure env:
cp .env.example .env # paste your key into OBSIDIAN_API_KEY (leave values unquoted)Install deps:
pnpm install
Run
Node (recommended for local/global use):
claude mcp add duckuments -e OBSIDIAN_API_KEY=<key> -- \
node /absolute/path/to/duckuments-mcp/src/index.jsDocker:
pnpm docker:build
claude mcp add --scope user duckuments -- \
docker run -i --rm \
--add-host host.docker.internal:host-gateway \
--env-file /absolute/path/to/.env \
-e OBSIDIAN_API_URL=http://host.docker.internal:27123 \
-v $HOME/projects:$HOME/projects \
-v $HOME/.gitconfig:/root/.gitconfig:ro \
duckuments-mcpNotes:
Obsidian must be open with the plugin running.
In Docker, override
OBSIDIAN_API_URLtohost.docker.internal(the container can't reach the host's127.0.0.1), and keep.envunquoted (Docker's--env-filedoesn't strip quotes).commit/inittouch the local filesystem, so in Docker the project must be bind-mounted at its real absolute path.
Config
env | default | purpose |
|
| plugin base URL |
| — | plugin Bearer key (required) |
|
| log level: |
License
MIT
Available Tools
8 toolscommitCommit staged changesA
Commit the already-staged files in the project repo with your own git identity. Does NOT stage and does NOT push.
Inputs: message (required), cwd.
get_activeGet active noteA
Read the note currently open in Obsidian.
Inputs: no named parameters.
get_noteGet noteA
Read a note from the vault by its vault-relative path (e.g. 'Dev days/foo.md').
Inputs: path (required).
initInit CLAUDE.md rolesA
Read your roles note (Templates/Claude/Implementing Role.md) and write it into the project's CLAUDE.md, inside a managed block.
Inputs: cwd.
list_notesList notesA
List files/folders in the vault, or inside a given folder (e.g. 'Dev days/').
Inputs: folder.
patch_notePatch note under headingB
Insert content relative to an existing heading in a note (PATCH).
Inputs: path (required), content (required), heading (required), operation.
searchSearch vaultB
Plain-text search across the vault.
Inputs: query (required).
update_noteUpdate noteA
Create or overwrite a note at the given path with the given markdown (PUT).
Inputs: path (required), content (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools target clearly distinct actions: reading by path, reading the active note, listing, searching, overwriting, and patching. The only mild risk is update_note vs patch_note, but their descriptions make the full-overwrite vs heading-relative-insert distinction clear.
Several tools follow a verb_noun pattern (get_note, list_notes, update_note, patch_note), but get_active, search, commit, and init deviate by using bare verbs or verb-adjective forms. The pattern is readable but not consistently applied.
Eight tools is a reasonable size for an Obsidian/document-management server. Each tool contributes a distinct operation, and the count feels neither bloated nor sparse.
Core note reading, writing, listing, and searching are covered, but there is no delete, move, rename, or folder-management operation. The commit tool also assumes staging was done externally, leaving a notable workflow gap.
Related MCP Connectors
Agent-native notes, tasks, dev-docs, vaults, sync & handoffs. MCP + OpenAPI dual surface.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAllows AI models to interact with Obsidian notes through the Local REST API, enabling creation, reading, updating, searching of notes, and Git-based automatic backups.7,397 npm1MIT
- AlicenseAqualityDmaintenanceEmpowers AI agents to deeply understand and interact with Obsidian vaults through the Local REST API, enabling advanced features like vault structure discovery, graph analysis, command execution, and batch file operations.1618MIT
- AlicenseAqualityDmaintenanceConnects to Obsidian vaults via the Local REST API plugin, enabling AI-assisted Zettelkasten workflows including creating atomic notes, searching content, managing links and tags, and performing precise content editing operations.13MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to interact with Obsidian vaults via the Local REST API plugin for comprehensive note management, file operations, and vault navigation. It supports creating and editing notes, executing Obsidian commands, and performing advanced searches using Dataview queries.38 npm52MIT