Skip to main content
Glama
anpigon

Obsidian Omnisearch MCP Server

by anpigon

Servidor MCP Obsidian Omnisearch

insignia de herrería Un servidor basado en FastMCP que proporciona la funcionalidad de búsqueda de bóveda de Obsidian a través de una interfaz API REST.

Descripción general

Este proyecto implementa un servicio de búsqueda que permite buscar en las notas de la bóveda de Obsidian mediante programación. Utiliza FastMCP para exponer la funcionalidad de búsqueda como una herramienta integrable con otros servicios.

Related MCP server: Obsidian MCP Server

Características

  • Buscar en las notas de la bóveda de obsidiana

  • Integración de API REST

  • Devuelve rutas absolutas a las notas coincidentes

  • Fácil integración con las herramientas FastMCP

Prerrequisitos

  • Python 3.x

  • Obsidian con el complemento Omnisearch instalado y en ejecución

  • Biblioteca FastMCP

  • Bóveda de obsidiana activa

Instalación

Instalación mediante herrería

Para instalar MCP Server Obsidian Omnisearch para Claude Desktop automáticamente a través de Smithery :

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

Instalación manual

  1. Clonar el repositorio:

git clone https://github.com/anpigon/mcp-server-obsidian-omnisearch.git
cd mcp-server-obsidian-omnisearch
  1. Instalar dependencias:

uv install

Configuración

La ruta de la bóveda de Obsidian ahora se proporciona como un argumento de línea de comando al ejecutar el servidor:

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

Uso

API de búsqueda omnidireccional de Obsidian

Necesita el complemento de la comunidad Obsidian Omnisearch en ejecución: https://publish.obsidian.md/omnisearch/Inject+Omnisearch+results+into+your+search+engine

Escritorio de Claude

En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

En Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "obsidian-omnisearch": {
      "command": "uv",
      "args": [
        "--directory",
        "<dir_to>/mcp-server-obsidian-omnisearch",
        "run",
        "mcp-server-obsidian-omnisearch",
        "/path/to/your/obsidian/vault"
      ]
    }
  }
}
{
  "mcpServers": {
    "obsidian-omnisearch": {
      "command": "uvx",
      "args": [
        "mcp-server-obsidian-omnisearch",
        "/path/to/your/obsidian/vault"
      ]
    }
  }
}

Referencia de API

Notas de búsqueda

  • Función: obsidian_notes_search(query: str)

  • Descripción: Busca notas de Obsidian y devuelve rutas absolutas a las notas coincidentes

  • Parámetros:

    • query : cadena de consulta de búsqueda

  • Devuelve: Lista de rutas absolutas a notas coincidentes

Desarrollo

Construcción y publicación

Para preparar el paquete para su distribución:

  1. Sincronizar dependencias y actualizar el archivo de bloqueo:

uv sync
  1. Distribuciones de paquetes de compilación:

uv build

Esto creará distribuciones de origen y de rueda en el directorio dist/ .

  1. Publicar en PyPI:

uv publish

Nota: Deberás configurar las credenciales de PyPI a través de variables de entorno o indicadores de comando:

  • Token: --token o UV_PUBLISH_TOKEN

  • O nombre de usuario/contraseña: --username / UV_PUBLISH_USERNAME y --password / UV_PUBLISH_PASSWORD

Depuración

Dado que los servidores MCP se ejecutan en stdio, la depuración puede ser complicada. Para una experiencia óptima, recomendamos usar el Inspector MCP .

Puede iniciar el Inspector MCP a través de npm con este comando:

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

Al iniciarse, el Inspector mostrará una URL a la que podrá acceder en su navegador para comenzar a depurar.

También puedes ver los registros del servidor con este comando:

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

Dependencias

  • FastMCP

  • solicitudes

  • urllib

Licencia

Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

Available Tools

2 tools
read_noteC

Read and return the contents of an Obsidian note file.

ParametersJSON Schema
NameRequiredDescriptionDefault
filepathYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions reading and returning contents, which implies a read-only operation, but doesn't specify error handling (e.g., what happens if the file doesn't exist), permissions required, or format of returned data. This leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is insufficient for a tool that reads files. It doesn't cover error cases, return format, or parameter details, leaving the agent with incomplete information to use the tool effectively in a real-world context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, and the description doesn't explain the 'filepath' parameter beyond what's implied by the tool name. It doesn't specify the expected format (e.g., relative vs absolute path, file extension requirements) or provide examples, failing to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Read and return the contents') and resource ('an Obsidian note file'), making the tool's purpose immediately understandable. However, it doesn't differentiate from the sibling tool 'obsidian_notes_search', which likely serves a different purpose (searching vs reading specific files).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'obsidian_notes_search', nor does it mention any prerequisites or contextual constraints. It merely states what the tool does without indicating appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.0
    • Changedobsidian_notes_search1 field changed
      • removedInput schema / properties / query / title
        Removed value: -"Query"
    • Changedread_note1 field changed
      • removedInput schema / properties / filepath / title
        Removed value: -"Filepath"
  2. 2 tool updates
    • First observedobsidian_notes_search
    • First observedread_note

TDQS

B3.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have completely distinct purposes: one searches for notes and returns paths, while the other reads the content of a specific note. There is no overlap or ambiguity between them.

Naming Consistency5/5

Both tools follow a consistent snake_case naming pattern with clear verb_noun structure (obsidian_notes_search, read_note). The naming is predictable and readable throughout.

Tool Count2/5

With only two tools, the server feels thin for its purpose of Obsidian Omnisearch. While the tools cover basic search and read operations, the scope suggests more functionality (e.g., create, update, delete notes, or advanced search features) would be expected.

Completeness2/5

The server is severely incomplete for an Obsidian search domain. It lacks any CRUD operations (create, update, delete notes) and advanced search capabilities (e.g., filtering by tags, dates). Agents will hit dead ends when trying to perform common note management tasks.

Maintenance

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers