Obsidian MCP Agent
Allows managing an Obsidian vault: reading, writing, updating, archiving notes, scanning folders and tags, and cross-linking notes.
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., "@Obsidian MCP Agentclean up my Obsidian inbox"
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.
Obsidian MCP Agent
A custom Python MCP (Model Context Protocol) server that turns rough, train-of-thought notes into properly formatted, cross-linked notes in an Obsidian vault — using Claude Desktop as the interface, with no coding required at use-time.
The Problem
I take a lot of notes during coursework and independent learning, usually typed quickly and messily during or right after a lecture. Cleaning those up into a properly formatted, well-organized note — consistent tagging, inline links to related topics, clear structure — is repetitive and easy to put off. The raw notes pile up in an "unsorted" backlog instead of becoming useful, searchable knowledge.
Related MCP server: obsidian-ai-curator
What This Does
Point Claude Desktop at this MCP server, say something like "clean up my Obsidian backlog," and it will:
Read each raw note sitting in the vault's inbox folder.
Rewrite it into a consistent template — abstract, sections, references — while preserving all the original substance.
Tag it using only tags that already exist in the vault (never inventing new ones).
Add inline
[[wikilinks]]to genuinely related existing notes, verified by actually reading the candidate note first — not just matching titles.Save it to the correct folder and archive the original raw note.
If a note with the same name already exists, it stops and asks — it never silently overwrites.
Before/after example: see example/before-raw-inbox-note.md and example/after-formatted-note.md.
Architecture
Built with FastMCP, running as a local stdio server that Claude Desktop launches as a subprocess — no API key, no cloud hosting, uses an existing Claude Pro subscription.
Tools exposed:
Tool | Purpose |
| Static notes on the vault's folder structure |
| The full note-cleanup workflow, read by Claude before processing |
| Recursive scan of existing notes and their summaries |
| Full content of one existing note, for verifying wikilink relevance |
| Reads the vault's note templates |
| Live scan of valid tags — never hardcoded |
| Reads raw notes waiting to be processed |
| Creates a new note; refuses to overwrite, returns a conflict instead |
| Overwrites an existing note — only ever called after explicit user approval of a proposed merge |
| Moves a processed raw note out of the inbox |
All file paths are validated against the vault root to prevent path traversal outside the vault.
Setup
Clone this repo.
Create a virtual environment and install dependencies:
python -m venv .venv .venv\Scripts\activate # Windows pip install -r requirements.txt
Set the
OBSIDIAN_VAULT_PATHenvironment variable to your vault's absolute path.Add this server to your
claude_desktop_config.json:
{
"mcpServers": {
"obsidian-mcp-agent": {
"command": "/path/to/.venv/Scripts/python.exe",
"args": ["/path/to/server.py"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
}
}
}
}Fully restart Claude Desktop.
Adjust
folder-guide.mdandprocessing-instructions.mdto match your own vault's conventions — these are personal to how I organize notes and will need editing for a different vault structure.
What's Next
A template-selection step for coursework that uses a different note format (currently only one template is supported).
Automated validation of tag/wikilink formatting in generated output, rather than manual review.
Possibly extending beyond a chat-driven workflow to something workflow-embedded — this was intentionally out of scope for this build.
Notes on This Project
Built as a weekend project to learn MCP server design (tools vs. resources, path safety, conflict handling) rather than to build the most sophisticated possible agent. The example/ folder uses entirely made-up content — no real personal notes are included in this repo.
This server cannot be deployed
Maintenance
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Notes and memory assistant: one Markdown vault that Claude, ChatGPT and any MCP client can share.
Hosted Notion MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceBuilt on Obsidian Vault, this MCP server integrates with Claude Code to provide personal knowledge management including note saving, full-text search, code graph extraction, and context resumption.1-
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives Claude AI direct access to your Obsidian vault, enabling natural language search, note creation, file management, and automated workflows.1,597 npm10MIT
- FlicenseNot gradedqualityBmaintenanceA Python MCP server that gives Claude long-term memory and full context of everything by connecting to an Obsidian vault, enabling context retrieval, note management, and automatic graph linking.-
- AlicenseNot gradedqualityDmaintenanceBidirectional MCP server that connects Claude with an Obsidian vault, enabling note management, full-text search, graph traversal, and daily notes operations.1,684 npmMIT