Obsidian Omnisearch MCP Server
MCP サーバー Obsidian Omnisearch
REST API インターフェースを通じて Obsidian Vault 検索機能を提供する FastMCP ベースのサーバー。
概要
このプロジェクトは、Obsidian Vault のノートをプログラムで検索できる検索サービスを実装します。FastMCP を使用することで、検索機能を他のサービスと統合できるツールとして公開できます。
Related MCP server: Obsidian MCP Server
特徴
Obsidian Vaultのノートを検索する
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手動インストール
リポジトリをクローンします。
git clone https://github.com/anpigon/mcp-server-obsidian-omnisearch.git
cd mcp-server-obsidian-omnisearch依存関係をインストールします:
uv install構成
サーバー実行時に、Obsidian の金庫パスがコマンド ライン引数として提供されるようになりました。
python server.py /path/to/your/obsidian/vault使用法
Obsidian オムニサーチ 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: 検索クエリ文字列
戻り値: 一致するノートへの絶対パスのリスト
発達
建築と出版
配布用のパッケージを準備するには:
依存関係を同期し、ロックファイルを更新します。
uv syncパッケージディストリビューションをビルドします。
uv buildこれにより、 dist/ディレクトリにソースとホイールのディストリビューションが作成されます。
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 がインスペクタに表示されます。
次のコマンドでサーバー ログを監視することもできます。
tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-server-obsidian-omnisearch.log依存関係
ファストMCP
リクエスト
urllib
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細についてはLICENSEファイルを参照してください。
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
Available Tools
2 toolsobsidian_notes_searchB
Search Obsidian(옵시디언) notes and return absolute paths to the matching notes. The returned paths can be used with the read_note tool to view the note contents.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes the action (search) and output (absolute paths), but lacks details on behavioral traits such as search scope (e.g., full-text, metadata), performance (e.g., speed, limits), error handling, or authentication needs. This is a significant gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: two sentences that directly state the tool's purpose and usage. Every sentence earns its place by providing essential information without waste, making it efficient and easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a search tool with no output schema and no annotations), the description is incomplete. It explains the basic purpose and output format but lacks critical context such as search behavior, result limitations, error cases, or integration details with the sibling tool. This leaves gaps for an AI agent to understand how to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 1 parameter ('query') with 0% description coverage, meaning the schema provides no details about it. The description does not add any semantic information about the 'query' parameter, such as its format, syntax, or examples. This leaves the parameter largely undocumented, failing to compensate for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search Obsidian notes and return absolute paths to the matching notes.' It specifies the verb (search), resource (Obsidian notes), and output (absolute paths). However, it does not explicitly differentiate from its sibling 'read_note' beyond mentioning that the returned paths can be used with it, which is more of a usage hint than a distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for usage: 'The returned paths can be used with the read_note tool to view the note contents.' This indicates when to use this tool (to find notes) versus its sibling (to read them). However, it lacks explicit exclusions or alternatives, such as when not to use it or if there are other search methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteC
Read and return the contents of an Obsidian note file.
| Name | Required | Description | Default |
|---|---|---|---|
| filepath | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v1.0.0- Changed
obsidian_notes_search1 field changed- removed
Input schema / properties / query / titleRemoved value: -"Query"
- Changed
read_note1 field changed- removed
Input schema / properties / filepath / titleRemoved value: -"Filepath"
2 tool updates
- First observed
obsidian_notes_search - First observed
read_note
TDQS
Scored across 2 tools
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.
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.
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.
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
Related MCP Connectors
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search, read, and safely update Markdown notes in your connected Phasoric knowledge vaults.
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides a standardized interface for AI assistants to interact with Obsidian vaults through a local REST API, enabling reading, writing, searching, and managing notes.69MIT
- AlicenseBqualityDmaintenanceEnables direct file system access to Obsidian vaults with auto-discovery, full-text search, and note operations. Supports reading, writing, and searching across Obsidian notes without requiring plugins or REST API.63,254 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, read, and analyze Obsidian notes via the Local REST API.18 npm17ISC
- AlicenseNot gradedqualityDmaintenanceEnables users to search, list, and read notes in an Obsidian vault via a CLI or HTTP API, integrating with Obsidian for note management.398 npmMIT