Obsidian MCP Server

Obsidian MCP Server

Enables LLMs like Claude and ChatGPT to access and manage git-backed Obsidian vaults through tools for file operations, search, tags, and journal logging.

Category
访问服务器

README

Obsidian MCP Server

Obsidian MCP Server

A Model Context Protocol (MCP) server for git-backed Obsidian vaults. Access and manage your notes through Claude, ChatGPT, and other LLMs by syncing changes via git.

Table of Contents

Overview

This MCP server provides 18 tools and 1 resource to interact with your Obsidian vault through LLMs:

Tool Categories:

  • File Operations (9) - Read, create, edit, delete, move, append, and patch notes
  • Directory Operations (3) - Create directories and list files
  • Search (1) - Fuzzy search with relevance scoring and exact matching
  • Tag Management (4) - Add, remove, rename, and manage tags
  • Journal Logging (1) - Auto-log LLM activity to daily journals

Deployment Modes:

  • Stdio - Local deployment for Claude Desktop, Cursor
  • HTTP - Local/remote with OAuth for ChatGPT, Claude web
  • AWS Lambda - Serverless deployment with DynamoDB sessions

Quick Start

Get started with Claude Desktop in 3 steps using Docker:

# 1. Download the example environment file
curl -O https://raw.githubusercontent.com/eddmann/obsidian-mcp/main/.env.example
mv .env.example obsidian-mcp.env

# 2. Edit obsidian-mcp.env with your vault repo and git token
# Required fields:
#   VAULT_REPO=https://github.com/username/vault-repo.git
#   VAULT_BRANCH=main
#   GIT_TOKEN=your_token_here

3. Add to Claude Desktop config:

<details> <summary>macOS: <code>~/Library/Application Support/Claude/claude_desktop_config.json</code></summary>

{
  "mcpServers": {
    "obsidian": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "/ABSOLUTE/PATH/TO/obsidian-mcp.env:/app/.env",
        "ghcr.io/eddmann/obsidian-mcp:latest",
        "stdio"
      ]
    }
  }
}

</details>

<details> <summary>Windows: <code>%APPDATA%\Claude\claude_desktop_config.json</code></summary>

{
  "mcpServers": {
    "obsidian": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-v",
        "C:\\ABSOLUTE\\PATH\\TO\\obsidian-mcp.env:/app/.env",
        "ghcr.io/eddmann/obsidian-mcp:latest",
        "stdio"
      ]
    }
  }
}

</details>

Restart Claude Desktop and start chatting with your vault!

<details> <summary><b>Prefer npm?</b> Click here for npm-based setup</summary>

# 1. Clone and install
git clone https://github.com/eddmann/obsidian-mcp
cd obsidian-mcp
npm install

# 2. Configure credentials
cp .env.example .env
# Edit .env with your vault repo and git token

3. Add to Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "obsidian": {
      "command": "npm",
      "args": ["run", "--prefix", "/ABSOLUTE/PATH/TO/obsidian-mcp", "dev"]
    }
  }
}

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "obsidian": {
      "command": "npm",
      "args": ["run", "--prefix", "C:\\ABSOLUTE\\PATH\\TO\\obsidian-mcp", "dev"]
    }
  }
}

</details>

How It Works

This server is designed for git-backed Obsidian vaults managed by plugins like obsidian-git.

graph LR
    A[Git Repository] -->|1. Clone/Pull| B[MCP Server]
    B -->|2. LLM Modifies| C[Local Vault Copy]
    C -->|3. Auto Commit & Push| A
    A -->|4. Sync| D[Obsidian Clients]

    style B fill:#4a9eff
    style C fill:#7c3aed

Workflow:

  1. Server clones/pulls your vault from git
  2. LLM makes changes through MCP tools
  3. Server automatically commits and pushes changes
  4. Your Obsidian clients pull to stay synchronized

This enables LLM access without Obsidian being open, with all changes synchronized via git.

Prerequisites

<details> <summary><b>System Requirements</b></summary>

  • Docker (recommended), OR Node.js 22+ and npm
  • AWS Account (only for Lambda deployment) </details>

<details> <summary><b>Vault Requirements</b></summary>

  1. Git-initialized Obsidian vault - Your vault must be a git repository
  2. Pushed to a remote - Supports GitHub, GitLab, Bitbucket, or self-hosted
  3. Git Personal Access Token - See Git Providers documentation
  4. Sync-enabled (recommended) - Use obsidian-git plugin for automatic sync </details>

Deployment Options

Claude Desktop (Local)

Using Docker:

See Quick Start above for the recommended Docker-based setup.

<details> <summary><b>Prefer npm?</b> Click here for npm-based setup</summary>

# Clone and install
git clone https://github.com/eddmann/obsidian-mcp
cd obsidian-mcp
npm install

# Configure credentials
cp .env.example .env
# Edit .env with your vault repo and git token

Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "obsidian": {
      "command": "npm",
      "args": ["run", "--prefix", "/ABSOLUTE/PATH/TO/obsidian-mcp", "dev"]
    }
  }
}

Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "obsidian": {
      "command": "npm",
      "args": ["run", "--prefix", "C:\\ABSOLUTE\\PATH\\TO\\obsidian-mcp", "dev"]
    }
  }
}

</details>

ChatGPT & Remote Clients

Run the server in HTTP mode with OAuth authentication:

Using Docker:

docker run -p 3000:3000 --rm \
  -v "/ABSOLUTE/PATH/TO/obsidian-mcp.env:/app/.env" \
  ghcr.io/eddmann/obsidian-mcp:latest \
  http

Using npm:

# First clone the repo if you haven't already
git clone https://github.com/eddmann/obsidian-mcp
cd obsidian-mcp
npm install

# Configure all environment variables (including OAuth)
cp .env.example .env
# Edit .env

# Run HTTP server
npm run dev:http

Required environment variables:

  • All core variables (see .env.example)
  • OAuth variables: OAUTH_CLIENT_ID, OAUTH_CLIENT_SECRET, PERSONAL_AUTH_TOKEN, BASE_URL

See Deployment Guide for detailed configuration and ChatGPT integration.

AWS Lambda

Deploy to AWS Lambda for remote access with DynamoDB session storage:

# 1. Clone the repository
git clone https://github.com/eddmann/obsidian-mcp
cd obsidian-mcp

# 2. Install dependencies
npm install

# 3. Configure all environment variables (including OAuth)
cp .env.example .env
# Edit .env

# 4. Deploy to AWS
npm run cdk:deploy

What gets deployed:

  • Lambda function (ARM64, 2GB memory, 10GB storage)
  • DynamoDB table with TTL-based sessions
  • Function URL with CORS enabled
  • CloudWatch logs (1-week retention)

Cleanup:

npm run cdk:destroy

See Deployment Guide for complete setup instructions.

Usage Examples

Ask your LLM to interact with your vault using natural language:

<details> <summary><b>File Operations</b></summary>

"Can you read my project note at Projects/MCP-Server.md?"
"Read all my daily notes from the past week"
"Create a new meeting note in Work/Meetings for today's standup"
"Add a task list to my project plan under the Action Items section"

</details>

<details> <summary><b>Directory Operations</b></summary>

"Set up a new folder structure for my research papers"
"What markdown files do I have in my vault?"
"Show me all the PDFs in my Resources folder"

</details>

<details> <summary><b>Search</b></summary>

"Find all my notes about machine learning"
"Where did I write about TODO items?"
"Search my Projects folder for anything about deployment"

</details>

<details> <summary><b>Tag Management</b></summary>

"Tag my meeting note with work and urgent"
"I want to consolidate my todo tags into a single task tag"
"What tags am I using the most?"

</details>

<details> <summary><b>Journal Logging</b></summary>

"Log today's work: I implemented OAuth for the MCP server using TypeScript and AWS"
"Add a journal entry about my Rust research - I learned about async patterns and tokio"
"Journal this: spent time learning TypeScript generics and created some helper utilities"

</details>

Tool Reference

File Operations (9 tools)

<details> <summary>View all file operation tools</summary>

Tool Description
read-note Read the contents of a note file
read-notes Read multiple notes in a single request for improved efficiency (accepts array of paths, handles partial success)
create-note Create a new note with content (automatically creates parent directories if needed)
edit-note Replace the entire content of an existing note
delete-note Permanently delete a note file from the vault
move-note Move a note to a different directory or rename it
append-content Append content to the end of an existing note, or create a new note if it doesn't exist
patch-content Insert or update content at specific locations: headings, block identifiers, text matches, or YAML frontmatter
apply-diff-patch Apply a unified diff patch to a file using standard diff format (strict matching, precise line-based changes)

See Tool Documentation for detailed usage and examples.

</details>

Directory Operations (3 tools)

<details> <summary>View all directory operation tools</summary>

Tool Description
create-directory Create a new directory in the vault (supports nested paths)
list-files-in-vault List all markdown files and directories in the vault root
list-files-in-dir List all files and subdirectories within a specific directory path

See Tool Documentation for detailed usage and examples.

</details>

Search (1 tool)

<details> <summary>View search tool</summary>

Tool Description
search-vault Search vault filenames and content using fuzzy matching (powered by fuse.js) or exact string matching with context lines

See Tool Documentation for detailed usage and examples.

</details>

Tag Management (4 tools)

<details> <summary>View all tag management tools</summary>

Tool Description
add-tags Add hashtags to a note's YAML frontmatter or inline within the note content
remove-tags Remove specified hashtags from a note's frontmatter and/or inline content
rename-tag Rename a tag across all notes in the vault (updates both frontmatter and inline)
manage-tags List all tags with usage counts, or merge multiple tags into a single unified tag

See Tool Documentation for detailed usage and examples.

</details>

Journal Logging (1 tool)

<details> <summary>View journal logging tool</summary>

Tool Description
log-journal-entry Log timestamped activity entries to daily journal files (auto-creates journal from template)

See Tool Documentation for detailed usage and examples.

</details>

Resources

MCP resources provide contextual information that LLMs can access on-demand.

Vault README

Resource URI Description
vault-readme obsidian://vault-readme Provides access to the README.md file from your vault root containing organization guidelines and vault-specific conventions

If your vault contains a README.md file in its root directory, LLMs can access it to understand how your vault is organized.

Documentation

  • Tool Reference - Detailed documentation for all 18 tools with usage examples
  • Deployment Guide - Complete deployment instructions for all modes
  • Git Providers - Setup instructions for GitHub, GitLab, Bitbucket, and self-hosted providers

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选