obsidian-mcp-server

Edjopima/obsidian-mcp-server

3.2

If you are the rightful owner of obsidian-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

An MCP server that integrates with Obsidian to create daily and inbox notes from user-provided information, including images.

Tools
2
Resources
0
Prompts
0

Obsidian MCP Server

Transform your handwritten notes into structured Obsidian markdown files automatically using AI vision and MCP.

An MCP (Model Context Protocol) server that converts photos of handwritten notes into structured daily notes and inbox notes in Obsidian. Simply take a picture of your notes, send it to Claude Desktop, and get perfectly formatted markdown files in your vault.

✨ Features

  • 📸 Image-to-Markdown: Convert handwritten notes to structured markdown automatically
  • 📅 Daily Notes: Create organized daily notes with day planner, tasks, and logs
  • 📥 Inbox Notes: Capture quick notes with automatic topic extraction and wikilink format
  • 🎯 Multi-topic Handling: Split multiple topics into separate linked notes
  • 🤖 AI-Powered: Uses Claude's multimodal capabilities to "read" your handwriting
  • Zero Manual Transcription: No more typing out your handwritten notes
  • 📝 Structured Content: Automatic organization into sections (day planner, tasks, logs)

Installation

This project uses uv for dependency management.

# Install dependencies
uv sync

Configuration

Create a .env file in the project root:

VAULT_PATH=/path/to/your/obsidian/vault
DAILY_NOTES_PATH=daily-notes    # optional, defaults to "daily-notes"
INBOX_NOTES_PATH=inbox           # optional, defaults to "inbox"

Directory structure in your Obsidian vault:

your-vault/
├── daily-notes/     # Daily notes will be created here
└── inbox/           # Inbox notes will be created here

Usage

Adding to Claude Desktop

  1. Locate your Claude Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%/Claude/claude_desktop_config.json
  2. Add this MCP server to the configuration:

{
  "mcpServers": {
    "obsidian": {
      "command": "uv",
      "args": [
        "--directory",
        "/absolute/path/to/obsidian-mcp-server",
        "run",
        "app/main.py"
      ]
    }
  }
}

Important: Replace /absolute/path/to/obsidian-mcp-server with the absolute path to this project directory.

  1. Restart Claude Desktop

  2. The server tools will be available in Claude Desktop. You can verify by checking the MCP tools icon.

Running Standalone

You can also run the server standalone for testing:

uv run app/main.py

The server runs with stdio transport and can be integrated with any LLM client that supports the MCP protocol.

How It Works

Daily Notes

When you send an image containing the text "daily note":

  • The LLM extracts day planner items, tasks, and logs
  • A daily note is created with the current date as filename
  • Content is organized into structured blocks:
    • Day planner
    • Tasks (with checkboxes)
    • Daily Logs
    • Youtube Bookmarks (dataview query)

Inbox Notes

When you send an image without "daily note" text:

  • The LLM extracts the main topic as the title
  • Creates an inbox note with tasks and logs
  • Multiple topics create separate linked notes
  • Filename uses sanitized title for easy reference

Project Structure

app/
�� server.py                      # FastMCP server instance
�� main.py                        # Entry point
�� tools/
   �� create_daily_note_tool.py  # Daily note creation tool
   �� create_inbox_note_tool.py  # Inbox note creation tool
�� utils/
    �� utils.py                   # Utility functions
    �� templates/
        �� daily-note.md          # Daily note template
        �� inbox-note.md          # Inbox note template

Development

The server uses FastMCP to expose tools that can be called by LLM clients. Tools are registered by importing them in .

To add a new tool:

  1. Create a new file in app/tools/
  2. Define your function with @mcp.tool() decorator
  3. Import it in app/main.py

📖 Example Workflow

  1. Take a picture of your handwritten notes during a meeting
  2. Open Claude Desktop and attach the image
  3. Claude automatically:
    • Reads your handwriting using vision capabilities
    • Extracts day planner items, tasks, and logs
    • Creates a structured markdown file in your Obsidian vault
  4. Open Obsidian and find your perfectly formatted note

Input (Handwritten)

DAILY NOTE - Oct 27, 2025

Day Planner:
- 9:00 AM Team standup
- 2:00 PM Client meeting

Tasks:
□ Fix login bug
□ Review PR #123

Logs:
- Had great discussion about new feature

Output (Markdown in Obsidian)

## Day planner

- 9:00 AM Team standup
- 2:00 PM Client meeting

## Tasks

- [ ] Fix login bug
- [ ] Review PR #123

## Daily Logs

- Had great discussion about new feature