Skip to main content
Glama

pebble-index-mcp

MCP-мост, который открывает локальное хранилище Obsidian и экземпляр Hermes Agent для MCP-песочницы двойного нажатия умного кольца Pebble Index 01. Голосовые записи с кольца маршрутизируются облачным агентом приложения Pebble в инструменты этого сервера, а ответ возвращается в виде уведомления на телефоне.

Архитектура

[Index ring] → [Pebble app] → [Pebble cloud agent] → [this MCP server]
                                                        ├─ vault tools (local files)
                                                        └─ ask_hermes → Hermes API server
  • Сервер говорит по MCP через Streamable HTTP (официальный SDK mcp, FastMCP).

  • Каждый запрос должен содержать bearer-токен; всё остальное получает 401.

  • Защита FastMCP от DNS-rebinding включена: разрешённые хосты — loopback плюс всё, что указано в MCP_ALLOWED_HOSTS.

  • Публичный доступ — это туннель cloudflared к порту loopback; никакой облачной инфраструктуры, кроме этого, не требуется.

Related MCP server: mcp-obsidian

Компоненты

Путь

Роль

src/pebble_index_mcp/vault.py

Vault: чтение/добавление с песочницей по путям + поиск ripgrep по хранилищу. Все пути разрешаются внутри корня хранилища; абсолютные пути, обход .. и побег через симлинки отклоняются. Добавления — только append-only, с меткой времени, никогда не перезаписывают.

src/pebble_index_mcp/hermes.py

HermesClient: пересылает вопросы на OpenAI-совместимую конечную точку chat completions с системной подсказкой для коротких ответов. Преобразует таймауты/сбои транспорта/некорректные формы в HermesTimeout/HermesError.

src/pebble_index_mcp/server.py

Приложение FastMCP: регистрирует четыре инструмента и промпт ring_persona, оборачивает streamable-http приложение в bearer-аутентификацию (сравнение за постоянное время) и настраивает разрешённые хосты.

Инструменты

  • vault_search(query, max_results=5) — текстовый поиск без учёта регистра; возвращает строки path: excerpt.

  • vault_read(note_path, max_chars=1500) — читает начало заметки.

  • vault_append(note_path, text) — добавляет строку с меткой времени - HH:MM text, создавая заметку при необходимости.

  • ask_hermes(question) — пересылает на API-сервер Hermes; таймаут 60 секунд с честным подтверждением при промахе.

Безопасность

  • Аутентификация: статический bearer-токен (MCP_BEARER_TOKEN), сравнение за постоянное время, требуется для каждого запроса. Пустой токен закрывает доступ (все запросы 401) и логирует предупреждение при запуске.

  • Транспорт: TLS завершается на границе туннеля; источник слушает только loopback.

  • Проверка хоста: защита от DNS-rebinding отклоняет запросы, у которых заголовок Host не является loopback или не входит в MCP_ALLOWED_HOSTS.

  • Песочница путей: инструменты хранилища разрешают все пути и требуют, чтобы они оставались внутри корня хранилища; побег через симлинки отклоняется, а при открытии файлов используется O_NOFOLLOW для последнего компонента. Песочница защищает от случайного и удалённого неправильного использования; враждебный локальный процесс, который гоняется за подменой родительского каталога, всё ещё может выиграть (документированная граница TOCTOU — предполагается, что хранилище является доверенным однопользовательским каталогом).

  • Конфигурация читается один раз при импорте: ротация bearer-токена или изменение разрешённых хостов требует перезапуска службы.

  • Секреты: ключ API Hermes и MCP-токен хранятся в env-файле с правами 0600 вне этого репозитория, никогда в коде, логах или коммитах.

  • Примечание о конфиденциальности: записи, маршрутизируемые через песочницу двойного нажатия, проходят через облачный агент приложения Pebble. Записи одиночного нажатия остаются на устройстве. Чувствительные мысли принадлежат одиночному нажатию.

Конфигурация (env)

Переменная

По умолчанию

Назначение

VAULT_PATH

Обязательно. Корень хранилища для файловых инструментов

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

Bearer-ключ API-сервера

RING_MODEL

pebble-ring

Псевдоним модели, отправляемый вышестоящему серверу (сопоставьте его с дешёвой моделью через model_routes API-сервера)

RING_PERSONA_FILE

Необязательный путь к текстовому файлу, заменяющему общую персону облачного агента

HERMES_API_URL принимает любую OpenAI-совместимую конечную точку chat completions, поэтому ask_hermes работает напрямую с OpenRouter, Ollama или любым другим совместимым API — Hermes — это просто значение по умолчанию.

Разработка

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

Локальный запуск: задайте переменные окружения выше и выполните python -m pebble_index_mcp.server.

Развёртывание

deploy/ содержит шаблон пользовательского юнита systemd и шаблон туннеля cloudflared (имя хоста и учётные данные заполняются на хосте, а не в этом репозитории). См. docs/ring-checklist.md для настройки на стороне телефона и матрицы тестов.

Лицензия

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