MCP HubMCP Hub
anpigon

mcp-server-obsidian-omnisearch

by: anpigon

An MCP server that enables searches within Obsidian vaults using the Omnisearch plugin API. Returns absolute paths to matching notes for seamless integration. πŸš€

13created 02/12/2024
Visit
Obsidian
Omnisearch

πŸ“ŒOverview

Purpose: The main goal of the MCP Server Obsidian Omnisearch is to facilitate programmatic search through Obsidian vault notes via a REST API.

Overview: This project leverages FastMCP to provide a search service that allows users to efficiently find notes within their Obsidian vaults. It makes integration with other tools seamless, enhancing the usability of Obsidian for developers and power users.

Key Features:

  • Search through Obsidian vault notes: Enables users to perform comprehensive searches, returning relevant results from their vaults.

  • REST API integration: Exposes search functionality as an API, allowing for integration with various applications and services.

  • Returns absolute paths to matching notes: Provides clear results that include direct paths to notes, streamlining the discovery of relevant content.

  • Easy integration with FastMCP tools: Simplifies the setup and interaction with other FastMCP-based services for enhanced functionality.


MCP Server Obsidian Omnisearch

A FastMCP-based server that provides Obsidian vault search functionality through a REST API interface.

Overview

This project implements a search service that allows you to search through Obsidian vault notes programmatically. It uses FastMCP to expose the search functionality as a tool that can be integrated with other services.

Features

  • Search through Obsidian vault notes
  • REST API integration
  • Returns absolute paths to matching notes
  • Easy integration with FastMCP tools

Prerequisites

  • Python 3.x
  • Obsidian with Omnisearch plugin installed and running
  • FastMCP library
  • Active Obsidian vault

Installation

Installing via Smithery

To install MCP Server Obsidian Omnisearch for Claude Desktop automatically via Smithery:

npx -y @smithery/cli install @anpigon/mcp-server-obsidian-omnisearch --client claude

Manual Installation

  1. Clone the repository:
git clone https://github.com/anpigon/mcp-server-obsidian-omnisearch.git
cd mcp-server-obsidian-omnisearch
  1. Install dependencies:
uv install

Configuration

The Obsidian vault path is provided as a command line argument when running the server:

python server.py /path/to/your/obsidian/vault

Usage

Obsidian Omnisearch API

You need the Obsidian Omnisearch community plugin running: https://publish.obsidian.md/omnisearch/Inject+Omnisearch+results+into+your+search+engine

Claude Desktop Configuration

  • On MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
  • On Windows: %APPDATA%/Claude/claude_desktop_config.json
Development/Unpublished Servers Configuration
{
  "mcpServers": {
    "obsidian-omnisearch": {
      "command": "uv",
      "args": [
        "--directory",
        "<dir_to>/mcp-server-obsidian-omnisearch",
        "run",
        "mcp-server-obsidian-omnisearch",
        "/path/to/your/obsidian/vault"
      ]
    }
  }
}
Published Servers Configuration
{
  "mcpServers": {
    "obsidian-omnisearch": {
      "command": "uvx",
      "args": [
        "mcp-server-obsidian-omnisearch",
        "/path/to/your/obsidian/vault"
      ]
    }
  }
}

API Reference

Search Notes

  • Function: obsidian_notes_search(query: str)
  • Description: Searches Obsidian notes and returns absolute paths to matching notes
  • Parameters:
    • query: Search query string
  • Returns: List of absolute paths to matching notes

Development

Building and Publishing

To prepare the package for distribution:

  1. Sync dependencies and update lockfile:
uv sync
  1. Build package distributions:
uv build

This creates source and wheel distributions in the dist/ directory.

  1. Publish to PyPI:
uv publish

Note: Set PyPI credentials via environment variables or command flags:

  • Token: --token or UV_PUBLISH_TOKEN
  • Or username/password: --username/UV_PUBLISH_USERNAME and --password/UV_PUBLISH_PASSWORD

Debugging

Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, we recommend using the MCP Inspector: https://github.com/modelcontextprotocol/inspector

Launch the MCP Inspector using npm:

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-obsidian-omnisearch run mcp-server-obsidian-omnisearch

The Inspector will display a URL to access in your browser for debugging.

You can also watch the server logs with:

tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-server-obsidian-omnisearch.log

Dependencies

  • FastMCP
  • requests
  • urllib

License

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

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.