Second Brain MCP
MCP server that ingests YouTube videos and podcasts, making them searchable with timestamps and deep links to exact moments.
README
🧠 Second Brain MCP
Remember everything you watch and listen to.
A Model Context Protocol server that turns YouTube videos and podcasts into a private, searchable memory — built on the brand-new stateless MCP spec (2026-07-28).
Paste a link once. Ask about it forever.
"What did that video I watched last month say about salary negotiation?"
🧠 → "At [12:43] in Never Split the Difference — Chris Voss, he says never to accept the first offer without anchoring high…" — with a deep link that jumps to the exact second.
Why
You watch hours of talks, tutorials, and podcasts — and a week later you can quote none of it. Browser history remembers that you watched something; nothing remembers what it said. Second Brain gives your AI assistant total recall over everything you've ever watched or listened to:
- 🎯 Ask across your whole watch history — answers come back with timestamps and deep links to the exact moment.
- 🔒 Private by design — one local SQLite file. No cloud, no accounts, no API keys. Podcast audio is transcribed locally.
- ⚡ Zero-key ingestion — YouTube captions are fetched directly; nothing to configure.
- 🗑️ Nothing is deleted without you — destructive operations use the spec's new multi round-trip (MRTR) approval flow.
Quickstart
1. Install
Option A — as a tool, straight from GitHub (recommended):
uv tool install git+https://github.com/ravishu5/second-brain-mcp
This installs the second-brain command into ~/.local/bin. Find its absolute path — you'll need it below:
which second-brain # e.g. /Users/you/.local/bin/second-brain
Option B — from a local clone (for hacking on it):
git clone https://github.com/ravishu5/second-brain-mcp
cd second-brain-mcp
python3 -m venv .venv && .venv/bin/pip install -e .
Your binary is then at <clone-dir>/.venv/bin/second-brain.
2. Connect a client
Always use the absolute path to the binary. GUI apps (like Claude Desktop) don't inherit your shell's
PATH, so a baresecond-braincommand often fails with "Failed to spawn process: No such file or directory".
Claude Code
claude mcp add second-brain -- /absolute/path/to/second-brain
Claude Desktop — Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"second-brain": {
"command": "/absolute/path/to/second-brain"
}
}
}
ex: "command": "/Users/ravi/Desktop/mcp/second-brain-mcp/.venv/bin/second-brain" in my case
Fully quit (⌘Q) and reopen Claude Desktop — the server should show as connected under Settings → Developer.
As a stateless HTTP service (deployable behind any load balancer — no sticky sessions, no shared state):
second-brain --http --port 8000
3. Use it
Talk to your assistant:
› Remember this: https://www.youtube.com/watch?v=8S0FDjFBj8o
› What have I saved about system design?
› What did Lex's guest say about AGI timelines? Link me to the moment.
› Give me a digest of everything I added this week.
Tools
| Tool | What it does |
|---|---|
remember(url, episode?) |
Ingest a YouTube video or podcast episode: fetch transcript, chunk with timestamps, index. |
recall(query, limit?) |
BM25 full-text search across every transcript; returns passages with deep links to the exact second. |
library(limit?) |
Everything in the brain, newest first, with stats. |
transcript(item_ref, start?, end?) |
Read a raw transcript, optionally sliced by time range. |
digest(days?) |
What you added recently, rolled up. |
forget(item_ref) |
Delete an item — gated by MRTR user confirmation. |
Podcast transcription is optional (local faster-whisper):
pip install "second-brain-mcp[whisper]"
Built on the 2026-07-28 stateless spec
This server is a working showcase of MCP's biggest release since remote MCP launched:
sequenceDiagram
participant U as User
participant C as Client (Claude)
participant S as Second Brain
C->>S: tools/call forget("that crypto video")
S-->>C: resultType: input_required ("Permanently delete? No undo.")
C->>U: Asks for approval
U-->>C: Yes
C->>S: tools/call retry (inputResponses + requestState)
S-->>C: "Forgot 'Crypto Explained' (213 chunks removed)."
- Stateless by construction. No
initializehandshake, noMcp-Session-Id. Every request is self-contained; protocol metadata rides in_metaper request. Run one instance or twenty behind a load balancer — nothing breaks, because the only durable state is your local SQLite file, addressed through explicit item ids that clients thread between calls (exactly the application-state pattern the spec prescribes). - MRTR instead of server-push.
forgetreturnsresultType: "input_required"with an elicitation request; the client gathers your approval and retries withinputResponses. No open streams, no sessions — and nothing is ever deleted without a human saying yes. - Header-routable. Under the streamable HTTP transport, gateways can rate-limit
Mcp-Method: tools/call+Mcp-Name: remember(expensive ingestion) differently from cheaprecallreads — without parsing a byte of JSON. - SDK v2. Built on
mcpv2.0.0, released alongside the spec. Type hints are the schema;Resolve()powers the MRTR flow.
Architecture
┌─────────────┐ remember(url) ┌──────────────┐
│ Claude / │ ────────────────► │ ingest.py │ YouTube captions (no key)
│ any MCP │ │ │ RSS + local whisper
│ client │ recall(query) ├──────────────┤
│ │ ────────────────► │ store.py │ SQLite + FTS5 (BM25)
└─────────────┘ ◄─ passages + │ ~/.second- │ timestamped chunks
deep links │ brain/ │
└──────────────┘
Transcripts are merged into ~450-character chunks, split on silence gaps (usually topic boundaries), each carrying its start/end timestamps — so search hits map back to a playable moment, not just a document.
Troubleshooting
- "Server disconnected" / "Failed to spawn process: No such file or directory" — the client can't find the binary. Use the absolute path from
which second-brain(or your venv's.venv/bin/second-brain) in the config, then fully restart the client. - macOS:
PermissionError: Operation not permittedon a path under~/Desktop,~/Documents, or~/Downloads— macOS blocks other apps from reading those folders. Don't point the client at a venv inside them; install outside instead:uv tool install git+https://github.com/ravishu5/second-brain-mcp(lands in~/.local, which isn't protected). Alternatively grant the client Desktop access under System Settings → Privacy & Security → Files and Folders. - "No transcript/captions available" — the video has captions disabled; there's nothing to index (yet — see roadmap).
- Podcast ingestion errors about whisper — install the optional extra:
pip install "second-brain-mcp[whisper]". - Where's my data? One SQLite file at
~/.second-brain/brain.db. Override with theSECOND_BRAIN_DBenv var. Delete the file to wipe the brain.
Development
git clone https://github.com/ravishu5/second-brain-mcp
cd second-brain-mcp
uv sync --extra dev
uv run pytest
uv run mcp dev src/second_brain_mcp/server.py # MCP inspector
Roadmap
- [ ] Client-side summaries on ingest via MRTR
sampling/createMessage(the client's model writes the summary — still zero server keys) - [ ] Semantic search (local embeddings) alongside BM25
- [ ] Browser extension: one-click "remember this"
- [ ] Whisper speaker diarization for podcasts
PRs welcome — especially ingestion sources (lectures, audiobooks, Twitch VODs).
License
MIT © Ravi Shankar
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。