Token导航 LogoToken导航

MCP Server · 数据服务

Lenny Wisdom MCP

一个基于Cloudflare Workers的MCP服务器,提供对Lenny播客300+集的智能检索和结构化分析,帮助产品经理获取框架、案例和决策指导。

stdio官方级别未说明来源级核验工具 9
产品管理PythonClaude

快速开始

作者 / 组织
svmanohar
提供方
svmanohar
运行时
Python

工具数量

9

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Lenny Wisdom MCP 属于数据服务类 MCP Server,公开资料标注 9 个工具,通过stdio 本地进程接入,适配 Claude,有可以直接复制的安装命令;接入前要先准备 OAuth 授权。

分类

数据服务

传输方式

stdio

认证方式

OAuth 授权

部署方式

公开资料未说明

安装与配置

安装命令

uv run python -m indexer.run --transcripts /path/to/episodes --limit 5 --dry-run

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 9 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

Lenny Wisdom MCP

MCP(模型上下文协议)服务器,允许克劳德访问300多集 Lenny的播客 --面向产品经理的领先播客。向它索取框架、真实的公司示例、决策指导和词汇指导,所有这些都以客人实际说的话为基础。

基于Cloudflare Workers与D1和Vectorize构建。传输:可流式传输HTTP。新剧集会自动从Dropbox同步。自助令牌注册——无需批准。

______________________________________________________________________

它做什么

服务器公开了两类9个工具:

检索 --直接搜索索引转录语料库 推理 --检索相关智慧并将其综合为结构化指导

search_wisdom("how do great PMs prioritize ruthlessly?")
coach_me("we're deciding whether to gate AI features behind enterprise licensing")
challenge_decision("we should kill the free tier to focus on enterprise")
teach_framework("Jobs to be Done")
sharpen_language("we need to move fast" audience="executive")

______________________________________________________________________

快速入门

无需批准。注册一个令牌并在一分钟内连接。

1.获得代币

curl -X POST https://lenny-wisdom-mcp.vsman-dev.workers.dev/register \
  -H "Content-Type: application/json" \
  -d '{"label": "my project"}'

答复:

{
  "token": "lw_abc123...",
  "tier": "free",
  "daily_vector_limit": 20,
  "setup_command": "claude mcp add lenny-wisdom --transport http --url https://lenny-wisdom-mcp.vsman-dev.workers.dev/mcp --header \"Authorization: Bearer lw_abc123...\""
}

2.从克劳德代码连接

复制粘贴 setup_command 从回复中:

claude mcp add lenny-wisdom --transport http \
  --url https://lenny-wisdom-mcp.vsman-dev.workers.dev/mcp \
  --header "Authorization: Bearer lw_abc123..."

重新启动克劳德代码。你完了,试试看 search_wisdom, coach_me,或9种工具中的任何一种。

替代方案:手动配置

添加 ~/.claude/mcp_servers.json (全球)或 .mcp.json (项目范围):

{
  "lenny-wisdom": {
    "type": "http",
    "url": "https://lenny-wisdom-mcp.vsman-dev.workers.dev/mcp",
    "headers": {
      "Authorization": "Bearer lw_abc123..."
    }
  }
}

______________________________________________________________________

访问层

层级矢量搜索/天如何获取
自由20POST /register 带有标签
BYOK无限制POST /register 使用您自己的Voyage AI密钥
管理员无限制已配置服务器 MCP_AUTH_TOKEN 秘密

什么是利率限制

只有5个调用Voyage AI进行矢量搜索的工具是限速的: search_wisdom, coach_me, challenge_decision, teach_framework, sharpen_language

4个仅D1的工具对所有层都是无限的: find_frameworks, find_examples, get_episode_context, list_guests

自带钥匙(BYOK)

如果你有 Voyage AI API密钥,使用该密钥注册以获得无限访问权限。您的密钥仅用于您自己的查询。

curl -X POST https://lenny-wisdom-mcp.vsman-dev.workers.dev/register \
  -H "Content-Type: application/json" \
  -d '{"label": "my project", "voyage_api_key": "pa-..."}'

______________________________________________________________________

建筑

                          ┌──────────────────────────────────────┐
                          │        Claude Code / MCP Client       │
                          └────────────────┬─────────────────────┘
                                           │ HTTPS + Bearer token
                                           │ streamable-http transport
                          ┌────────────────▼─────────────────────┐
                          │     Cloudflare Worker (TypeScript)    │
                          │                                       │
                          │  POST /register → token (no auth)     │
                          │  POST /mcp     → authenticate()       │
                          │       │          ↓                     │
                          │       │  admin token? → fast path      │
                          │       │  lw_ token?   → D1 lookup      │
                          │       │          ↓                     │
                          │       │  rate limit check (free tier)  │
                          │       │  BYOK key swap  (byok tier)   │
                          │       ↓                                │
                          │  ┌─────────────────────────────────┐  │
                          │  │   LennyWisdomMCP (McpAgent DO)  │  │
                          │  │   9 tools registered via MCP SDK│  │
                          │  └────────────┬────────────────────┘  │
                          └──────────────┬┴───────────────────────┘
                                         │
                    ┌────────────────────┼──────────────────────┐
                    │                    │                       │
          ┌─────────▼──────┐  ┌──────────▼───────┐  ┌──────────▼──────┐
          │  Cloudflare D1  │  │  CF Vectorize     │  │   Voyage AI     │
          │  (11 tables)    │  │  1024-dim cosine  │  │  voyage-3       │
          │  structured data│  │  segment vectors  │  │  query embeds   │
          └────────────────┘  └──────────────────┘  └─────────────────┘

Indexing pipeline (runs once per episode, cached to disk):

  Transcript .md or .txt files
       │
       ▼
  Parse metadata (YAML frontmatter or guest name from filename)
       │
       ▼
  Haiku — segment into topic-coherent blocks (300–2000 tokens, 75-token overlap)
       │
       ▼
  Haiku — extract guest profile from intro (role, companies, expertise)
       │
       ▼
  Sonnet — extract per segment: frameworks, heuristics, examples,
           communication_patterns, tags (55-tag PM taxonomy), key_quote
       │
       ▼
  Voyage AI — 1024-dim embedding per segment
       │
       ▼
  Save .extraction.json cache to disk (crash-safe — survives upload failures)
       │
       ▼
  Upload → D1 (structured rows) + Vectorize (vectors)

______________________________________________________________________

D1架构

表目的关键列
episodes每集播客一行title, guest, date, topics (JSON)
guests结构化的客户资料current_role, current_company, notable_companies, domain_expertise
segments主题连贯的转录块topic, speakers, content, token_count
frameworks命名心智模型name, description, source_attribution, verbatim_definition
heuristics经验法则statement, context
examples公司案例研究company, situation, outcome
communication_patterns如何表达建议technique, audience, example
tags每段PM分类标签55个标签: pricing, growth, hiring等等。
quotes每个细分市场的关键报价quote, speaker
api_tokens自助式API令牌token_hash, tier, voyage_api_key, daily_limit
rate_limits每日矢量搜索计数器token_id, date, vector_search_count

______________________________________________________________________

工具参考

检索工具

search_wisdom

跨所有播客智慧的语义搜索。使用Voyage AI嵌入查询,查询Vectorize,可选按PM分类标签过滤,丰富D1的结果。

参数类型必填说明
querystringyes自然语言搜索查询
tag_filterstringnoPM分类标签(例如。 pricing, growth)
max_results整数1–20否结果数(默认值5)
formatconcisedetailedno响应冗长(默认 concise)
find_frameworks

按名称或主题搜索命名框架和心智模型。

参数类型必填说明
querystringyes框架名称或主题
max_results整数1–20否结果数(默认值5)
find_examples

寻找真实的公司案例研究。至少一个 company 或 topic 应该提供。

参数类型必填说明
companystringno公司名称(例如。 Notion, Figma)
topicstring否要筛选的PM主题
max_results整数1–20否结果数(默认值5)
get_episode_context

检索特定剧集的所有提取数据。至少需要一个标识符。

参数类型必填说明
gueststringno客人姓名
episode_numberinteger否剧集号
titlestring否剧集标题(部分匹配)
list_guests

使用剧集计数浏览访客,可选择按PM主题过滤。

参数类型必填说明
topicstringno要筛选的PM分类主题
max_results整数1–50否结果数

推理工具

这些工具从语料库中检索相关智慧,并合成结构化的响应。

coach_me

使用播客中的相关框架浏览产品决策。

参数类型必填说明
situationstring是你的产品情况或决定(1-3句话)
goalstringno你想要达到的结果
rolestringno您的角色(例如。 PM, founder, designer)
max_sources整数1–10否要从中提取的源段
challenge_decision

红队使用播客嘉宾的反驳意见做出了决定。

参数类型必填说明
decisionstring是你计划做出的决定
contextstringno上下文和推理
alternativesstring\[\]否考虑了其他选项
max_sources整数1–10否要从中提取的源段
teach_framework

使用播客作为源代码深入学习PM框架。

参数类型必填说明
frameworkstringyes学习框架(例如。 Jobs to be Done, LNO Framework)
depthoverviewdetailedmasterclass否学习深度(默认值 overview)
sharpen_language

产品沟通的词汇和受众意识重构。

参数类型必填说明
messagestring是的你对这个概念的粗略措辞
audiencestringyes目标受众: executive, engineering, customer, peer-pm, investor
contextstringno其他上下文
max_sources整数1–10否要从中提取的源段

______________________________________________________________________

设置

两个独立的组成部分: 工人 (服务于MCP端点)和 索引器 (填充数据库)。

先决条件

1.克隆仓库

git clone https://github.com/svmanohar/lenny-wisdom-mcp.git
cd lenny-wisdom-mcp

2.工人设置

cd worker
npm install
创建Cloudflare资源
# Create D1 database
wrangler d1 create lenny-wisdom-db

# Create Vectorize index
wrangler vectorize create lenny-wisdom-vectors --dimensions=1024 --metric=cosine

更新 wrangler.toml 随着 database_id 从D1创建输出。

运行迁移
npm run db:migrate
设置秘密
wrangler secret put MCP_AUTH_TOKEN     # Bearer token for MCP clients
wrangler secret put VOYAGE_API_KEY     # Voyage AI key for query-time embeddings
部署
npm run deploy

验证: curl https://lenny-wisdom-mcp..workers.dev/health

3.索引器设置

cd indexer
uv sync
Python 3.14不受支持。 这 voyageai 和 anthropic 包裹在3.14破裂。总是使用 uv run --它自动选择3.13。
环境变量
export ANTHROPIC_API_KEY="sk-ant-..."
export VOYAGE_API_KEY="pa-..."
export CF_ACCOUNT_ID=""
export CF_DB_ID=""
export CF_API_TOKEN=""
重要提示: CF API令牌必须在 dash.cloudflare.com/profile/api-tokes。OAuth令牌来自 wrangler login 无法通过REST API写入D1。使用“编辑Cloudflare Workers”模板并添加D1编辑+矢量化编辑权限。
运行管道
# Dry run (no upload, saves cache files)
uv run python -m indexer.run --transcripts /path/to/episodes --limit 5 --dry-run

# Live run on 5 episodes
uv run python -m indexer.run --transcripts /path/to/episodes --limit 5

# Full corpus (~10-15 min with default concurrency)
uv run python -m indexer.run --transcripts /path/to/episodes

# Upload from cache only — zero API cost (reuses saved extractions + embeddings)
uv run python -m indexer.run --transcripts /path/to/episodes --upload-only

# Force re-process even if cache exists
uv run python -m indexer.run --transcripts /path/to/episodes --force
缓存

每个成功处理的剧集都会保存到 .extraction.json 记录旁边的文件。在随后的运行中,从磁盘加载具有有效缓存文件的剧集,跳过所有AI API调用。这意味着:

  • 崩溃恢复 --如果上传在运行过程中失败,请重新运行,只重复上传
  • 增量运行 --处理新剧集,跳过缓存的剧集
  • --upload-only -重新部署从缓存到API成本为0美元的所有内容
  • 迁移便携 --JSON文件包含所有结构化数据+嵌入,独立于D1/Vectorize

管道接受两者 .md 文件(带YAML frontmatter)和 .txt 文件(原始转录文本,从文件名推断出的访客名称)。

并发调优

管道同时处理事件。通过CLI标志或环境变量进行调整:

标志环境变量默认值描述
--episode-concurrencyLENNY_EPISODE_CONCURRENCY10一次最多处理10集
--sonnet-concurrencyLENNY_SONNET_CONCURRENCY50最多并发Sonnet API调用
--voyage-concurrencyLENNY_VOYAGE_CONCURRENCY5最大并发Voyage API调用

如果您达到API费率限制,请降低 --episode-concurrency 第一。

4.配置克劳德代码

请参阅 快速入门 section--通过注册令牌 POST /register 并运行 setup_command 从回应中。无需手动配置。

5.自动同步新剧集(可选)

新剧集将发布到共享的Dropbox文件夹中。同步脚本轮询新的 .txt 文件、下载它们并运行索引管道——所有缓存的剧集都会自动跳过。

一次性Dropbox身份验证
cd indexer
DROPBOX_APP_KEY=xxx DROPBOX_APP_SECRET=xxx uv run python dropbox_auth.py

这将打开您的浏览器以授权Dropbox应用程序。将代码粘贴回终端。刷新令牌保存到 ~/.lenny-wisdom/dropbox_token.json --访问令牌从此处自动刷新(刷新令牌永不过期)。

手动同步
# Check what's new (no downloads, no cost)
uv run python sync_dropbox.py --dry-run

# Sync and index new episodes (~$0.25 per new episode)
ANTHROPIC_API_KEY=xxx VOYAGE_API_KEY=xxx CF_ACCOUNT_ID=xxx CF_DB_ID=xxx CF_API_TOKEN=xxx \
  uv run python sync_dropbox.py
通过cron自动同步

复制 sync-cron.sh.example 并填写您的API密钥:

cp sync-cron.sh.example sync-cron.sh
# Edit sync-cron.sh with your keys — this file is gitignored

然后添加到crontab:

crontab -e
# Runs every Monday at 8am. Logs to ~/.lenny-wisdom/sync.log
0 8 * * 1  /path/to/lenny-wisdom-mcp/indexer/sync-cron.sh

cron脚本处理PATH设置、日志轮换和自动刷新Dropbox令牌。只有当有新的剧集需要处理时,才需要花钱。

______________________________________________________________________

本地开发

cd worker
npm run dev    # Starts wrangler dev server
npm test       # 31 vitest tests

cd ../indexer
uv run pytest  # 49 pytest tests (all API clients mocked)
注: wrangler dev --local 无法模拟Vectorize或Workers AI。矢量搜索路径在本地无法工作。D1被模拟并运行良好。

______________________________________________________________________

已知陷阱

  • Python 3.14打破了voyageai/anthropic --始终使用 uv run
  • CF OAuth令牌!=API令牌 — wrangler login 令牌不能进行D1 REST写入;创建单独的API令牌
  • Auth返回403,而不是401 --401触发MCP SDK OAuth流;承载令牌身份验证使用403
  • nodejs_compat 必需的 --the agents 包中需要此兼容性标志 wrangler.toml
  • ExtractedExample.company 可为空 --Sonnet偶尔会为company字段返回null
  • Dropbox访问令牌将在4小时后过期 --同步脚本通过存储的刷新令牌自动刷新;重演 dropbox_auth.py 仅当应用程序被撤销时
  • API令牌显示一次 — POST /register 返回原始令牌;D1中仅存储SHA-256哈希。如果你丢了,注册一个新的
  • challenge_decision 成本2个费率限制单位 --它每次调用运行2次并行向量搜索(反参数+上下文)

______________________________________________________________________

项目结构

lenny-wisdom-mcp/
├── worker/                         # Cloudflare Worker
│   ├── src/
│   │   ├── index.ts                # MCP handler + fetch handler + auth middleware
│   │   ├── db/
│   │   │   ├── queries.ts          # D1 queries
│   │   │   └── schema.sql          # 11-table schema
│   │   ├── lib/
│   │   │   ├── types.ts            # TypeScript interfaces
│   │   │   ├── auth.ts             # Token auth (SHA-256 hash, D1 lookup)
│   │   │   ├── rate-limit.ts       # Daily vector search counter
│   │   │   ├── register.ts         # POST /register handler
│   │   │   ├── guarded-vector-query.ts  # Rate-limited vector search wrapper
│   │   │   ├── format.ts           # Markdown formatters
│   │   │   └── vector-search.ts    # Voyage query embedding + Vectorize search
│   │   └── tools/                  # One file per MCP tool
│   ├── migrations/
│   │   └── 0001_add_auth_tables.sql
│   ├── wrangler.toml
│   └── package.json
├── indexer/                        # Python indexing pipeline
│   ├── indexer/
│   │   ├── run.py                  # CLI entrypoint (click) with caching
│   │   ├── parse.py                # Transcript parser (.md + .txt)
│   │   ├── segment.py              # Haiku segmentation
│   │   ├── extract.py              # Sonnet extraction
│   │   ├── embed.py                # Voyage AI embeddings
│   │   ├── upload.py               # D1 + Vectorize upload (retry + concurrency)
│   │   ├── guest.py                # Guest profile extraction
│   │   ├── models.py               # Pydantic models
│   │   └── taxonomy.py             # 55 PM taxonomy tags
│   ├── sync_dropbox.py             # Dropbox sync + pipeline trigger
│   ├── dropbox_auth.py             # One-time OAuth setup
│   ├── sync-cron.sh.example        # Cron wrapper template (copy + add keys)
│   └── pyproject.toml
└── HANDOVER.md

工具与能力

工具数量

9

资源数量

0

提示词数量

0

能力标签

播客检索Python本地部署产品管理知识库AI分析决策支持

支持客户端

Claude

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

用自然语言查库

不用手写 SQL,直接问数据,让模型组织查询语句。

数据巡检

定期拉指标、做对比,把异常项整理成一段说明。

打通业务数据

把数据库、数仓和接口接进同一个上下文,减少导出再上传。

选择建议

值得选的地方

  • 只提供 9 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 需要自备OAuth 授权,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在数据服务场景里让模型直接调用外部能力的人。
  • 已经在用 Claude 的用户,接入路径最短。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 暂时拿不到OAuth 授权的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Lenny Wisdom MCP

MCP World · 本页

9stdio有1 个2026-05-17
Memory 9d25f64e

MCP World

9未说明未标注1 个2026-05-17
Prisma MCP Server

MCP World

0stdio有3 个2026-05-17
Astr Bot

MCP World

0stdio有1 个2026-05-17
Getzep MCP

MCP World

9stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Lenny Wisdom MCP 怎么安装?

公开资料给出的安装命令是 uv run python -m indexer.run --transcripts /path/to/episodes --limit 5 --dry-run,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

Lenny Wisdom MCP 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

Lenny Wisdom MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Lenny Wisdom MCP 需要 API Key 吗?

公开资料标注的认证方式是OAuth 授权,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Lenny Wisdom MCP 支持哪些客户端?

公开资料标注支持 Claude;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP