# obsidian-mcp-server

Connects AI coding agents to an Obsidian workspace, enabling targeted edits to headings, frontmatter attributes, tags, and note content.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 701
- Author: cyanheads
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/cyanheads/obsidian-mcp-server
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/obsidian-mcp-server

## What it does

This server bridges coding agents with an Obsidian workspace by querying the Local REST API community extension. It exposes capabilities to read complete files, inspect isolated document sections, and run searches using plain text matching, JSONLogic rules, or Omnisearch.

The package bundles 14 tools and 3 resources. Models can append snippets under target headings, patch frontmatter properties, run regex replacements, and trigger command-palette actions. Scoping read permissions to specific directories via `OBSIDIAN_READ_PATHS` helps restrict agent access to sensitive files.

A running Obsidian instance with an active Local REST API setup and an `OBSIDIAN_API_KEY` token are mandatory before starting the server.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `OBSIDIAN_API_KEY`, `OBSIDIAN_BASE_URL`, `OBSIDIAN_VERIFY_SSL`, `OBSIDIAN_REQUEST_TIMEOUT_MS`, `OBSIDIAN_ENABLE_COMMANDS`, `OBSIDIAN_READ_PATHS`, `OBSIDIAN_WRITE_PATHS`, `OBSIDIAN_READ_ONLY`, `OBSIDIAN_DELETE_ELICITATION`, `OBSIDIAN_OMNISEARCH_URL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.
- Works with: Obsidian

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env OBSIDIAN_API_KEY=<OBSIDIAN_API_KEY> --env OBSIDIAN_BASE_URL=<OBSIDIAN_BASE_URL> --env OBSIDIAN_VERIFY_SSL=<OBSIDIAN_VERIFY_SSL> --env OBSIDIAN_REQUEST_TIMEOUT_MS=<OBSIDIAN_REQUEST_TIMEOUT_MS> --env OBSIDIAN_ENABLE_COMMANDS=<OBSIDIAN_ENABLE_COMMANDS> --transport stdio obsidian-mcp-server -- npx -y obsidian-mcp-server
```
Replace <…> with your own values. 11 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add obsidian-mcp-server --env OBSIDIAN_API_KEY=<OBSIDIAN_API_KEY> --env OBSIDIAN_BASE_URL=<OBSIDIAN_BASE_URL> --env OBSIDIAN_VERIFY_SSL=<OBSIDIAN_VERIFY_SSL> --env OBSIDIAN_REQUEST_TIMEOUT_MS=<OBSIDIAN_REQUEST_TIMEOUT_MS> --env OBSIDIAN_ENABLE_COMMANDS=<OBSIDIAN_ENABLE_COMMANDS> -- npx -y obsidian-mcp-server
```
Replace <…> with your own values. 11 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "obsidian-mcp-server": {
            "command": "npx",
            "args": [
                "-y",
                "obsidian-mcp-server"
            ],
            "env": {
                "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
                "OBSIDIAN_BASE_URL": "<OBSIDIAN_BASE_URL>",
                "OBSIDIAN_VERIFY_SSL": "<OBSIDIAN_VERIFY_SSL>",
                "OBSIDIAN_REQUEST_TIMEOUT_MS": "<OBSIDIAN_REQUEST_TIMEOUT_MS>",
                "OBSIDIAN_ENABLE_COMMANDS": "<OBSIDIAN_ENABLE_COMMANDS>"
            }
        }
    }
}
```
Replace <…> with your own values. 11 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "obsidian-mcp-server": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "obsidian-mcp-server"
            ],
            "env": {
                "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
                "OBSIDIAN_BASE_URL": "<OBSIDIAN_BASE_URL>",
                "OBSIDIAN_VERIFY_SSL": "<OBSIDIAN_VERIFY_SSL>",
                "OBSIDIAN_REQUEST_TIMEOUT_MS": "<OBSIDIAN_REQUEST_TIMEOUT_MS>",
                "OBSIDIAN_ENABLE_COMMANDS": "<OBSIDIAN_ENABLE_COMMANDS>"
            }
        }
    }
}
```
Replace <…> with your own values. 11 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e OBSIDIAN_API_KEY=<OBSIDIAN_API_KEY> -e OBSIDIAN_BASE_URL=<OBSIDIAN_BASE_URL> -e OBSIDIAN_VERIFY_SSL=<OBSIDIAN_VERIFY_SSL> -e OBSIDIAN_REQUEST_TIMEOUT_MS=<OBSIDIAN_REQUEST_TIMEOUT_MS> -e OBSIDIAN_ENABLE_COMMANDS=<OBSIDIAN_ENABLE_COMMANDS> obsidian-mcp-server npx -y obsidian-mcp-server
```
Replace <…> with your own values. 11 more environment variables are in the server README

## When to use it
- search notes using JSONLogic filters and frontmatter criteria
- append content under a specific heading without rewriting the note
- update or remove individual metadata keys in frontmatter
- inspect vault tags alongside their total occurrence counts

## Example prompts
- Find all notes in my Obsidian vault containing the tag #architecture.
- Append a new task item under the 'Action Items' section in `meeting-notes.md`.
- Inspect the current Obsidian connection status using `obsidian://status`.

## Similar
- [Reactive Resume](https://affpapa.org/en/nevibecode/mcp/reactive-resume.md) — MCP server · ★ 44874
- [screenpipe](https://affpapa.org/en/nevibecode/mcp/screenpipe.md) — MCP server · ★ 22053
- [Inbox Zero](https://affpapa.org/en/nevibecode/mcp/inbox-zero.md) — MCP server · ★ 12791
- [kaneo](https://affpapa.org/en/nevibecode/mcp/kaneo.md) — MCP server · ★ 9602
- [Mindwtr](https://affpapa.org/en/nevibecode/mcp/mindwtr.md) — MCP server · ★ 2318
- [Azure DevOps (ADO)](https://affpapa.org/en/nevibecode/mcp/azure-devops-ado.md) — MCP server · ★ 2067

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
