palace-mcp
Provides tools for interacting with an Obsidian vault, allowing AI agents to list, read, write, append, search, and delete notes, as well as access 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., "@palace-mcp search my vault for meeting notes"
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.
palace-mcp
MCP server that exposes an Obsidian vault to AI assistants via the Local REST API plugin.
Built with FastMCP. Agents can list, read, write, search, and delete notes — and read whichever note is currently open in Obsidian.
Prerequisites
Obsidian with the Local REST API plugin installed and running
Python 3.12+
uv (recommended) or pip
Copy your API key from the plugin settings in Obsidian before continuing.
Related MCP server: obsidian-local-mcp
Installation
git clone <repo-url> palace-mcp
cd palace-mcp
uv syncConfiguration
Variable | Required | Default | Description |
| yes | — | Bearer token from the Local REST API plugin |
| no |
| Host where Obsidian's REST API listens |
| no |
| Port for the REST API |
| no |
|
|
| no |
| Comma-separated paths where |
When using HTTPS with the plugin's self-signed certificate, certificate verification is skipped automatically.
Running
Start the server over stdio (the default transport for MCP clients):
export OBSIDIAN_API_KEY="your-api-key"
uv run python server.pyOr via FastMCP:
uv run fastmcp run server.pyCursor setup
Add to your MCP config (e.g. ~/.cursor/mcp.json):
{
"mcpServers": {
"obsidian-palace": {
"command": "uv",
"args": ["run", "python", "server.py"],
"cwd": "/path/to/palace-mcp",
"env": {
"OBSIDIAN_API_KEY": "your-api-key-here"
}
}
}
}Restart Cursor or reload MCP servers after saving.
Tools
Tool | Description |
| List files and folders. Pass a subdirectory path, or leave empty for the vault root. |
| Read a note's full contents by vault-relative path (e.g. |
| Create a new note or overwrite an existing one. |
| Append text to the end of a note. Creates the note if it doesn't exist. |
| Full-text search; returns matching filenames ranked by relevance. |
| Return the contents of the note currently open in Obsidian. |
| Permanently delete a note. Irreversible — use with care. |
Append protection
Some vault paths are treated as overwrite-only. Appending to them can silently stack duplicate content inside a single note, which is hard to detect later.
By default, append_note is refused for paths matching:
/Context/(any note under aContextfolder)/System/(any note under aSystemfolder)Index.md(any file namedIndex.md)
Use write_note to replace these notes instead. Override the deny list with the PALACE_APPEND_DENY environment variable.
License
MIT
Available Tools
7 toolsactive_noteA
Return the contents of the note currently open in Obsidian.
Inputs: no named parameters. Returns: result
append_noteA
Append text to the end of a note (creates the note if it doesn't exist).
Inputs: path (required), content (required). Returns: result
delete_noteA
Permanently delete a note. Use with care — this is irreversible.
Inputs: path (required). Returns: result
list_notesA
List files and folders. Pass a subdirectory path, or leave empty for the vault root.
Inputs: directory. Returns: result
read_noteA
Read a note's full contents by vault-relative path, e.g. 'People/Alice.md'.
Inputs: path (required). Returns: result
search_notesA
Full-text search the vault; returns matching filenames ranked by relevance.
Inputs: query (required). Returns: result
write_noteA
Create a new note or OVERWRITE an existing one at the given vault-relative path.
Inputs: path (required), content (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 7 tools
Each tool maps to a distinct file operation: listing, reading, writing, appending, searching, accessing the active note, and deleting. There is no meaningful overlap between tool purposes.
Most tools follow a clear verb_note pattern: read_note, write_note, append_note, delete_note, and search_notes. The deviations are minor: list_notes uses plural and active_note is adjective_noun, but the overall convention is still predictable.
Seven tools is a well-scoped set for an Obsidian vault server. Each tool covers a necessary note operation without unnecessary bloat.
The core note lifecycle is covered: list, read, write, append, search, and delete. Missing operations like rename, move, or folder management are minor gaps that agents can usually work around by writing to a new path.
Maintenance
Related MCP Connectors
Hosted MCP server for Obsidian Sync vaults: read, search, edit notes. Not affiliated with Obsidian.
1Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides an MCP server that allows AI assistants to interact with Obsidian vaults, enabling reading/writing notes, managing metadata, searching content, and working with daily notes.37MIT
- AlicenseNot gradedqualityDmaintenanceA local MCP server that wraps the Obsidian CLI to give AI assistants direct access to read, edit, and manage notes within an Obsidian vault. It enables advanced operations such as frontmatter property management, context-aware searching, and the execution of internal Obsidian commands.2MIT
- AlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to access and manage your local Obsidian vault through a standardized protocol.143,971 npm2Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that enables AI assistants to securely read, create, and modify notes in an Obsidian vault, with support for semantic search and web scraping.3,971 npmMIT