笔记本LM MCP结构化
NotebookLM的增强型MCP服务器 客户端提示结构 为了 源保真度.
要求: 此MCP服务器旨在与 克劳德桌面版。它需要安装Claude Desktop并配置为使用MCP服务器。
这是的修改版本 笔记本mcp 它增加了全面的结构说明,以指导Claude制定提示,为专业用例(法律分析、研究、事实核查)加强文档保真度。
主要特点
客户端提示结构
MCP工具描述包括全面的指导方针,指导Claude在将问题发送到NotebookLM之前如何构建问题。这确保了:
- 源保真度:响应仅来自上传的文档
- 引文要求:每项索赔都包括来源归因
- 缺失信息处理:数据不可用时的显式声明
- 多语言支持:适用于Claude支持的任何语言
- 问题类型调整:用于比较、列表、分析、解释和摘录的不同结构
工作原理:
- 用户用任何语言问一个简单的问题
- Claude从工具描述中阅读结构化指南
- 克劳德把问题变成了一个结构良好的提示
- NotebookLM收到结构化提示并做出相应响应
- 克劳德被指示在不添加外部知识的情况下忠实地呈现回应
为什么这很重要:
NotebookLM已经通过设计提供了源代码保真度(Gemini基于文档)。 这个分叉解决的真正问题是不同的: 防止克劳德在向用户展示NotebookLM的响应时,用外部知识“改进”NotebookLM。
设计意图(fork旨在实现什么):
┌─────────────────────────────────────────────────────┐
│ Without structuring (original MCP): │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Risk: Claude may add external knowledge │
│ "Document states X. Also, based on my knowledge, │
│ Y is important to consider..." │
│ └─ External knowledge added! ─┘ │
│ │
│ With structuring (this fork): │
│ • NotebookLM: "Document states X [Source: doc.pdf]"│
│ • Claude reads Response Handling instruction │
│ • Goal: Claude presents faithfully │
│ "Document states X [Source]" │
│ └─ Faithful presentation, no additions ─┘ │
└─────────────────────────────────────────────────────┘结构指南包括 两个关键的教学阶段:
- 预发送:转换具有明确约束的问题(但保留原始措辞)
- 帖子接收:指示克劳德在没有外部知识的情况下忠实地做出回应
这种双阶段方法旨在在整个工作流程中保持文档的保真度。
验证和透明度
如何验证工作流:
由于NotebookLM将聊天记录保存在笔记本中,因此您可以验证整个过程:
- 提出问题 通过克劳德使用此MCP
- 打开你的笔记本 在NotebookLM web界面上(https://notebooklm.google.com)
- 查看已保存的聊天记录 查看:
- 这 结构化提示 克劳德(通过MCP)发送的 - 这 原始NotebookLM响应 所有内部参考链接
您可以验证的内容:
- 这种结构正确地应用于你的问题
- Claude呈现之前的原始NotebookLM响应
- Claude如何解释响应处理说明
- 结构化提示使用哪种语言(对多语言测试有用)
这种透明机制使您能够实证验证客户端结构化方法,并了解工作流的每个阶段。
转换示例:
简单的问题:
What are the main findings in the research papers?克劳德将其结构如下:
What are the main findings in the research papers?
Organize the response by thematic topics. Cover all aspects discussed in the documents.
For each topic:
- TOPIC: [identifying title]
- DESCRIPTION: [synthesis with context, connecting information across documents]
- EVIDENCE: "direct quote" [Source: document]
If a topic appears in multiple documents, show evidence from each.
If information is not found: [NOT FOUND IN DOCUMENTS]关键格式规则:
- 无装饰线条 (没有
===或---)因为它们会导致NotebookLM超时
语言支持
多语言设计 -fork支持多种语言,无需服务器端配置。
它是如何工作的:
工具描述中的结构化指南指示Claude“适应用户的语言”。Claude解释这些指令,并根据会话上下文应用它们。
我们确切知道的是:
- ✅ MCP代码中没有服务器端语言检测
- ✅ 无需维护特定语言的模板
- ✅ 在意大利用户和文档中成功测试
- ✅ 这种方法在设计上与语言无关
预期行为:
- 在整个对话中使用一致的语言时,该系统效果最佳
- Claude根据上下文解释结构化指南
- 结果可能因会话上下文而异
重要提示: 使用与您的Claude帐户/个人资料语言不同的语言可能会产生不可预测的结构化结果。为了保持一致的行为,在整个对话中使用您帐户的主要语言。
用意大利语测试 -与用意大利语提问的意大利用户可靠地合作。
其他语言:该架构支持Claude可以使用的任何语言。如果你用其他语言使用它,请分享你的经验,帮助我们理解行为模式!
自动连接验证
MCP服务器在执行任何需要连接的操作之前会自动验证与NotebookLM的连接。这确保了流畅的用户体验:
它是如何工作的:
- 当您发出需要NotebookLM的请求(例如,提问)时,服务器会检查身份验证是否有效
- 如果身份验证已过期或丢失,则会自动打开一个浏览器窗口以供Google登录
- 成功登录后,您的原始请求将自动进行
无需人工干预 -服务器在对话流中无缝处理身份验证,即使Chrome已经在运行。
安装
先决条件
- 克劳德桌面版 -需要使用此MCP服务器
- Node.js>=18.0.0
- npm
- 用于NotebookLM访问的Google帐户
从GitHub安装
# Clone the repository
git clone https://github.com/paolodalprato/notebooklm-mcp-structured.git
# Enter directory
cd notebooklm-mcp-structured
# Install dependencies
npm install
# Build
npm run build配置Claude桌面
添加到您的 claude_desktop_config.json:
窗户: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"notebooklm": {
"command": "node",
"args": [
"/absolute/path/to/notebooklm-mcp-structured/dist/index.js"
]
}
}
}Windows示例:
{
"mcpServers": {
"notebooklm": {
"command": "node",
"args": [
"D:\\path\\to\\notebooklm-mcp-structured\\dist\\index.js"
]
}
}
}首次身份验证
重新启动Claude Desktop后:
- 让Claude检查NotebookLM的运行状况:
Check notebooklm health - 如果未通过身份验证,请询问:
Setup notebooklm authentication - 将打开一个浏览器窗口供谷歌登录
- 完成登录并关闭浏览器
用例
法律文件分析
- 摘录带有引用的具体条款
- 比较不同案件的裁决
- 识别法理学中的模式
- 确保回复仅来自案例文件
研究
- 文献综述与来源追踪
- 从多个文档中提取事实
- 交叉引用验证
- 防止文档内容与外部知识混淆
专业事实核查
- 根据源文件验证索赔
- 识别明确陈述与推断的内容
- 维护引用的审计跟踪
- 确保信息来源完全透明
建筑
请求工作流
此图显示了请求通过系统的完整流程:
sequenceDiagram
participant U as 👤 User
participant C as 🤖 Claude
participant TD as 📋 Tool Description
participant MCP as ⚙️ MCP Server
participant NLM as 📚 NotebookLM
(Gemini)
Note over U,NLM: PHASE 1: PRE-SEND (Client-Side Structuring)
U->>C: Simple question
"Analyze the rulings in the documents"
C->>TD: Reads tool description
TD-->>C: Returns Structuring Guidelines
+ Response Handling instructions
Note over C: Transforms simple question
into structured prompt
(constraints, citations, missing info)
Note over U,NLM: PHASE 2: MCP TRANSIT
C->>MCP: Structured prompt
(with operational constraints)
Note over MCP: Passes question
WITHOUT modifications
MCP->>NLM: Structured prompt
Note over NLM: Gemini processes
against documents
Note over U,NLM: PHASE 3: RETURN FLOW
NLM-->>MCP: Response from documents
Note over MCP: Adds FOLLOW_UP_REMINDER
("Need more info?")
MCP-->>C: Response + Reminder
Note over C: Applies "Response Handling"
(instructions read in Phase 1)
= presents faithfully
C-->>U: Source-faithful response
with citations每个阶段发生了什么
| 阶段 | 演员 | 动作 | 内容添加/读取 |
|---|---|---|---|
| 1a | Claude | 读取工具描述 | 结构指南:如何转换问题 |
| 1b | Claude | 读取工具描述 | 响应处理:如何呈现响应 |
| 1c | Claude | 转换问题 | 添加操作限制、引用要求、缺失信息处理 |
| 2 | MCP服务器 | 传输问题 | *无修改* -按原样传递结构化提示 |
| 第3页 | MCP服务器 | 修改响应 | FOLLOW_UP_提醒:提示Claude检查是否需要更多问题 |
| 第3页 | Claude | 呈现响应 | 应用第1阶段读取的响应处理(源保真度) |
三级教学架构
MCP服务器协调 两个LLM (Claude和NotebookLM/GGemini)使用三种不同的指令机制,每种机制都针对不同的参与者:
| 级别 | 位置 | 目标 | 目的 | 代码参考 |
|---|---|---|---|---|
| 1.工具说明 | ask-question.ts | Claude | 如何构建提示,何时进行跟进,会话管理 | buildAskQuestionDescription() |
| 2.结构化提示 | structuring-guidelines.ts | NotebookLM | 源保真度约束、引用格式、缺失信息处理 | buildStructuringGuidelines() |
| 3.响应后缀 | handlers.ts | Claude | 在回复用户之前,敦促Claude验证完整性 | FOLLOW_UP_REMINDER 常数 |
主要区别: 结构化提示(级别2)被发送到NotebookLM以约束其响应。但是工具描述(级别1)和响应后缀(级别3)中的一些指令从未到达NotebookLM——它们指导了Claude在NotebookLM交互前后的行为。
工具说明中的双重用途说明:
- *适用于NotebookLM* (通过克劳德生成的结构化提示):操作约束、引用要求、输出格式
- *仅限克劳德* (从未发送到NotebookLM):“忠实呈现,不添加外部知识”,“暂停,与用户的目标进行比较”,后续策略
关键架构见解
MCP服务器会 不 添加对源保真度的约束 *之后* 接收响应。克劳德阅读保真度说明 *之前* 在工具描述中发送问题。服务器只添加操作提醒(“您需要更多信息吗?”),而不是行为约束。
这种架构依赖于Claude遵循预先阅读的指令的能力,而不是事后的技术控制。结构化发生在客户端(在Claude中),使系统更简单、更灵活,并且自然地支持多语言。
为什么要客户端结构化?
优势:
- 默认情况下支持多种语言:克劳德自然会处理任何语言
- 更简单的架构:无服务器端模板管理
- 灵活适应:Claude根据上下文调整结构
- 经得起未来考验:结构逻辑的更新只需要更改工具描述
为什么没有装饰线条?
NotebookLM解释以下行 = 或 - 字符格式无效,导致系统超时。结构化指南仅指定纯文本标题,避免任何装饰性排版。
问题类型检测
Claude会自动检测问题类型并应用适当的结构:
| 类型 | 触发词 | 输出结构 |
|---|---|---|
| 比较 | “比较”、“vs”、“差异” | 元素、相似性、差异性、综合 |
| 列表 | “列表”、“识别”、“哪个” | 带有描述、证据、交叉引用的主题 |
| 分析 | “分析”、“检查”、“评估” | 具有跨文档联系的主题 |
| 解释 | “解释”、“为什么”、“如何” | 核心概念、示例、相关概念、局限性 |
| 提取 | (默认) | 带有描述、证据、交叉引用的主题 |
可用工具
核心工具(需要NotebookLM连接)
ask_question-使用会话管理向NotebookLM提问 *(必要时触发自动身份验证)*reset_session-重置会话以重新开始 *(必要时触发自动身份验证)*
会话管理
list_sessions-查看所有活动对话会话close_session-关闭特定会话
身份验证和诊断
get_health-检查身份验证、连接状态和Chrome状态 *(增强诊断)*setup_auth-首次谷歌登录re_auth-切换Google帐户或从费率限制中恢复
笔记本库管理
add_notebook-将笔记本添加到您的库中list_notebooks-查看库中的所有笔记本get_notebook-获取特定笔记本的详细信息select_notebook-设置活动笔记本update_notebook-更新笔记本元数据remove_notebook-从库中删除笔记本search_notebooks-按关键字搜索笔记本get_library_stats-查看库统计信息
维护
cleanup_data-清理浏览器数据和身份验证文件
贡献
欢迎投稿!请随时提交问题或拉取请求。
积分
- 原创
notebooklm-mcp: 杰罗姆 Dexheimer - 客户端结构化方法:Paolo Dalprato
许可证
麻省理工学院
______________________________________________________________________
常见问题解答
Q: 这适用于Claude Code或其他MCP客户吗? A: 此MCP服务器是专门为 克劳德桌面版虽然其他MCP兼容客户端可能正常工作,但自动连接验证和身份验证流程针对Claude Desktop体验进行了优化。
Q: 这适用于意大利语以外的语言吗? A: 该系统旨在与Claude支持的任何语言一起工作。它已经用意大利语进行了测试,效果很好。如果您使用其他语言,系统应自动适应您的个人资料语言。我们正在寻求其他语言用户的反馈!
Q: 为什么不使用服务器端模板? A: 客户端结构更简单、更灵活,并且自然支持多种语言。与固定模板相比,Claude可以更好地使结构适应上下文。
Q: 我可以自定义结构指南吗? A: 这些指南嵌入在工具描述中(src/tools/definitions/ask-question.ts).您可以修改它们并重新构建。
Q: 如果我不组织我的提示会发生什么? A: NotebookLM可能会将文档内容与其一般知识混合在一起。结构化提示强制执行源保真度。
Q: 是否有任何费率限制? A: 免费的谷歌账户每天有50个查询到NotebookLM。Google AI Pro/Ultra帐户的限制高出5倍。
