Skip to main content
Glama
takuya0206

Obsidian MCP

by takuya0206
README.md
# Obsidian MCP (Model Context Protocol)

Obsidian MCP is a tool that allows you to interact with your Obsidian vault using the Model Context Protocol. This enables AI assistants to read, write, and manipulate notes in your Obsidian vault through a standardized interface.


## Prerequisites

- Node.js 18 or higher
- Obsidian with [Local REST API plugin](https://github.com/coddingtonbear/obsidian-local-rest-api) installed and configured
- API key generated from the Local REST API plugin

## Setting MCP Server (e.g. Claude Desktop App)

1. Clone this repository
2. Install dependencies:
   ```
   npm install
   ```
3. Build the project:
   ```
   npm run build
   ```

4. Configure Claude Desktop App to use this MCP server:
   ```
   {
      "mcpServers": {
        "Obsidian": {
          "command": "node",
          "args": ["/Users/<Your Own Path>/obsisian-mcp/build/index.js"],
          "env": {
            "apiKey": "<Your API Token>",
            "port": "27123",
            "host": "127.0.0.1"
          }
        }
      }
    }
   ```
## Development
Create `.env` and configure "apiKey", "port", and "host" as mentioned above.


### Available Tools

The following tools are implemented:

1. **readNote** - Read the contents of a specific note
   ```
   {
     "path": "path/to/note.md"
   }
   ```

2. **readActiveNote** - Read the contents of the current active note
   ```
   {}
   ```

3. **listNotes** - Recursively lists files and folders in the entire Vault or under a specified folder
   ```
   {
     "path": "optional/folder/path"
   }
   ```

4. **patchNote** - Inserts content into an existing note relative to a heading, block reference, or frontmatter field
   ```
   {
     "path": "path/to/note.md",
     "operation": "append|prepend|replace",
     "targetType": "heading|block|frontmatter",
     "target": "target_identifier",
     "content": "content to insert"
   }
   ```

5. **searchWithJsonLogic** - Search Obsidian notes using JsonLogic format queries
   ```
   {
     "query": {
       // JsonLogic query object
     }
   }
   ```

TDQS

B3.1/5.0

Scored across 5 tools

Disambiguation4/5

Most tools have distinct purposes: listNotes for browsing, readNote/readActiveNote for reading, patchNote for editing, and searchWithJsonLogic for querying. However, readNote and readActiveNote could potentially be confused as they both read notes, though one targets a specific note and the other the active note, which is clarified in their descriptions.

Naming Consistency3/5

The naming is mixed: listNotes, readNote, and searchWithJsonLogic follow a verb_noun pattern, but patchNote uses a verb_noun format with a different verb style, and readActiveNote includes an adjective, breaking consistency. While readable, it lacks a uniform convention across all tools.

Tool Count4/5

With 5 tools, the count is reasonable for an Obsidian vault management server, covering core operations like listing, reading, editing, and searching notes. It's slightly lean but functional, as it includes essential CRUD-like actions without being overwhelming.

Completeness3/5

The tool set covers reading, editing, listing, and searching notes, but lacks explicit create and delete operations for notes, which are common in file-based systems. This creates gaps in full lifecycle management, though patchNote can modify existing notes and agents might work around missing create/delete by other means.

Maintenance

ActivityInactive
ResponsivenessNo issues