Skip to main content
Glama
anpigon

Obsidian Omnisearch MCP Server

by anpigon

MCP 服务器 Obsidian Omnisearch

铁匠徽章基于 FastMCP 的服务器,通过 REST API 接口提供 Obsidian 保险库搜索功能。

概述

该项目实现了一项搜索服务,允许您以编程方式搜索 Obsidian 保险库笔记。它使用 FastMCP 将搜索功能公开为可与其他服务集成的工具。

Related MCP server: Obsidian MCP Server

特征

  • 搜索黑曜石金库笔记

  • REST API 集成

  • 返回匹配注释的绝对路径

  • 轻松与 FastMCP 工具集成

先决条件

  • Python 3.x

  • 安装并运行 Omnisearch 插件的 Obsidian

  • FastMCP 库

  • 活跃的黑曜石金库

安装

通过 Smithery 安装

要通过Smithery自动为 Claude Desktop 安装 MCP Server Obsidian Omnisearch:

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

手动安装

  1. 克隆存储库:

git clone https://github.com/anpigon/mcp-server-obsidian-omnisearch.git
cd mcp-server-obsidian-omnisearch
  1. 安装依赖项:

uv install

配置

现在,运行服务器时,Obsidian 保险库路径作为命令行参数提供:

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

用法

Obsidian Omnisearch API

您需要运行 Obsidian Omnisearch 社区插件: https://publish.obsidian.md/omnisearch/Inject+Omnisearch+results+into+your+search+engine

克劳德桌面

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

在 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"
      ]
    }
  }
}

API 参考

搜索笔记

  • 函数: obsidian_notes_search(query: str)

  • 描述:搜索 Obsidian 笔记并返回匹配笔记的绝对路径

  • 参数:

    • query :搜索查询字符串

  • 返回:匹配注释的绝对路径列表

发展

构建和发布

准备分发包:

  1. 同步依赖项并更新锁文件:

uv sync
  1. 构建软件包分发版:

uv build

这将在dist/目录中创建源和轮子分布。

  1. 发布到 PyPI:

uv publish

注意:您需要通过环境变量或命令标志设置 PyPI 凭据:

  • 令牌: --token或UV_PUBLISH_TOKEN

  • 或用户名/密码: --username / UV_PUBLISH_USERNAME和--password / UV_PUBLISH_PASSWORD

调试

由于 MCP 服务器通过 stdio 运行,调试起来可能比较困难。为了获得最佳调试体验,我们强烈建议使用MCP Inspector 。

您可以使用以下命令通过npm启动 MCP Inspector:

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

启动后,检查器将显示一个 URL,您可以在浏览器中访问该 URL 以开始调试。

您还可以使用以下命令查看服务器日志:

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

依赖项

  • FastMCP

  • 请求

  • urllib

执照

该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅LICENSE文件。

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

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