Skip to main content
Glama
indie-geeker

obsidian-mcp-server

by indie-geeker
README.md
<!--
 * @Author: indiegeeker indiegeeker@gmail.com
 * @Date: 2025-10-23 12:00:43
 * @LastEditors: indiegeeker indiegeeker@gmail.com
 * @LastEditTime: 2025-10-23 17:02:13
 * @Description: 
-->
# obsidian-mcp-server

> 🔗 Model Context Protocol server for Obsidian - Connect your knowledge base to AI

## ✨ Features

- 📝 **Note Management**: Create, read, update, and delete notes
- 🔍 **Search**: Full-text search across your vault
- 📋 **Listing**: List notes with filtering options
- 📊 **Metadata**: Get file size, timestamps, tags, and properties
- ⏰ **Sorting**: Sort notes by creation/modification time or size
- 🏷️ **Tag Extraction**: Automatically extract tags from frontmatter and content
- 🔒 **Safe**: Path validation to prevent directory traversal
- ⚡ **Fast**: Efficient file operations

## 🚀 Quick Start

### Installation
```bash
npm install -g @indiegeeker/obsidian-mcp-server
# or
pnpm install -g @indiegeeker/obsidian-mcp-server
```

### Configuration

Add to your Claude Desktop config:
```json
{
  "mcpServers": {
    "obsidian": {
      "command": "obsidian-mcp-server",
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
      }
    }
  }
}
```

## 📖 Available Tools

### create_note
Create a new note in your vault.

**Parameters:**
- `filename` (required): Name of the note
- `content` (required): Markdown content
- `path` (optional): Folder path within vault

### read_note
Read an existing note's content and frontmatter.

**Parameters:**
- `filepath` (required): Path to the note

### search_notes
Search notes by content.

**Parameters:**
- `query` (required): Search string
- `path` (optional): Limit search to folder

### list_notes
List all notes in vault or folder.

**Parameters:**
- `path` (optional): Folder to list
- `recursive` (optional): Include subfolders

### update_note
Update an existing note's content.

**Parameters:**
- `filepath` (required): Path to the note
- `content` (required): New content
- `append` (optional): Append instead of replacing

### delete_note
Delete a note from the vault.

**Parameters:**
- `filepath` (required): Path to the note to delete

### get_note_metadata
Get detailed metadata for a note.

**Parameters:**
- `filepath` (required): Path to the note
- `includeTags` (optional): Extract tags from frontmatter and content (default: true)

**Returns:**
- File size (bytes and formatted)
- Creation time
- Modification time
- Frontmatter properties
- Extracted tags (from frontmatter and #hashtags)

### list_notes_sorted
List notes sorted by various criteria.

**Parameters:**
- `path` (optional): Folder to list (default: root)
- `recursive` (optional): Include subfolders (default: true)
- `sortBy` (optional): Sort criterion - `"created"`, `"modified"`, `"size"`, or `"name"` (default: `"modified"`)
- `order` (optional): Sort order - `"asc"` or `"desc"` (default: `"desc"`)
- `includeMetadata` (optional): Include size and timestamps (default: true)
- `limit` (optional): Maximum number of notes to return


## 🛠️ Development
```bash
# Clone the repo
git clone https://github.com/indiegeeker/obsidian-mcp-server.git

# Install dependencies
pnpm install

# Build
pnpm run build

# Watch mode
pnpm run dev
```

## 📄 License

MIT

TDQS

B3.2/5.0

Scored across 8 tools

Disambiguation4/5

Most tools have distinct purposes, but list_notes and list_notes_sorted overlap significantly; the sorted version could be a parameter of list_notes. Additionally, get_note_metadata vs read_note might be confused for retrieving note details, though descriptions clarify the distinction.

Naming Consistency3/5

Most tools follow a verb_noun pattern (update_note, delete_note, search_notes, list_notes, get_note_metadata, create_note, read_note), but list_notes_sorted deviates by adding a modifier, breaking consistency.

Tool Count4/5

Eight tools is reasonable for a note management server, covering core operations. However, list_notes_sorted is arguably redundant, making the set slightly over-specified.

Completeness5/5

The tools provide full CRUD coverage (create, read, update, delete) plus search, listing, sorting, and metadata retrieval, covering the essential operations for managing notes in an Obsidian vault without obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues