Local-first MCP server for direct read/write access to Obsidian markdown vaults without Obsidian or API keys.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Obsidian Codex MCP.
Local-first MCP server for working with an Obsidian vault.
This is for people who want MCP clients to work directly with markdown files on disk.
Independent open-source project. Not affiliated with Obsidian, Anthropic, OpenAI, or any MCP client.
It lets MCP clients work with your vault to:
.base files) with schema validationAll directly against your local markdown files.
.base) from an agentThere are already a handful of Obsidian MCP servers. Many depend on the Obsidian Local REST API plugin or run as an Obsidian plugin. This project is intentionally simpler:
.base) support with schema validation β a differentiator: almost no other Obsidian MCP server can create or edit Bases, and this one validates them against the official schema so it never writes a file Obsidian would silently reject| Need | This project |
|---|---|
| Use Obsidian with any MCP client | Yes β Claude Code, Claude Desktop, Cursor, Cline, Codex, Grok |
| Config format | JSON or TOML, per client (examples for each) |
| Require an Obsidian plugin | No |
| Require an API key | No |
| Require Obsidian to be open | No |
| Read/write markdown files directly | Yes |
Create and edit Obsidian Bases (.base) | Yes, with schema validation |
| Work over a remote HTTP API | No, local stdio MCP only |
Designed to be useful without being reckless:
configure_vault - set or change the vault pathget_note - read one markdown note by vault-relative pathcreate_note - create a new markdown note with optional metadataupdate_note - update note content and/or frontmatterdelete_note - delete a markdown notelist_notes - list notes in the vault or a foldersearch_notes - search note title, content, and tagsget_all_tags - list unique tags from frontmatter and inline tagsget_backlinks - find notes that link to a noteget_note_links - extract wikilinks from a notecreate_folder - create a folder inside the vaultget_folder_structure - return the vault folder tree.base files)First-class, schema-validated support for Obsidian Bases β database-like views over your notes. Very few Obsidian MCP servers support these.

create_base - create a .base file, validated against the Bases schema before writingupdate_base - merge changes into a base (update a view by name, add/remove views, change filters/formulas/properties)get_base - read a .base as parsed structure + raw YAML; tolerant of imperfect fileslist_bases - list .base files in the vault or a folder, with their view namesdelete_base - delete a .base file
All four Obsidian view modes are supported β table, list, cards, and map β and any of them can be mixed in a single base. Map views (from the Maps community plugin) round-trip cleanly too: their marker and zoom settings are preserved on read and re-write.
See docs/bases-examples.md for copyable examples of each view mode.

Full-length clip: Obsidian + MCP demo
Requirements:
install.sh creates a local virtualenv, installs dependencies, verifies against your vault, then prints ready-to-paste config for the client you choose (--client claude|claude-desktop|codex|cursor|cline|grok, default: all).
Prefer to do it by hand? The manual steps are:
The server is a local stdio MCP server, so any MCP-capable client can run it. Point the client at your virtualenv's Python and server.py, and set the vault path via env. Then restart or reconnect the client.
Add this to the client's MCP config (claude_desktop_config.json, or the equivalent mcpServers block):
Add this to ~/.codex/config.toml (or ~/.grok/config.toml):
For a safer read/search-only setup, set OBSIDIAN_READ_ONLY="true" (TOML: OBSIDIAN_READ_ONLY = "true").
| Variable | Required | Default | Description |
|---|---|---|---|
OBSIDIAN_VAULT_PATH | yes | none | Absolute path to the vault folder. |
OBSIDIAN_READ_ONLY | no | false | When true, create/update/delete/folder creation tools refuse writes. |
OBSIDIAN_BACKUP_ON_WRITE | no | false | When true, copies existing notes into .obsidian-mcp-backups/ before update/delete. |
OBSIDIAN_VAULT_PATH.../ path traversal are rejected.OBSIDIAN_READ_ONLY=true (this also blocks create_base, update_base, and delete_base)..base files can be copied to .obsidian-mcp-backups/ before update/delete with OBSIDIAN_BACKUP_ON_WRITE=true.delete_note only removes markdown (.md) notes and delete_base only removes Bases (.base) files. Neither can touch other file types..base paths and note tools only .md paths, so the two never cross-contaminate.Run the local test script:
Start the MCP server:
Generate a daily project status report from your vault:
Write the report back into Obsidian:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/dot-realitytest-obsidian-codex-mcp)<a href="https://allmcps.com/mcp/dot-realitytest-obsidian-codex-mcp"><img src="https://allmcps.com/api/badge/dot-realitytest-obsidian-codex-mcp?style=directory" alt="Obsidian Codex MCP on AllMCPs" /></a>