Skip to main content
Glama

pebble-index-mcp

ローカルの Obsidian Vault と Hermes Agent インスタンスを、Pebble Index 01 スマートリングのダブルクリック MCP サンドボックスに公開する MCP ブリッジです。リングからの音声キャプチャは Pebble アプリのクラウドエージェントによってこのサーバーのツールにルーティングされ、回答はスマートフォンへの通知として返ってきます。

Architecture

[Index ring] → [Pebble app] → [Pebble cloud agent] → [this MCP server]
                                                        ├─ vault tools (local files)
                                                        └─ ask_hermes → Hermes API server
  • サーバーは Streamable HTTP 上で MCP を話します (公式 mcp SDK、FastMCP)。

  • すべてのリクエストはベアラートークンを必須とし、トークンがないものは 401 になります。

  • FastMCP の DNS リバインディング保護は有効です。許可されるホストはループバックと、MCP_ALLOWED_HOSTS に列挙されたものです。

  • 外部公開はループバックポートへの cloudflared トンネルで行い、それ以上のクラウドインフラストラクチャは必要ありません。

Related MCP server: mcp-obsidian

Components

パス

役割

src/pebble_index_mcp/vault.py

Vault: パスをサンドボックスで隔離した読み取り/追記と、Vault 全体に対する ripgrep 検索。すべてのパスは Vault のルート内に解決されます。絶対パス、.. トラバーサル、シンボリックリンクのエスケープは拒否されます。追記は追記専用・タイムスタンプ付きで、既存の内容を上書きしません。

src/pebble_index_mcp/hermes.py

HermesClient: 短い回答を促すシステムヒント付きの OpenAI 互換 chat completions エンドポイントへ質問を転送します。タイムアウト、トランスポート障害、不正な応答形状を HermesTimeout/HermesError にマッピングします。

src/pebble_index_mcp/server.py

FastMCP アプリ: 4 つのツールと ring_persona プロンプトを登録し、streamable-http アプリをベアラー認証 (定数時間比較) でラップして、ホストの許可リストを設定します。

Tools

  • vault_search(query, max_results=5) — 大文字と小文字を区別しないテキスト検索。path: 抜粋 の行を返します。

  • vault_read(note_path, max_chars=1500) — ノートの先頭を読み取ります。

  • vault_append(note_path, text) — タイムスタンプ付きの - HH:MM text 行を追記します。必要に応じてノートを作成します。

  • ask_hermes(question) — Hermes API サーバーに転送します。60 秒のタイムアウト時は、応答が得られなかったことを誠実に伝えます。

Security

  • 認証: 静的なベアラートークン (MCP_BEARER_TOKEN) を定数時間比較で必須確認します。空のトークンはフェイルクローズ (全リクエスト 401) となり、起動時に警告がログされます。

  • Transport: TLS はトンネルのエッジで終端され、オリジンはループバックのみで待ち受るします。

  • ホスト検証: Host ヘッダーがループバックでも MCP_ALLOWED_HOSTS にも該当しないリクエストは、DNS リバインディング保護が拒否します。

  • パスサンドボックス: Vault ツールはすべてのパスを解決し、Vault のルート内に収まることを要求します。シンボリックリンクのエスケープは拒否され、ファイルオープンでは最終コンポーネントに O_NOFOLLOW が使用されます。サンドボックスは偶発的・遠隔からの誤用を防ぎますが、親ディレクトリの差し替えを競合させる悪意のあるローカルプロセスには依然として制まずがあります (文書化された TOCTOU 境界 — Vault は信頼された単一ユーザーディレクトリとみなされます)。

  • 設定は import 時に一度だけ読み込みます。ベアラートークンのローテーションや許可ホストの変更はサービス再起動が必要です。

  • シークレット: Hermes API キーと MCP トークンは、このリポジトリ外の権限 0600 の env ファイルに置かれます。コード・ログ・コミットに含めることは絶対にありません。

  • プライバシー: ダブルクリックサンドボックス経由の録音は、Pebble アプリのクラウドエージェントを通過します。シングルクリックのキャプチャは端末上に留まります。機密に近い思考を扱う操作はシングルクリックで行ってください。

Configuration (env)

変数

デフォルト

説明

VAULT_PATH

必須。 ファイルツールのための Vault ルート。

MCP_HOST / MCP_PORT

127.0.0.1 / 8765

待ち受けアドレス。

MCP_BEARER_TOKEN

必須。リクエスト認証トークン。

MCP_ALLOWED_HOSTS

追加で許可する Host 値のカンマ区切りリスト (公開トンネルのホスト名をここに指定)。

HERMES_API_URL

http://127.0.0.1:8642/v1/chat/completions

ask_hermes の送信先。

HERMES_API_KEY

API サーバーのベアラートークン。

RING_MODEL

pebble-ring

送信先に渡すモデルエイリアス (API サーバーの model_routes で低コストの モデルにマップできます)。

RING_PERSONA_FILE

既定のクラウドエージェントペルソナを置き換えるテキストファイルへの任意パス。

HERMES_API_URL は OpenAI 互換の chat completions エンドポイントを任意で受け付けられるため、ask_hermes は OpenRouter 直接、Ollama、その他の互換 API に対しても動作します。Hermes は単なるデフォルトです。

Development

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest -v

ローカルで実行するには、上記の環境変数を設定し、python -m pebble_index_mcp.server を使用します。

Deployment

deploy/ には systemd ユーザーユニットのテンプレートと cloudflared トンネルのテンプレートが含まれています (ホスト名と資格情報はこのリポジトリではなくホスト側で記入します)。docs/ring-checklist.md でスマートフォン側のセットアップとテストマトリックスを確認してください。

License

MIT — LICENSE を参照してください。

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to interact with Obsidian vaults for creating, reading, searching, and managing notes, daily notes, TODOs, session reports, and backlinks through both stdio and HTTP/SSE transports.
    10
    3,860
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants to Obsidian vaults via the Local REST API to search notes, retrieve content, and perform semantic searches. It features self-healing multi-URL connectivity and supports both stdio and HTTP transports for flexible deployment.
    232
    13
    MIT

View all related MCP servers

Related MCP Connectors

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jcrabapple/pebble-index-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server