Skip to main content
Glama
Utkarshsharma30

Obsidian Knowledge MCP

Obsidian Knowledge MCP

読み取り専用の Obsidian-to-PostgreSQL インポーター兼 MCP サーバーです。ボールトが唯一の情報源であり、取り込み処理は Markdown ファイルを読み取るだけで、それらを編集または削除することはありません。

アーキテクチャ

Obsidian vault -> Python parser/upsert importer -> PostgreSQL -> FastMCP tools/resources -> Claude Connector

ドキュメントは相対パスと元の Markdown 本文を保持します。各ノートは document ノードになり、[[links]] は有向の related_to エッジと document_links になります。タグ、エイリアス、見出し、および認識されない frontmatter は JSONB に保持されます。存在しないリンク先はログに記録され、スキップされます。取り込みを再実行すると、ファイルパスに基づいてレコードが更新され、重複するエッジやタグが防止されます。

Related MCP server: Semantic Notes Vault MCP

セットアップ

前提条件: Python 3.11+、Docker Desktop、および手動で SQL を検査したい場合のみ PostgreSQL クライアント。

  1. .env.example を .env にコピーし、POSTGRES_PASSWORD を設定し、OBSIDIAN_VAULT_PATH に既存のボールトを指定します。特に必要がなければ、ボールトをこのプロジェクト内に置かないでください。

  2. 環境を作成し、依存関係をインストールします:

    py -m venv .venv
    .\.venv\Scripts\Activate.ps1
    pip install -e ".[test]"
  3. PostgreSQL を起動します。ポートは localhost にのみバインドされています:

    docker compose up -d postgres
  4. ボールトをインポートします:

    python -m ingestion.importer
    # or: obsidian-ingest "C:\path\to\vault"
  5. 検証します:

    docker compose exec postgres psql -U knowledge_app -d knowledge -c "select count(*) from documents; select count(*) from edges;"
    pytest

スキーマは初期化スクリプトとしてマウントされます。既存のボリュームの場合は、psql -f database/schema.sql で変更を明示的に適用してください。

Render でのデプロイ

このリポジトリには、Render の無料 Web Service 用の render.yaml が含まれています。Render で、このリポジトリから新しい Blueprint を作成してデプロイしてください。Render は MCP_AUTH_TOKEN を生成し、自身の PORT を使用します。Render のマネージド PostgreSQL サービスでは支払い情報が必要になるため、Neon や Supabase などの無料の外部 PostgreSQL プロバイダーから DATABASE_URL を指定してください。クエリを実行する前に、database/schema.sql をそのデータベースに適用してください。デフォルトの公開エンドポイントは次のとおりです:

https://obsidian-knowledge-mcp.onrender.com/mcp

サービス名を変更する場合は、Render 環境の MCP_PUBLIC_URL を、結果の https://<service-name>.onrender.com URL に更新してください。MCP_PUBLIC_URL に /mcp を追加しないでください。/mcp は Claude コネクタの URL にのみ含まれます。

Render サービスは Windows または OneDrive のボールトを読み取ることができません。ボールトとデータベースの両方にアクセスできるマシンから、ボールトを外部 PostgreSQL データベースにインポートするか、クエリを実行する前に、Render からアクセス可能な別のストレージ/インポートジョブを追加してください。

MCP サーバー

ローカルでは次のように実行します:

python -m mcp_server.server

デフォルトのエンドポイントは、Streamable HTTP を使用する http://127.0.0.1:8000/mcp です。ローカルクライアントの場合は、MCP_TRANSPORT=stdio を設定し、コマンドとして obsidian-mcp を使用します。サーバーは、search_knowledge、get_node、get_document、get_related_nodes、find_path、list_nodes、search_documents に加えて、knowledge://node/{node_name} リソースを公開します。上限は 100 に設定され、SQL はパラメータ化されています。

Claude コネクタ

Claude コネクタには、PostgreSQL エンドポイントではなく、リモートから到達可能な MCP エンドポイントが必要です。Claude Settings -> Connectors で、/mcp で終わる Render の URL(例: https://obsidian-knowledge-mcp.onrender.com/mcp)を追加します。プロンプトが表示されたら、生成された MCP_AUTH_TOKEN をベアラートークンとして使用し、Claude ワークスペースで必要な認証フローを完了してから、What do I have in my knowledge base about Python? でテストしてください。

本番環境では、静的トークンではなく、ID 認識型プロキシ(OAuth/OIDC)または mTLS を使用してください。ポート 5432 を公開しないでください。Claude が接続エラーを報告した場合は、docker compose ps、docker compose logs postgres、MCP プロセスのログ、HTTPS 証明書/DNS、/mcp のプロキシ転送、およびエンドポイントがネットワークの外部から到達可能かどうかを確認してください。認証付きヘルスチェックはデータベースエラーとは別に保ち、スタックトレースを公開しないでください。

クエリ例

  • 機械学習に接続されている概念は何ですか?

  • Python と人工知能の間の関係パスを探してください。

  • RAG から 2 ホップ以内にある概念は何ですか?

  • Python と機械学習の両方に言及しているドキュメントはどれですか?

前提と拡張ポイント

このワークスペースには検査できるボールトがなかったため、パース処理は標準的な Obsidian の規約に従い、tests/test_parser.py のフィクスチャでカバーされています。Dataview 固有の構文はコンテンツとして保持されます。リポジトリ層が SQL を MCP から分離しているため、MCP の契約を変更せずに将来の双方向同期が可能です。MCP_AUTH_TOKEN は Streamable HTTP サーバーによって強制されます。より強力な本番環境のアクセス制御には、ID 認識型プロキシ(OAuth/OIDC)を使用してください。

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Connects AI assistants to an Obsidian vault as a semantic knowledge graph, enabling graph navigation, semantic search, and content operations through MCP.
    9 npm
    467
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides read-only access to an Obsidian vault, enabling file listing, content reading, and text search across notes via MCP.
    4
    2
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables reading, writing, searching, and managing Obsidian vault notes through MCP tools and prompts, allowing AI agents to interact with local knowledge bases.
    -