MCP Server connecting consumer NotebookLM to Claude Web via SSE
Server has 11 tools with consistent naming (verb_noun pattern) and basic descriptions. All tools have input schemas with type definitions. However, descriptions are generic and lack LLM-optimization guidance (average ~120 chars, below the 50-200 char ideal for A-grade tools). Parameter descriptions are minimal, most lack format constraints, valid ranges, or dependency hints. Output schemas are undocumented (tools return free-text strings rather than structured objects). Error handling is present but generic ('Error X: {str(e)}') without recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Missing pagination for list_notebooks and list_artifacts despite potential for large result sets.
Add a raw text document source to a NotebookLM notebook. Args: notebook_id: The ID of the notebook. title: The title of the source document. content: The text content of the document. Returns: Confirmation message.
Add a web page URL source to a NotebookLM notebook. Args: notebook_id: The ID of the notebook. url: The URL of the web page to ingest. Returns: Confirmation message.
Create a new NotebookLM notebook. Args: title: The title of the notebook. Returns: Confirmation message with the created notebook ID.
Delete a NotebookLM notebook. Args: notebook_id: The ID of the notebook. Returns: Confirmation message.
Generate a new Briefing Document artifact from the notebook's sources and return its content. Args: notebook_id: The ID of the notebook. Returns: The markdown content of the generated Briefing Document.
Output schemas undocumented. All tools return free-text strings instead of structured JSON objects. LLMs cannot parse results reliably or chain downstream calls. Example: list_notebooks returns formatted text; should return {notebooks: [{id, title, sources_count}], total_count}.
Generic error handling. All tools catch exceptions and return 'Error X: {str(e)}' without recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. Example: 'Error listing notebooks: ...' tells agent nothing actionable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Get details of a specific NotebookLM notebook, including its sources. Args: notebook_id: The ID of the notebook. Returns: Formatted string containing notebook details and list of sources.
Get the text (markdown) content of a generated report artifact (Briefing Doc, Study Guide, Blog Post, FAQ, Timeline). Args: notebook_id: The ID of the notebook. artifact_id: The ID of the report artifact. Returns: The markdown text content of the report.
List all generated artifacts (such as briefing docs, study guides, audio overviews, slide decks, etc.) in the notebook. Args: notebook_id: The ID of the notebook. Returns: A formatted list of artifacts.
List all NotebookLM notebooks in the user's account. Returns: A formatted string listing the notebook titles, IDs, and source counts.
Ask a question to the NotebookLM notebook. It processes all or specific sources and returns a grounded answer with citations. Args: notebook_id: The ID of the notebook. question: The question or query to ask. source_ids: Optional list of source IDs to restrict the query. If omitted, queries all sources. Returns: The grounded answer from NotebookLM with citations.
Rename an existing source inside a NotebookLM notebook. Args: notebook_id: The ID of the notebook. source_id: The ID of the source to rename. new_title: The new title for the source. Returns: Confirmation message with the renamed source details.
Missing tool annotations. Destructive tools (delete_notebook) and read-only tools lack explicit hints. FastMCP supports destructiveHint and readOnlyHint annotations, use them to guide agent planning and prevent accidental data loss.
Parameter descriptions lack format constraints. 'notebook_id' and 'source_id' have no format hints (UUID? alphanumeric? length?). 'content' in add_text_source has no size limit. LLMs cannot validate inputs before calling.
No pagination for list tools. list_notebooks and list_artifacts return all results as formatted text. Large result sets will blow context windows. Add limit/offset parameters and return structured paginated results with total_count.