Obsidian MCP Server Enhanced

by labeveryday

391 downloads
Not rated
GitHub

About

This project provides a Model Context Protocol (MCP) server for interacting with Obsidian vaults through AI assistants.

Details

Author
labeveryday
Downloads
391
Categories
Knowledge Base

- Read, create, update, append, and delete notes in Obsidian
- List files and folders in your vault
- Search notes via basic search functionality
- Create daily notes with predefined sections
- Create meeting notes with structured templates

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Obsidian MCP Server Enhanced
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Install by cloning the repository, creating a Python virtual environment, and installing dependencies with pip install -e ".[dev]". Configure a .env file with OBSIDIAN_API_KEY, OBSIDIAN_HOST, and OBSIDIAN_PORT. Integrate with Amazon Q CLI by adding an MCP server entry in ~/.aws/amazonq/mcp.json pointing to run_server.py. Run the server with python run_server.py.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "obsidian mcp server enhanced": {
            "mcp-obsidian-enhanced": {
                "command": "python",
                "args": [
                    "-m",
                    "venv",
                    "venv"
                ]
            }
        }
    }
}

McpServers

{
    "mcp-obsidian-enhanced": {
        "command": "python",
        "args": [
            "-m",
            "venv",
            "venv"
        ]
    }
}

Obsidian MCP Server Enhanced

Status: Phase 1 Complete

A Model Context Protocol (MCP) server for integrating Amazon Q with Obsidian.

Project Overview

This MCP server allows Amazon Q to interact with Obsidian vaults without requiring the Obsidian application to be open. It leverages the Obsidian Local REST API plugin to provide functionality for note management, search, and knowledge management.

Current Status

- Phase 1 (Core Infrastructure): Complete
- Basic file operations, search, and note templates are fully implemented
- Built with FastMCP for seamless integration with Amazon Q
- Uses decorator-based approach for prompt registration
- Ready to begin Phase 2: Essential Features

Features

Currently Implemented

- File Operations: Read, create, update, append to, and delete notes
- Basic Folder Management: List files in folders
- Search: Basic search functionality for notes
- Daily Notes: Create daily notes with predefined sections
- Meeting Notes: Create meeting notes with structured templates

Planned Features

- Advanced Folder Management: Create, delete, rename, and move folders
- Organization & Metadata: Manage tags, frontmatter, and file organization
- Advanced Search & Discovery: Enhanced search by content, tags, and other criteria
- Knowledge Management: Extract highlights, compile notes, and more
- Search and Compile: Search for notes and compile information into a single note
- Note Organization: Organize notes on specific topics with AI assistance

Getting Started

Prerequisites

1. Obsidian: Install Obsidian and create a vault
2. Local REST API Plugin: Install the Local REST API plugin in Obsidian
3. Python 3.10+: Make sure you have Python 3.10 or newer installed

Installation

1. Clone this repository:

   git clone https://github.com/yourusername/mcp-obsidian-enhanced.git
cd mcp-obsidian-enhanced

2. Create a virtual environment:

   python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate

3. Install dependencies:

   pip install -e ".[dev]"

4. Create a .env file with your Obsidian API configuration:

   OBSIDIAN_API_KEY=your_api_key_from_local_rest_api_plugin
OBSIDIAN_HOST=127.0.0.1
OBSIDIAN_PORT=27124

Integration with Amazon Q CLI

To integrate this MCP server with Amazon Q CLI, configure the MCP server in your AWS configuration:

1. Create or update the file at ~/.aws/amazonq/mcp.json:

{
  "mcpServers": {
    "obsidian-mcp-server": {
        "command": "uv",
        "args": ["--directory", "/path/to/mcp-obsidian-enhanced", "run", "run_server.py"],
        "env": {},
        "disabled": false,
        "autoApprove": []
    }
  }
}

2. Replace /path/to/mcp-obsidian-enhanced with the actual path to your repository.

Running the Server

Run the server with:

python run_server.py

To test with MCP Inspector:

npx @modelcontextprotocol/inspector uv --directory ./ "run" "run_server.py"

Available Tools

| Tool Name | Description |
|-----------|-------------|
| obsidian_read_note | Get content of a note from your Obsidian vault |
| obsidian_create_note | Create a new note in your Obsidian vault |
| obsidian_update_note | Update an existing note in your Obsidian vault |
| obsidian_append_note | Append content to an existing note |
| obsidian_delete_note | Delete a note from your Obsidian vault |
| obsidian_list_files | List files and folders in your Obsidian vault |
| obsidian_get_active_file | Get the currently active file in Obsidian |
| obsidian_create_daily_note | Create a daily note with predefined sections |

Planned Tools (Phase 2)

| Tool Name | Description | |-----------|-------------| | obsidian_search | Search for notes in your Obsidian vault | | obsidian_summarize_note | Summarize the content of a note | | obsidian_search_and_compile | Search for notes and compile information | | obsidian_organize_notes | Organize notes on a specific topic |

Available Prompts

The server provides prompt templates using the decorator-based approach:

Meeting Notes

@mcp.prompt("meeting-notes")
async def meeting_notes_prompt(
    title: str,
    date: str = "",
    participants: str = "",
    folder: str = "Meetings",
    tags: List[str] = None
) -> Dict[str, Any]:
    """Create a meeting note with the given details."""
    # Implementation...

Create Note

@mcp.prompt("create-note")
async def create_note_prompt(
    title: str,
    content: str,
    folder: str = "",
    tags: List[str] = None
) -> Dict[str, Any]:
    """Create a new note with the given details."""
    # Implementation...

Organize Notes

@mcp.prompt("organize-notes")
async def organize_notes_prompt(
    topic: str,
    folder: str = ""
) -> Dict[str, Any]:
    """Organize notes related to a specific topic."""
    # Implementation...

Configuration Options

| Environment Variable | Description | Default |
|---------------------|-------------|---------|
| OBSIDIAN_API_KEY | API key from Local REST API plugin | (Required) |
| OBSIDIAN_HOST | Host where Obsidian is running | 127.0.0.1 |
| OBSIDIAN_PORT | Port for the API | 27124 |
| OBSIDIAN_PROTOCOL | Protocol to use | https |
| OBSIDIAN_VERIFY_SSL | Whether to verify SSL certificates | false |
| OBSIDIAN_TIMEOUT | Connection timeout in seconds | 10 |
| LOG_LEVEL | Logging level (INFO, DEBUG, etc.) | INFO |

Implementation Roadmap

Phase 1: Core Infrastructure (Complete)

- ✅ Basic server setup with FastMCP - ✅ Configuration management - ✅ Obsidian API client - ✅ Basic file operations - ✅ Basic folder management tools

Phase 2: Essential Features (Planned)

- Advanced search functionality - Metadata management - Improved templates - Note organization capabilities - Search and compile functionality - Note summarization

Phase 3: Advanced Features (Planned)

- Knowledge management tools - Bulk operations - Advanced search capabilities

Phase 4: Optimization & Polish (Planned)

- Performance optimizations - Enhanced error handling - Comprehensive logging - Detailed documentation

Testing the API Directly

You can test the Obsidian Local REST API endpoints directly using curl:

List Files in a Folder

curl -X GET "http://127.0.0.1:27124/vault/FolderName?list=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Read a Note

curl -X GET "http://127.0.0.1:27124/vault/path/to/note.md" \
  -H "Authorization: Bearer YOUR_API_KEY"

Create/Update a Note

curl -X PUT "http://127.0.0.1:27124/vault/path/to/note.md" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: text/markdown" \
  -d "# Note Title\n\nNote content here."

Search Notes

curl -X POST "http://127.0.0.1:27124/search/simple" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "query=search_term"

Contributing

Contributions are welcome! Please see the CONTRIBUTING.md file for guidelines.

License

This project is licensed under the MIT License - see the LICENSE file for details.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.