pebble-index-mcp
pebble-index-mcp
Puente MCP que expone una bóveda local de Obsidian y una instancia de Hermes Agent al sandbox MCP de doble clic del anillo inteligente Pebble Index 01. Las capturas de voz del anillo son enrutadas por el agente en la nube de la aplicación Pebble hacia las herramientas de este servidor, y la respuesta vuelve como notificación en el teléfono.
Arquitectura
[Index ring] → [Pebble app] → [Pebble cloud agent] → [this MCP server]
├─ vault tools (local files)
└─ ask_hermes → Hermes API serverEl servidor habla MCP sobre HTTP Streamable (SDK oficial
mcp, FastMCP).Cada solicitud debe llevar un token de portador; cualquier otra cosa recibe 401.
La protección contra reenlace de DNS de FastMCP está activada: los hosts permitidos son loopback más cualquier cosa listada en
MCP_ALLOWED_HOSTS.La exposición pública es un túnel cloudflared hacia el puerto loopback; no se requiere infraestructura en la nube más allá de eso.
Related MCP server: mcp-obsidian
Componentes
Ruta | Función |
|
|
|
|
| Aplicación FastMCP: registra las cuatro herramientas y el prompt |
Herramientas
vault_search(query, max_results=5)— búsqueda de texto sin distinción de mayúsculas; devuelve líneaspath: excerpt.vault_read(note_path, max_chars=1500)— lee el inicio de una nota.vault_append(note_path, text)— añade una línea con marca de tiempo- HH:MM text, creando la nota si es necesario.ask_hermes(question)— reenvía al servidor de API de Hermes; timeout de 60s con un reconocimiento honesto en caso de fallo.
Seguridad
Autenticación: token de portador estático (
MCP_BEARER_TOKEN), comparado en tiempo constante, requerido en cada solicitud. Un token vacío falla cerrado (todas las solicitudes 401) y registra una advertencia al inicio.Transporte: TLS termina en el borde del túnel; el origen escucha solo en loopback.
Validación de host: la protección contra reenlace de DNS rechaza solicitudes cuyo encabezado Host no sea loopback o esté en
MCP_ALLOWED_HOSTS.Sandbox de rutas: las herramientas de la bóveda resuelven todas las rutas y exigen que permanezcan dentro de la raíz de la bóveda; se rechazan escapes de symlink y las aperturas de archivos usan
O_NOFOLLOWen el componente final. El sandbox protege contra uso accidental y remoto; un proceso local hostil que compita con un intercambio de directorio padre aún puede ganar (límite TOCTOU documentado — se asume que la bóveda es un directorio de un solo usuario de confianza).La configuración se lee una vez al importar: rotar el token de portador o cambiar los hosts permitidos requiere reiniciar el servicio.
Secretos: la clave de API de Hermes y el token MCP viven en un archivo de entorno 0600 fuera de este repositorio, nunca en código, registros o commits.
Nota de privacidad: las grabaciones enrutadas a través del sandbox de doble clic transitan por el agente en la nube de la aplicación Pebble. Las capturas de un solo clic permanecen en el dispositivo. Los pensamientos sensibles pertenecen al clic único.
Configuración (env)
Variable | Por defecto | Propósito |
| — | Requerido. Raíz de la bóveda para las herramientas de archivos |
|
| Dirección de escucha |
| — | Requerido; token de autenticación de solicitud |
| — | Valores de Host permitidos adicionales separados por comas (el hostname público del túnel va aquí) |
|
| destino de ask_hermes |
| — | clave de portador del servidor de API |
|
| Alias de modelo enviado upstream (mapearlo a un modelo barato mediante |
| — | Ruta opcional a un archivo de texto que reemplaza la persona genérica del agente en la nube |
HERMES_API_URL acepta cualquier endpoint de chat completions compatible con OpenAI, por lo que ask_hermes funciona directamente contra OpenRouter, Ollama, o cualquier otra API compatible — Hermes es solo el predeterminado.
Desarrollo
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest -vEjecutar localmente: configura las variables de entorno anteriores y python -m pebble_index_mcp.server.
Despliegue
deploy/ contiene una plantilla de unidad de usuario de systemd y una plantilla de túnel cloudflared (hostname y credenciales completados en el host, no en este repositorio). Consulta docs/ring-checklist.md para la configuración del lado del teléfono y la matriz de pruebas.
Licencia
MIT — ver LICENSE.
This server cannot be installed
Maintenance
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
- AlicenseAqualityDmaintenanceEnables 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.103,8604MIT
- AlicenseNot gradedqualityBmaintenanceConnects 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.23213MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Obsidian notes via local REST API, supporting file CRUD, search, commands, and periodic notes.2,4727Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to search, create, and manage notes in an Obsidian vault via 40+ local tools.5222MIT
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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