ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

gemini-notebook-mcp-cli源码架构剖析:CLI、Services、Core与MCP四层设计如何协作

gemini-notebook-mcp-cli源码架构剖析:CLI、Services、Core与MCP四层设计如何协作 gemini-notebook-mcp-cli源码架构剖析CLI、Services、Core与MCP四层设计如何协作【免费下载链接】gemini-notebook-mcp-cliProgrammatic access to Gemini Notebook - via command-line interface (CLI), Model Context Protocol (MCP) server, and AI agent skills.项目地址: https://gitcode.com/gh_mirrors/not/gemini-notebook-mcp-cligemini-notebook-mcp-cli 是一个开源项目通过 CLI 命令行工具和 MCP 服务器提供对 Gemini Notebook原 Google NotebookLM的程序化访问管理笔记本、添加资料、生成播客与幻灯片并让 AI 助手直接操作你的研究笔记。本文逐层剖析它的源码架构讲清 CLI、Services、Core、MCP 四层设计如何协作帮助你快速读懂这份代码库。 先装再看一个包两个可执行入口项目通过 PyPI 发布单个包同时提供两个入口定义在 pyproject.toml 中uv tool install notebooklm-mcp-cli # 或 pip install nlm # 命令行入口 → cli/main.py notebooklm-mcp # MCP 服务器入口 → mcp/server.pynlm面向人类用户与脚本的完整命令行工具notebooklm-mcp面向 AI 助手Claude、Gemini、Cursor 等的 MCP 服务器理解这两个入口是理解整个架构的钥匙。️ 四层架构全景源码位于src/notebooklm_tools/按职责清晰分成四层├── cli/ # 命令行层参数解析、提示交互、结果渲染薄壳 ├── mcp/ # MCP 服务器层FastMCP 门面 按领域拆分的工具定义薄壳 ├── services/ # 业务逻辑层校验、轮询、错误处理返回类型化结果 ├── core/ # 底层 API 客户端HTTP/RPC 通信、认证、重试无业务逻辑 └── utils/ # 配置路径、浏览器与 CDP Cookie 提取等公共设施项目自带的开发指南 CLAUDE.md 明确了两条分层规则cli/与mcp/必须是薄壳只处理用户体验提示、加载动画、JSON 响应业务一律委托给services/cli/与mcp/禁止直接导入core/所有调用必须经过services/这正是四层协作的核心两个入口共享一套业务逻辑底层通信细节对上层完全透明。 Core 层封装 Gemini Notebook 内部 APICore 层是唯一的网络世界接触点关键文件有两个core/base.pyBaseClient基类承载全部 HTTP/RPC 基础设施——基于httpx向内部batchexecute接口发请求内置指数退避重试自动处理 429 与RESOURCE_EXHAUSTED限流并支持通过环境变量热修补 Google 定期轮换的 RPC 方法 ID无需发新版本core/client.pyNotebookLMClient通过多继承聚合 12 个领域 Mixinnotebooks、sources、studio、research、conversation、sharing、notes、labels、collections、exports、downloads 等把每个领域的 API 调用组织到对应模块此外 core/auth.py 提供基于 profile 的认证管理Cookie 提取则复用 utils/cdp.py 的 Chrome DevTools 协议通道。⚙️ Services 层CLI 与 MCP 共享的业务大脑services/目录如 services/notebooks.py包含所有业务逻辑有两个显著特征类型化契约每个模块用TypedDict声明返回结构如NotebookInfo、NotebookListResultCLI 和 MCP 拿到的是同一份可信数据结构统一错误模型只抛出ServiceError/ValidationError等语义化异常绝不让裸异常穿透到入口层这意味着给列出笔记本增加排序逻辑时只需改一处CLI 与 MCP 的 40 多个工具自动受益。 CLI 与 MCP两个薄壳如何接电入口关键文件职责CLIcli/main.py、cli/commands/用 Typer 注册notebook/source/studio等 20 余个命令组用 rich 渲染表格MCPmcp/server.py、mcp/tools/FastMCP 门面 _register_tools()按领域注册工具以 mcp/tools/notebooks.py 中的notebook_list为例工具函数只做三件事经get_client()获取客户端、调用notebooks_service.list_notebooks()、捕获ServiceError转成error_result。没有任何业务代码——这就是薄壳的具象体现。 一次请求如何穿越四层以nlm notebook list为例请求与响应的完整路径CLI 层cli/commands/notebook.py 解析参数构造客户端Services 层notebooks.list_notebooks(client)完成参数校验与结果归一化Core 层BaseClient携带认证信息发送batchexecuteRPC自动重试限流错误反向返回Core 解析原始响应 → Services 返回类型化 dict → CLI 渲染成表格若走 MCP则序列化为 JSON 交给 AI 助手同一条调用链CLI 得到人类可读的表格MCP 得到 AI 可理解的 JSON——差异只在最外层。 新手源码阅读路线建议按依赖方向从外到内阅读CLAUDE.md —— 5 分钟掌握架构、分层规则与认证机制services/notebooks.py —— 最完整的业务模块范例core/client.py —— 看 Mixin 如何拼装领域能力mcp/tools/ —— 体会薄壳模式配套文档可延伸阅读docs/GETTING_STARTED.md上手、docs/CLI_GUIDE.md命令参考、docs/MCP_GUIDE.md全部 MCP 工具、docs/API_REFERENCE.md内部 API 细节适合调试时查阅。分层设计的真正收益新增功能时贡献者只需按固定套路改三处——Core 加底层方法、Services 加业务逻辑、两个薄壳各加一个包装函数见 CLAUDE.md 中的 Contributing 章节。这种可预期的扩展方式正是四层架构最优雅的地方。【免费下载链接】gemini-notebook-mcp-cliProgrammatic access to Gemini Notebook - via command-line interface (CLI), Model Context Protocol (MCP) server, and AI agent skills.项目地址: https://gitcode.com/gh_mirrors/not/gemini-notebook-mcp-cli创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表