Server facts
MCP Server for Obsidian
Project
- Author
- MarkusPfundstein
- Repository
- github.com/MarkusPfundstein/mcp-obsidian
- License
- MIT
- Category
- Memory & Knowledge
Tech
- Runtime / language
- pythonPython
- Transports
- stdio
- Remote available
- No
- Authentication
- Not specified
Activity
- GitHub stars
- 4,480
- Last commit
- Data as of
Tags
- Knowledge Management
- Local Rest Api
- Notes
- Obsidian
- Vault Search
Overview
MCP Server for Obsidian exposes vault operations to an assistant through Obsidian's Local REST API community plugin. Its tools list the vault root or a chosen directory, read individual files, and search note content across the vault. Write operations include appending to a new or existing note and inserting content at a location identified by a heading, frontmatter field, or block reference. A separate deletion tool removes files or directories. Together, these operations support workflows where an assistant first finds existing knowledge, reads the relevant notes, and then writes a useful result back into the same vault.
The README illustrates meeting-note summaries and searches for technical topics across stored documents. It suggests explicitly asking the assistant to use Obsidian so that tool calls are selected. Setup requires installing and enabling the community plugin, obtaining its API key, and configuring the MCP server with that credential and connection details. The published package runs through uvx over stdio. Host and port can be supplied through environment variables, with defaults of 127.0.0.1 and 27124 when omitted. If a desktop client cannot locate uvx, the README recommends using its full executable path. A source-oriented uv configuration and Inspector-based debugging instructions are also provided. The plugin dependency is central: this server connects through its API rather than replacing the Obsidian application or plugin.
Install & configure
Requirements
- Obsidian with the Local REST API community plugin installed, enabled, and running
- The plugin's API key
- uvx
- An MCP-compatible client
uvx mcp-obsidianUse the plugin settings to obtain the API key. If the client cannot locate uvx, replace the command with its absolute executable path.
Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Config file · macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Use Settings → Developer → Edit Config when available. Do not assume a Linux configuration path; check the client documentation for your platform. Remote servers use the app’s connector flow when supported, not the local stdio file shown here. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<API key from your Obsidian Local REST API plugin>",
"OBSIDIAN_HOST": "<Obsidian API host; defaults to 127.0.0.1>",
"OBSIDIAN_PORT": "<Obsidian API port; defaults to 27124>"
}
}
}
}Config file · Project: .cursor/mcp.json
User: ~/.cursor/mcp.json
The project path is relative to the workspace root. The tilde denotes your user home directory. Use Cursor’s MCP settings to confirm which configuration and scope your installed version is reading. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<API key from your Obsidian Local REST API plugin>",
"OBSIDIAN_HOST": "<Obsidian API host; defaults to 127.0.0.1>",
"OBSIDIAN_PORT": "<Obsidian API port; defaults to 27124>"
}
}
}
}Config file · Workspace: .vscode/mcp.json
For user scope, use the “MCP: Open User Configuration” command if available. Do not guess a user configuration path across operating systems, profiles, containers, or remote workspaces; check the client documentation. Merge this example with existing settings; do not overwrite unrelated servers.
{
"servers": {
"mcp-obsidian": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<API key from your Obsidian Local REST API plugin>",
"OBSIDIAN_HOST": "<Obsidian API host; defaults to 127.0.0.1>",
"OBSIDIAN_PORT": "<Obsidian API port; defaults to 27124>"
}
}
}
}Config file · macOS/Linux: ~/.codeium/windsurf/mcp_config.json
Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json
Open the MCP configuration through Windsurf’s settings when possible to confirm the active file. Paths can differ in managed or future releases; check the client documentation if this location is not present. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<API key from your Obsidian Local REST API plugin>",
"OBSIDIAN_HOST": "<Obsidian API host; defaults to 127.0.0.1>",
"OBSIDIAN_PORT": "<Obsidian API port; defaults to 27124>"
}
}
}
}Config file · Project scope: .mcp.json at the repository root
The project file uses mcpServers. For user scope, use claude mcp add --scope user rather than assuming .mcp.json in your home directory is the user configuration. Check the client documentation for managed settings and storage details. Merge this example with existing settings; do not overwrite unrelated servers.
{
"mcpServers": {
"mcp-obsidian": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<API key from your Obsidian Local REST API plugin>",
"OBSIDIAN_HOST": "<Obsidian API host; defaults to 127.0.0.1>",
"OBSIDIAN_PORT": "<Obsidian API port; defaults to 27124>"
}
}
}
}Examples are translated from the published configuration. Supply your own credentials and verify requirements in the upstream README. Remote connectors are shown only where a supported configuration format is known.
Tools
Source: repository README. Tool descriptions are a documented snapshot, not a live capability check.
| Tool | What it does |
|---|---|
| list_files_in_vault | List files and directories at the vault root. |
| list_files_in_dir | Inspect files and subdirectories within a selected vault directory. |
| get_file_contents | Read a single vault file. |
| search | Find vault documents containing a supplied text query. |
| patch_content | Use headings, frontmatter fields, or block references to locate an insertion point in a note. |
| append_content | Add content at the end of a new or existing note. |
| delete_file | Remove a file or directory from the vault. |
Names, permissions, and defaults can change. Check the current upstream documentation before granting access.
Use cases
- Find notes mentioning a technical subject and summarize their context.
- Read meeting notes and write a summary into a new note.
- Insert information under a heading or into frontmatter.
- List vault directories and organize note files.
Strengths
- Combines vault search and reading with targeted note updates.
- Can append results to either new or existing notes.
- Documents connection defaults and uvx path troubleshooting.
Limitations
- Requires the Obsidian Local REST API community plugin to be running.
- Setup needs the plugin API key and correct connection details.
- Deletion tools can remove vault files or directories.
Frequently asked questions
Independent listing, not an affiliation or security review. Grant the least access needed and verify the upstream instructions before running code.