🚀 Lenny RAG MCP 服務器
Lenny RAG MCP 服務器是一個基於 299 篇 Lenny Rachitsky 播客文字稿提供分層檢索增強生成(RAG)功能的 MCP 服務器。它能夠通過檢索相關見解、真實案例和完整文字稿上下文,助力產品開發頭腦風暴。
🚀 快速開始
克隆倉庫
git clone git@github.com:mpnikhil/lenny-rag-mcp.git
cd lenny-rag-mcp
創建並激活虛擬環境
python -m venv venv
source venv/bin/activate
安裝包
pip install -e .
Claude 代碼配置
claude mcp add lenny --scope user -- /path/to/lenny-rag-mcp/venv/bin/python -m src.server
或者添加到 ~/.claude.json:
{
"mcpServers": {
"lenny": {
"type": "stdio",
"command": "/path/to/lenny-rag-mcp/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/lenny-rag-mcp"
}
}
}
Claude 桌面端配置
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"lenny": {
"command": "/path/to/lenny-rag-mcp/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/lenny-rag-mcp"
}
}
}
Cursor 配置
添加到項目中的 .cursor/mcp.json 或全局的 ~/.cursor/mcp.json:
{
"mcpServers": {
"lenny": {
"command": "/path/to/lenny-rag-mcp/venv/bin/python",
"args": ["-m", "src.server"],
"cwd": "/path/to/lenny-rag-mcp"
}
}
}
⚠️ 重要提示
請在所有配置中,將 /path/to/lenny-rag-mcp 替換為你實際克隆倉庫的路徑。
✨ 主要特性
search_lenny
對整個語料庫進行語義搜索,返回用於漸進式展示的指針。
| 參數 |
類型 |
描述 |
query |
字符串 |
搜索查詢(例如:"B2B 產品定價"、"創始人模式") |
top_k |
整數 |
結果數量(默認:5,最大:20) |
type_filter |
字符串 |
按類型過濾:insight(見解)、example(示例)、topic(主題)、episode(劇集) |
返回結果:包含相關性得分、劇集引用和主題 ID 的排名結果,便於深入查詢。
get_chapter
加載具有完整上下文的特定主題。在使用 search_lenny 後使用此工具獲取詳細信息。
| 參數 |
類型 |
描述 |
episode |
字符串 |
劇集文件名(例如:"Brian Chesky.txt") |
topic_id |
字符串 |
主題 ID(例如:"topic_3") |
返回結果:主題摘要、所有見解、所有示例和原始文字稿片段。
get_full_transcript
加載帶有元數據的完整劇集文字稿。
| 參數 |
類型 |
描述 |
episode |
字符串 |
劇集文件名(例如:"Brian Chesky.txt") |
返回結果:完整文字稿(10 - 40K 個標記)、劇集元數據和主題列表。
list_episodes
瀏覽可用劇集,可選擇按專業領域進行過濾。
| 參數 |
類型 |
描述 |
expertise_filter |
字符串 |
按標籤過濾(例如:"增長"、"定價"、"人工智能") |
返回結果:包含 299 個劇集的列表,其中包含嘉賓姓名和專業領域標籤。
📦 安裝指南
克隆倉庫
git clone git@github.com:mpnikhil/lenny-rag-mcp.git
cd lenny-rag-mcp
創建並激活虛擬環境
python -m venv venv
source venv/bin/activate
安裝包
pip install -e .
💻 使用示例
基礎用法
git clone git@github.com:mpnikhil/lenny-rag-mcp.git
cd lenny-rag-mcp
python -m venv venv
source venv/bin/activate
pip install -e .
高級用法
claude mcp add lenny --scope user -- /path/to/lenny-rag-mcp/venv/bin/python -m src.server
📚 詳細文檔
數據整理方法
分層提取
每個文字稿被處理成一個 4 級層次結構,支持漸進式展示:
Episode
├── Topics (10 - 20 per episode)
│ ├── Insights (2 - 4 per topic)
│ └── Examples (1 - 3 per topic)
這使得 Claude 可以從輕量級搜索結果開始,僅在需要時深入查詢,從而有效利用上下文窗口。
提取模式
{
"episode": {
"guest": "Guest Name",
"expertise_tags": ["growth", "pricing", "leadership"],
"summary": "150 - 200 word episode summary",
"key_frameworks": ["Framework 1", "Framework 2"]
},
"topics": [{
"id": "topic_1",
"title": "Searchable topic title",
"summary": "Topic summary",
"line_start": 1,
"line_end": 150
}],
"insights": [{
"id": "insight_1",
"text": "Actionable insight or contrarian take",
"context": "Additional context",
"topic_id": "topic_1",
"line_start": 45,
"line_end": 52
}],
"examples": [{
"id": "example_1",
"explicit_text": "The story as told in the transcript",
"inferred_identity": "Airbnb",
"confidence": "high",
"tags": ["marketplace", "growth", "launch strategy"],
"lesson": "Specific lesson from this example",
"topic_id": "topic_1",
"line_start": 60,
"line_end": 85
}]
}
隱式錨點檢測
許多嘉賓在提及公司時並未明確說出公司名稱(例如:“在我之前的公司……”)。提取提示會指導模型根據嘉賓的背景推斷公司身份:
- 當 Brian Chesky 說“當我們開始時” → Airbnb(高置信度)
- 一位市場專家說“一家拼車公司” → 可能是優步/來福車(中等置信度)
這使得能夠發現僅通過關鍵詞搜索無法找到的示例。
質量閾值
每個文字稿提取都會根據最低閾值進行驗證:
| 元素 |
最低數量 |
典型數量 |
| 主題 |
10 |
15 - 20 |
| 見解 |
15 |
25 - 35 |
| 示例 |
10 |
18 - 25 |
| 低於閾值的提取會觸發警告,需要人工審核。 |
|
|
模型與技術棧
| 組件 |
模型/工具 |
用途 |
| 預處理 |
Claude Haiku(通過 Claude CLI) |
從文字稿中提取結構化層次結構 |
| 嵌入 |
bge-small-en-v1.5 |
用於搜索的語義相似度計算 |
| 向量數據庫 |
ChromaDB |
持久化向量存儲 |
| MCP 框架 |
mcp(Python SDK) |
為 Claude 提供工具接口 |
為什麼選擇 Claude Haiku 進行預處理?
- 質量:Haiku 能夠可靠地遵循複雜的提取提示。
- 成本:每個文字稿約 $0.02 - 0.03(299 個劇集總計約 $6 - 9)。
- 速度:每個文字稿約 30 秒。
為什麼選擇 bge-small-en-v1.5 進行嵌入?
- 性能:在其規模下具有頂級的檢索質量。
- 效率:384 維,推理速度快。
- 本地化:完全在 CPU 上運行,無需調用 API。
語料庫統計
| 指標 |
數量 |
| 劇集 |
299 |
| 主題 |
6,183 |
| 見解 |
8,840 |
| 示例 |
6,502 |
| 平均每個劇集的主題數 |
20.7 |
| 平均每個劇集的見解數 |
29.6 |
| 平均每個劇集的示例數 |
21.7 |
重建索引
倉庫中包含一個預構建的 ChromaDB 索引。若要從頭開始重建:
重新處理文字稿(需要 Claude CLI)
python scripts/preprocess_haiku.py
python scripts/preprocess_haiku.py --file "Brian Chesky.txt"
python scripts/preprocess_haiku.py --limit 50 --offset 0 &
python scripts/preprocess_haiku.py --limit 50 --offset 50 &
python scripts/preprocess_haiku.py --limit 50 --offset 100 &
python scripts/preprocess_haiku.py --limit 50 --offset 150 &
重建嵌入
python scripts/embed.py
python scripts/embed.py --rebuild
項目結構
lenny-rag-mcp/
├── transcripts/ # 299 個原始 .txt 播客文字稿
├── preprocessed/ # 提取的 JSON 層次結構(每個劇集一個)
├── chroma_db/ # 向量嵌入(Git LFS)
├── prompts/
│ └── extraction.md # Haiku 提取提示
├── src/
│ ├── server.py # MCP 服務器和工具定義
│ ├── retrieval.py # LennyRetriever 類(ChromaDB 包裝器)
│ └── utils.py # 文件加載實用工具
├── scripts/
│ ├── preprocess_haiku.py # Claude CLI 預處理
│ └── embed.py # ChromaDB 嵌入管道
└── pyproject.toml
📄 許可證
本項目採用 MIT 許可證。