Labsco
MCP SERVER

Read, search and write your Obsidian vault from your assistant — including inserting under a specific heading rather than at the end.

Note-Taking & Personal Knowledge Bases
Summary
Notes written into the right place in the note, not just onto the end of it.

Placing content relative to a heading or a block reference is what makes it usable on a real vault: a summary lands under the section it belongs to and the note keeps its structure.

What it is

A bridge to a running Obsidian instance through the Local REST API community plugin. Seven tools read the vault as it exists right now and write back into it.

What you get
  • The vault listed from the root, or a single directory listed on its own (`list_files_in_vault`, `list_files_in_dir`)
  • The contents of one note read back (`get_file_contents`)
  • A text query searched across every file in the vault (`search`)
  • Content inserted relative to a heading, a block reference or a frontmatter field — placed, not appended (`patch_content`)
  • Content appended to an existing note, or to a new one created for it (`append_content`)
  • A file or directory deleted from the vault (`delete_file`)
Requirements

`uvx mcp-obsidian` on Python 3.11 or newer, plus the Obsidian Local REST API community plugin installed and enabled — that plugin is where `OBSIDIAN_API_KEY` comes from. `OBSIDIAN_HOST` and `OBSIDIAN_PORT` default to 127.0.0.1 and 27124, so you only set them if you moved the plugin. Obsidian has to be running for any of it to answer. One dependency pin to respect: the tool handlers use the `mcp` 1.x low-level server API, so installing it against `mcp` 2.0 or newer crashes at import with `AttributeError: 'Server' object has no attribute 'list_tools'`.

Setup effort

One command plus a key — uvx mcp-obsidian, then supply credentials