NotebookLM MCP Server
This server acts as a bridge between AI agents and Google NotebookLM, enabling full programmatic control over notebooks, sources, and AI-generated content.
Health Check – Verify CLI availability and authentication status.
Manage Notebooks – List, create, and delete notebooks.
Add Sources – Add sources (URL, file, YouTube video, or raw text) to a notebook; type is auto-detected if not specified.
List Sources – View all sources within a specific notebook.
Get Source Text – Retrieve the full indexed text content of a specific source.
Ask Notebook – Ask natural language questions and get AI-generated answers based on notebook sources.
Get Summary – Retrieve an AI-generated summary of a notebook's content.
Get History – Access the full conversation/Q&A history for a notebook.
Generate Audio – Generate an audio overview (podcast-style) from notebook sources.
Generate Report – Generate written reports (e.g., briefing docs, study guides, blog posts) from notebook content.
Provides tools for interacting with Google NotebookLM, enabling management of notebooks, sources, audio, reports, and history.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NotebookLM MCP ServerCreate a notebook called 'Project Ideas' and add a YouTube link as a source."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NotebookLM MCP Server v1.0
Read this in other languages: Русский Production-ready, fully asynchronous Model Context Protocol (MCP) server for Google NotebookLM.
This server acts as a bridge between AI agents (like Claude Desktop, Cursor, Antigravity) and NotebookLM, allowing your AI to read your notebooks, interact with your sources, and generate reports.
Features
Asynchronous Execution: Fully utilizes
asynciofor high concurrency handling.Robust Execution: Wrap NotebookLM CLI commands with timeouts and proper error handling.
Thread Safety (Command Queue): Multiple simultaneous requests are queued safely via
asyncio.Lock().Advanced MCP Tools: Includes
create_notebook,delete_notebook,add_source,list_sources,get_source_text,generate_audio,generate_report, andget_history.Multi-language Support (i18n): All tool docstrings are in English, ensuring seamless compatibility with any LLM globally.
Network Mode (SSE Transport): Supports both Standard I/O (local) and SSE (network) transport protocols.
Retries & Caching: Temporary CLI failures are retried automatically. Read operations are cached.
Diagnostics: Built-in
health_check()tool to verify CLI availability and authentication status.
Related MCP server: notebooklm-mcp
Installation
You can install this server either automatically (recommended) or manually.
Method A: One-Click Automatic Install (Recommended)
This method automatically sets up a virtual environment, installs all dependencies (including notebooklm-py and Chromium for Playwright), and registers the server in your IDEs (Claude Desktop, Cursor, Antigravity).
Clone or download this repository:
git clone https://github.com/Vetal711/notebooklm-mcp.git cd notebooklm-mcpRun the auto-installer script:
Windows: Double-click
install.bat(or run it in the terminal).Mac/Linux: Run
bash install.sh
Authenticate with Google: Once the installation is complete, you must authenticate the CLI. Run the following command and follow the instructions in the browser window:
Windows:
venv\Scripts\notebooklm.exe loginMac/Linux:
./venv/bin/notebooklm login
Restart your IDE/Agent (Claude Desktop, Cursor, or Antigravity) and the server will be available!
Method B: Manual Installation
If you prefer to configure everything manually or use a global Python environment:
Clone the repository:
git clone https://github.com/Vetal711/notebooklm-mcp.git cd notebooklm-mcpCreate a virtual environment and install dependencies:
python -m venv venv # On Windows: venv\Scripts\pip install -e . # On Mac/Linux: ./venv/bin/pip install -e .Install the Playwright browser driver:
# On Windows: venv\Scripts\playwright install chromium # On Mac/Linux: ./venv/bin/playwright install chromiumAuthenticate:
# On Windows: venv\Scripts\notebooklm.exe login # On Mac/Linux: ./venv/bin/notebooklm loginManual Configuration for MCP Clients: Instead of running the automated configuration script, you can manually add the following JSON block to your MCP client's configuration file (e.g.,
claude_desktop_config.json,cline_mcp_settings.json, ormcp_config.json).Make sure to replace
/absolute/path/to/notebooklm-mcpwith the actual absolute path to your cloned directory.{ "mcpServers": { "NotebookLM": { "command": "/absolute/path/to/notebooklm-mcp/venv/bin/notebooklm-mcp", "args": [] } } }(Note for Windows users: Use
venv\\Scripts\\notebooklm-mcp.exeand escape backslashes in paths).Important: The server will automatically generate a
.envfile in the root folder on first run (or during installation) to handle absolute paths properly.
Troubleshooting
Error: Authentication expired
If you receive this error in Claude/Cursor, it means the Playwright session's Google tokens have expired.
WARNING: DO NOT run the login command inside the AI agent's chat or terminal! AI agents run in a background window station, which makes the popup browser window completely invisible, causing the login process to hang forever.
Solution:
Open a standard, real OS terminal (or just double-click the script).
Run
login.bat(Windows) orlogin.sh(Mac/Linux) located in the project folder.A visible browser window will appear. Complete the login, and the window will close automatically.
Ensure that your MCP client's configuration file (e.g.,
claude_desktop_config.json) includes the"cwd": "/absolute/path/to/notebooklm-mcp"parameter so it doesn't lose the session again.
Docker Deployment
To build and run via Docker:
docker build -t notebooklm-mcp .
docker run -i --rm -v ~/.notebooklm:/root/.notebooklm notebooklm-mcp(Note: You need to mount the .notebooklm config directory to share your local authentication session).
Available Tools
12 toolsadd_sourceA
Add a source (file, text, URL) to a notebook.
notebook_id: The ID of the notebook. content: The content (URL, absolute file path, or raw text). source_type: Optional. Type of source (url, text, file, youtube). Auto-detected if omitted.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| content | Yes | ||
| source_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses that source_type is auto-detected if omitted, a behavioral trait. However, it does not indicate side effects, permissions, or failure modes, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus parameter bullet points, all front-loaded and efficient. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and all parameters adequately. An output schema exists (not shown) to handle return values. It could mention that sources are stored for later retrieval, but overall it is sufficient for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining notebook_id, content (with examples), and source_type (listing possible values). It adds meaning beyond the schema's titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds a source (file, text, URL) to a notebook, with a specific verb and resource. It distinguishes from sibling tools like list_sources and get_source_text by focusing on the creation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by listing parameters and noting auto-detection of source_type, but it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. No sibling tool directly competes, so missing guidance is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ask_notebookB
Ask a natural language question to a specific NotebookLM notebook.
notebook_id: The ID of the notebook. question: The question you want to ask based on the notebook's sources.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| question | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full disclosure burden. It fails to mention response format, latency, permission requirements, or limits on question complexity. The agent cannot infer behavioral traits like whether it returns a single answer or multiple sources.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise (three lines) with no fluff. The first sentence conveys the core purpose, followed by minimal but necessary parameter info. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter Q&A tool, the description covers the input but omits any mention of output behavior or side effects. The presence of an output schema (though not provided) somewhat mitigates the lack of return value description, but the overall completeness is only adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description's brief parameter explanations ('The ID of the notebook', 'The question you want to ask based on the notebook's sources') add basic semantic value. However, they lack detail such as format or example values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('ask a natural language question') and the target ('specific NotebookLM notebook'), leaving little ambiguity. However, it does not explicitly distinguish itself from siblings like 'get_summary' or 'get_source_text', though the action is inherently different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention context like 'when you need to query the notebook's content' or exclude scenarios (e.g., retrieval tasks better suited for other tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_notebookB
Create a new notebook in NotebookLM.
name: The name of the new notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose any behavioral traits (e.g., whether creation requires authentication, if it can overwrite, or any side effects). Simply states the action without further context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise (two sentences) with front-loaded action. Every word is useful. Could be slightly more structured (e.g., bullet for parameter), but overall excellent brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description is minimally adequate for a simple creation tool with one parameter. However, it lacks usage guidelines and behavioral context, making it less complete compared to higher-scoring examples.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description compensates by explicitly stating 'name: The name of the new notebook.' This adds meaning beyond the schema's type string. However, it lacks constraints like uniqueness or length.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Create a new notebook in NotebookLM.' It identifies the specific verb (create) and resource (notebook) and distinguishes from sibling tools like delete_notebook, list_notebooks, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. For example, it doesn't mention when to create a notebook vs. listing or deleting one. With siblings like add_source and ask_notebook, usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_notebookA
Delete a notebook from NotebookLM.
notebook_id: The ID or name of the notebook to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. It does not disclose whether deletion is permanent, what happens to associated sources, or error behavior on nonexistent notebook.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no wasted words. It directly states the purpose and parameter explanation, fitting the definition of high conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with an output schema, the description covers the basic purpose and parameter but lacks behavioral context (permanence, error handling) that would help the agent use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning by clarifying that notebook_id can be 'The ID or name of the notebook', going beyond the schema which only has 'Notebook Id'. With one parameter, this provides necessary clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and the resource (notebook), distinguishing it from sibling tools like create_notebook or list_notebooks. It is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, or any prerequisites such as the notebook existing. The usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_audioA
Generate an audio overview (podcast) from the notebook's sources. Note: This process can take several minutes to complete.
notebook_id: The ID of the notebook. prompt: Instructions for the audio overview (e.g., "focus on chapter 3").
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| prompt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only discloses that the process takes several minutes; no info on auth, rate limits, side effects, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: two sentences for purpose and a note, then each parameter explained in one line. No wasted words, front-loaded with key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given it has 2 required params, a note about timing, and an output schema (not described), the description is mostly complete. Could mention output format, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description compensates by explaining each parameter: 'notebook_id: The ID of the notebook.' and 'prompt: Instructions for the audio overview (e.g., 'focus on chapter 3').' Adds meaningful detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Generate an audio overview (podcast) from the notebook's sources' – a specific verb and resource. Distinguishes from siblings like generate_report (text report) and ask_notebook (Q&A).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a note about long processing time, implying it should be used when the user is prepared to wait, but no explicit when-to-use or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_reportC
Generate a written report (briefing doc, study guide, blog post) from the notebook. Note: This process can take several minutes to complete.
notebook_id: The ID of the notebook. prompt: Instructions for the report (e.g., "write a study guide for a 5th grader").
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| prompt | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the process takes several minutes but does not disclose read-only nature, required permissions, or potential side effects. This is insufficient for a tool that generates content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with only two sentences and parameter definitions. It front-loads the core purpose and includes a behavioral note. No unnecessary content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description does not mention what the report contains or its format. It lacks prerequisites (e.g., notebook must exist) and does not explain how the notebook is used. The tool has moderate complexity and long duration, requiring more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter explanations add meaning beyond the schema by providing examples (e.g., prompt example). However, notebook_id lacks context on how to obtain it, and prompt could benefit from length or formatting constraints. Schema coverage is 0%, so description partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a written report from the notebook, listing example report types. However, it does not differentiate from sibling tools like get_summary or ask_notebook, which may produce similar outputs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus siblings. The only usage hint is a note about long duration, but it does not specify prerequisites or when alternatives would be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyC
Get the full conversation history (Q&A) for a specific notebook.
notebook_id: The ID of the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It implies a read operation but omits details like authentication needs, rate limits, or what 'full' entails (e.g., pagination). Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (two lines) but redundant with the schema. No wasted words, but the param line could be integrated or omitted. Front-loads the main action well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 param, no enums, output schema present), the description is incomplete. It lacks usage context and behavioral details, making it less helpful for an AI agent to decide when to invoke.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description merely repeats 'notebook_id: The ID of the notebook,' adding no new meaning. With one parameter, it could offer format, source, or usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'full conversation history (Q&A) for a specific notebook,' specifying the verb, resource, and scope. It distinguishes from siblings like 'ask_notebook' and 'get_summary' by focusing on full history vs. asking questions or summaries, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'get_summary' for a condensed version). No exclusions or prerequisites provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_source_textA
Get the full indexed text content of a specific source in a notebook.
notebook_id: The ID of the notebook. source_id: The ID of the source (use list_sources to find it).
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes | ||
| source_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits beyond the basic action. It does not mention authorization requirements, performance characteristics, or any side effects. The existence of an output schema may define return values, but the description adds no behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of two sentences. The first sentence states the primary action, and the second lists the parameters with brief explanations. Every sentence serves a purpose with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (get operation with two parameters) and the presence of an output schema, the description covers the essentials. However, it lacks usage context such as prerequisites (e.g., notebook must exist) and does not elaborate on behavioral traits. It is minimally viable but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description bears the full burden of explaining parameters. It explains notebook_id as 'The ID of the notebook' and source_id as 'The ID of the source' with a helpful hint to use list_sources. This adds meaning beyond the schema's property names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('full indexed text content of a specific source'). It distinguishes itself from sibling tools like list_sources (which lists sources) and get_summary (which provides summaries).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need the full text of a source) but does not provide explicit guidance on alternatives or when not to use it. It references list_sources for finding the source_id, which is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_summaryC
Get the AI-generated summary of the notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully convey behavioral traits. It only states the action without disclosing whether the summary is pre-generated or computed on-the-fly, if it requires prior generation, or any side effects. The existence of an output schema partially mitigates this, but the description still lacks critical behavior details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, but it sacrifices necessary detail for brevity. While front-loaded with the core action, it lacks depth, resulting in under-specification rather than effective conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (not shown), the description could be sufficient if the schema fully documents the return. However, without parameter descriptions or annotations, and only one sentence of context, the tool is under-specified for an AI agent to invoke correctly, especially with numerous sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning for the notebook_id parameter beyond its type and requirement. It does not explain what the ID represents, how to obtain it, or any accepted formats, leaving the agent without necessary context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the 'AI-generated summary of the notebook', specifying both the verb ('Get') and the resource. However, it does not differentiate from sibling tools like get_history or get_source_text, which could cause confusion about which tool to use for related tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as ask_notebook or get_history. The description lacks context on prerequisites, typical use cases, or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkA
Check the availability of the CLI and authentication status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must convey behavioral traits. It implies a read-only status check, but does not explicitly state that it has no side effects or what actions are involved. The description is adequate but lacks full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. There is no wasted text, and it is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. For a simple health check tool, the description is sufficient, though it could benefit from mentioning common usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description does not need to add parameter details. The baseline score of 4 is appropriate as the description provides context for what the tool checks without needing parameter info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks CLI availability and authentication status, which is specific and distinguishes it from sibling tools like add_source or ask_notebook. However, 'CLI' could be ambiguous without context, slightly reducing clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For a health check, it could be used prior to other operations, but this is not mentioned, leaving the agent without context for appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notebooksA
Get a list of all NotebookLM notebooks.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It states the action is a read ('Get a list') but provides no details on rate limits, pagination, or side effects, leaving the agent with minimal behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no wasted words. It immediately conveys the tool's purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with an output schema, the description is sufficient to indicate the function. However, it does not mention the output format or structure, though the output schema covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100%. The description correctly implies no parameters are needed, meeting the baseline without requiring additional parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get a list') and resource ('all NotebookLM notebooks'), distinguishing it from siblings like 'list_sources' which lists sources, not notebooks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., list_sources). The description only states the action without context on appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesB
Get a list of all sources in a specific notebook.
| Name | Required | Description | Default |
|---|---|---|---|
| notebook_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits (e.g., read-only, permissions, pagination). It only states the action, lacking details like whether it's nested, requires auth, or has pagination. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words. It front-loads the key action and resource. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, output schema exists). The description is adequate for a basic list operation but lacks behavioral and parameter details. With no guidance on when to use it, completeness is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage for the 'notebook_id' parameter. The description does not clarify what notebook_id is, its format, or how to obtain it. For a required parameter, this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a list of all sources in a specific notebook' uses a specific verb ('Get a list') and clearly identifies the resource ('sources' and 'notebook'). It distinguishes from sibling tools like 'get_source_text' or 'add_source'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., get_source_text for a single source). No exclusions or context about prerequisites or limitations are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.4.0- First observed
add_source - First observed
ask_notebook - First observed
create_notebook - First observed
delete_notebook - First observed
generate_audio - First observed
generate_report - First observed
get_history - First observed
get_source_text - First observed
get_summary - First observed
health_check - First observed
list_notebooks - First observed
list_sources
TDQS
Scored across 12 tools
Each tool serves a distinct purpose: adding sources, asking questions, creating/deleting notebooks, generating audio/reports, retrieving history/summaries, and health checks. There is no overlap or ambiguity between tools.
Most tools follow a verb_noun pattern (e.g., add_source, create_notebook), but 'health_check' is noun_verb, breaking the pattern. Otherwise, naming is consistent and clear.
With 12 tools, the server covers the core NotebookLM workflows without being overwhelming. Each tool is necessary and well-scoped for the domain.
Missing operations include updating or deleting sources, updating notebook names, and a dedicated 'get_notebook' tool. Additionally, 'get_summary' lacks a notebook_id parameter, which is a notable gap.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProduction-grade Model Context Protocol server for Google NotebookLM that lets any MCP-capable client (Claude, ChatGPT, Cursor, etc.) interact with NotebookLM notebooks, sources, chats, and artifacts.MIT
- AlicenseAqualityCmaintenanceAn unofficial MCP server for Google NotebookLM that enables users to manage notebooks, add sources, ask questions with citations, and generate audio podcasts via a Playwright-based automation layer.19MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for querying Google NotebookLM notebooks, enabling AI assistants to list notebooks, read sources, and ask questions about them.MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that connects AI agents to Google NotebookLM, enabling natural language interaction with notebooks, including Q&A, source ingestion, and audio overview generation.2,189 npmMIT