pebble-index-mcp
pebble-index-mcp
MCP 桥接器,将本地 Obsidian 仓库和 Hermes Agent 实例暴露给 Pebble Index 01 智能戒指的双击 MCP 沙箱。来自戒指的语音捕获由 Pebble 应用的云代理路由到此服务器的工具中,答案以手机通知的形式返回。
架构
[Index ring] → [Pebble app] → [Pebble cloud agent] → [this MCP server]
├─ vault tools (local files)
└─ ask_hermes → Hermes API server服务器通过 Streamable HTTP 使用 MCP 协议(官方
mcpSDK,FastMCP)。每个请求都必须携带 bearer token;否则返回 401。
FastMCP 的 DNS 重绑定保护已开启:允许的主机为 loopback 加上
MCP_ALLOWED_HOSTS中列出的任何主机。公网暴露是通过 cloudflared 隧道连接到 loopback 端口;除此之外不需要任何云基础设施。
Related MCP server: Obsidian MCP Server
组件
路径 | 角色 |
|
|
|
|
| FastMCP 应用:注册四个工具和 |
工具
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)— 转发到 Hermes API 服务器;60 秒超时,未命中时给出坦诚的确认。
安全
认证:静态 bearer token(
MCP_BEARER_TOKEN),常量时间比较,每个请求都必须携带。空 token 默认拒绝(所有请求返回 401)并在启动时记录警告。传输:TLS 在隧道边缘终止;源服务仅监听 loopback。
主机校验:DNS 重绑定保护会拒绝 Host 头不是 loopback 或不在
MCP_ALLOWED_HOSTS中的请求。路径沙箱:仓库工具解析所有路径并要求它们保持在仓库根目录内;符号链接逃逸会被拒绝,文件打开时对最终组件使用
O_NOFOLLOW。沙箱可防范意外和远程滥用;但一个恶意的本地进程如果与父目录替换进行竞态,仍可能获胜(已记录的 TOCTOU 边界——仓库被假定为可信的单用户目录)。配置在导入时只读取一次:轮换 bearer token 或更改允许的主机需要重启服务。
机密:Hermes API 密钥和 MCP token 存放在本仓库之外的 0600 权限环境变量文件中,绝不进入代码、日志或提交。
隐私说明:通过双击沙箱路由的录音会经过 Pebble 应用的云代理。单击捕获保留在设备本地。敏感想法应使用单击。
配置(env)
变量 | 默认值 | 用途 |
| — | 必需。 文件工具使用的仓库根目录 |
|
| 监听地址 |
| — | 必需;请求认证 token |
| — | 逗号分隔的额外允许 Host 值(公网隧道主机名填写在此处) |
|
| ask_hermes 目标 |
| — | API 服务器 bearer 密钥 |
|
| 发送到上游的模型别名(可通过 API 服务器的 |
| — | 可选:用于替换通用云代理的人设的文本文件路径 |
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。
This server cannot be deployed
Maintenance
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Voice notes that organize themselves. Capture by Siri, AI auto-tags, semantic search retrieves.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Notes and actions in one app. Let Claude or ChatGPT read and update them.
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,254 npm4MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage Obsidian notes via local REST API, supporting file CRUD, search, commands, and periodic notes.3,187 npm7Apache 2.0
- AlicenseBqualityDmaintenanceEnables AI assistants to search, create, and manage notes in an Obsidian vault via 40+ local tools.5212 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage and search Obsidian notes, folders, metadata, and links directly.-