pebble-index-mcp
pebble-index-mcp
로컬 Obsidian 볼트와 Hermes Agent 인스턴스를 Pebble Index 01 스마트 링의 더블클릭 MCP 샌드박스에 노출하는 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 토큰을携带해야 하며, 그 외에는 401을 반환합니다.
FastMCP의 DNS 리바인딩 보호가 활성화되어 있습니다: 허용된 호스트는 루프백과
MCP_ALLOWED_HOSTS에 나열된 모든 항목입니다.공개 노출은 루프백 포트로의 cloudflared 터널입니다. 그 외에 클라우드 인프라는 필요하지 않습니다.
Related MCP server: mcp-obsidian
구성 요소
경로 | 역할 |
|
|
|
|
| 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 토큰(
MCP_BEARER_TOKEN), 상수 시간 비교, 모든 요청에 필수. 빈 토큰은 실패 시 닫힘(모든 요청 401) 및 시작 시 경고를 기록합니다.전송: TLS는 터널 가장자리에서 종료됩니다. 오리진은 루프백에서만 수신합니다.
호스트 검증: DNS 리바인딩 보호는 Host 헤더가 루프백이거나
MCP_ALLOWED_HOSTS에 없는 요청을 거부합니다.경로 샌드박스: 볼트 도구는 모든 경로를 해석하고 볼트 루트 내부에 있어야 합니다. 심볼릭 링크 탈출은 거부되며 파일 열기는 최종 구성 요소에
O_NOFOLLOW를 사용합니다. 샌드박스는 우발적 및 원격 오용을 방지합니다. 적대적인 로컬 프로세스가 상위 디렉터리 교체를 경쟁적으로 수행하면 여전히 이길 수 있습니다(문서화된 TOCTOU 경계 — 볼트는 신뢰할 수 있는 단일 사용자 디렉터리로 가정).구성은 가져오기 시 한 번 읽습니다: bearer 토큰을 회전하거나 허용된 호스트를 변경하려면 서비스 재시작이 필요합니다.
비밀: Hermes API 키와 MCP 토큰은 이 저장소 외부의 0600 환경 파일에 있으며, 코드, 로그, 커밋에 절대 포함되지 않습니다.
개인정보 참고: 더블클릭 샌드박스를 통해 라우팅된 녹음은 Pebble 앱의 클라우드 에이전트를 통과합니다. 싱글클릭 캡처는 기기에만 남습니다. 민감한 생각은 싱글클릭에 속합니다.
구성 (env)
변수 | 기본값 | 용도 |
| — | 필수. 파일 도구용 볼트 루트 |
|
| 수신 주소 |
| — | 필수; 요청 인증 토큰 |
| — | 쉼표로 구분된 추가 허용 Host 값 (공개 터널 호스트 이름이 여기에 들어감) |
|
| ask_hermes 대상 |
| — | API 서버 bearer 키 |
|
| 업스트림으로 전송되는 모델 별칭 (API 서버의 |
| — | 일반 클라우드 에이전트 페르소나를 대체하는 텍스트 파일의 선택적 경로 |
HERMES_API_URL은 모든 OpenAI 호환 채팅 완료 엔드포인트를 허용하므로 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 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