Obsidian MCP
# 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
Scored across 5 tools
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.
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.
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.
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.