@roomi-fields/notebooklm-mcp 1.7.9 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Canonical (v2) tool names — a navigable `namespace.action` dot-notation tree.
3
+ *
4
+ * v2.0.0 renamed every tool from a flat snake_case list to this tree. The legacy
5
+ * flat names still work everywhere — both the stdio server and the HTTP proxy
6
+ * accept them as aliases — but `tools/list` advertises only the canonical names.
7
+ *
8
+ * This module has no heavy imports on purpose: both `tools/index.ts` and the
9
+ * lightweight `stdio-http-proxy.ts` import it.
10
+ */
11
+ /** Legacy flat name (still used internally by handlers) → canonical v2 name. */
12
+ export const LEGACY_TO_CANONICAL = {
13
+ // library.* — the local notebook library
14
+ add_notebook: 'library.add',
15
+ list_notebooks: 'library.list',
16
+ get_notebook: 'library.get',
17
+ select_notebook: 'library.select',
18
+ update_notebook: 'library.update',
19
+ remove_notebook: 'library.remove',
20
+ search_notebooks: 'library.search',
21
+ auto_discover_notebook: 'library.discover',
22
+ get_library_stats: 'library.stats',
23
+ // notebook.* — operations directly against NotebookLM
24
+ ask_question: 'notebook.ask',
25
+ create_notebook: 'notebook.create',
26
+ delete_notebooks_from_nblm: 'notebook.delete',
27
+ list_notebooks_from_nblm: 'notebook.list',
28
+ // session.* — chat sessions
29
+ list_sessions: 'session.list',
30
+ close_session: 'session.close',
31
+ reset_session: 'session.reset',
32
+ // source.* — notebook sources
33
+ add_source: 'source.add',
34
+ delete_source: 'source.delete',
35
+ // content.* — generated Studio content
36
+ generate_content: 'content.generate',
37
+ list_content: 'content.list',
38
+ download_content: 'content.download',
39
+ // note.* — Studio notes
40
+ create_note: 'note.create',
41
+ save_chat_to_note: 'note.save_chat',
42
+ convert_note_to_source: 'note.to_source',
43
+ // auth.* — Google authentication
44
+ setup_auth: 'auth.setup',
45
+ de_auth: 'auth.logout',
46
+ re_auth: 'auth.switch',
47
+ // server.* — server lifecycle
48
+ get_health: 'server.health',
49
+ cleanup_data: 'server.cleanup',
50
+ // vault.* — offline answer caching
51
+ batch_to_vault: 'vault.batch',
52
+ };
53
+ /** Canonical v2 dot-notation name → legacy flat name. */
54
+ export const CANONICAL_TO_LEGACY = Object.fromEntries(Object.entries(LEGACY_TO_CANONICAL).map(([legacy, canonical]) => [canonical, legacy]));
55
+ /** Resolve any accepted name (canonical or legacy) to the legacy name used internally. */
56
+ export function toLegacyName(name) {
57
+ return CANONICAL_TO_LEGACY[name] ?? name;
58
+ }
59
+ /** Resolve a legacy name to its canonical v2 name (unknown names pass through). */
60
+ export function toCanonicalName(name) {
61
+ return LEGACY_TO_CANONICAL[name] ?? name;
62
+ }
63
+ //# sourceMappingURL=tool-names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-names.js","sourceRoot":"","sources":["../../src/tools/tool-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAA2B;IACzD,yCAAyC;IACzC,YAAY,EAAE,aAAa;IAC3B,cAAc,EAAE,cAAc;IAC9B,YAAY,EAAE,aAAa;IAC3B,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,gBAAgB;IACjC,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,gBAAgB;IAClC,sBAAsB,EAAE,kBAAkB;IAC1C,iBAAiB,EAAE,eAAe;IAClC,sDAAsD;IACtD,YAAY,EAAE,cAAc;IAC5B,eAAe,EAAE,iBAAiB;IAClC,0BAA0B,EAAE,iBAAiB;IAC7C,wBAAwB,EAAE,eAAe;IACzC,4BAA4B;IAC5B,aAAa,EAAE,cAAc;IAC7B,aAAa,EAAE,eAAe;IAC9B,aAAa,EAAE,eAAe;IAC9B,8BAA8B;IAC9B,UAAU,EAAE,YAAY;IACxB,aAAa,EAAE,eAAe;IAC9B,uCAAuC;IACvC,gBAAgB,EAAE,kBAAkB;IACpC,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,kBAAkB;IACpC,wBAAwB;IACxB,WAAW,EAAE,aAAa;IAC1B,iBAAiB,EAAE,gBAAgB;IACnC,sBAAsB,EAAE,gBAAgB;IACxC,iCAAiC;IACjC,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,aAAa;IACtB,OAAO,EAAE,aAAa;IACtB,8BAA8B;IAC9B,UAAU,EAAE,eAAe;IAC3B,YAAY,EAAE,gBAAgB;IAC9B,mCAAmC;IACnC,cAAc,EAAE,aAAa;CAC9B,CAAC;AAEF,yDAAyD;AACzD,MAAM,CAAC,MAAM,mBAAmB,GAA2B,MAAM,CAAC,WAAW,CAC3E,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CACtF,CAAC;AAEF,0FAA0F;AAC1F,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC;AAC3C,CAAC"}
package/dist/types.d.ts CHANGED
@@ -112,6 +112,20 @@ export interface Tool {
112
112
  properties: Record<string, JsonSchemaProperty>;
113
113
  required?: string[];
114
114
  };
115
+ /** Shape of the structured result returned by the tool (the ToolResult envelope). */
116
+ outputSchema?: {
117
+ type: 'object';
118
+ properties: Record<string, JsonSchemaProperty>;
119
+ required?: string[];
120
+ };
121
+ /** Optional behaviour hints surfaced to MCP clients (read-only, destructive, etc.). */
122
+ annotations?: {
123
+ title?: string;
124
+ readOnlyHint?: boolean;
125
+ destructiveHint?: boolean;
126
+ idempotentHint?: boolean;
127
+ openWorldHint?: boolean;
128
+ };
115
129
  }
116
130
  /**
117
131
  * Options for human-like typing
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -1,39 +1,65 @@
1
1
  # MCP Directories & Registries
2
2
 
3
- Tracking of all directories where `@roomi-fields/notebooklm-mcp` is listed or submitted.
3
+ Tracking of all directories where `@roomi-fields/notebooklm-mcp` is listed or submitted, plus the release/distribution process that pushes changes to them.
4
+
5
+ **Current version:** `1.7.9` · **Directory landscape re-scanned:** 2026-05-14
4
6
 
5
7
  ## Currently Listed
6
8
 
7
- | Directory | URL | Notes |
8
- | ------------------------- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
9
- | **Glama.ai** | [glama.ai/mcp/servers/@roomi-fields/notebooklm-mcp](https://glama.ai/mcp/servers/@roomi-fields/notebooklm-mcp) | Security A, Quality A, License A. Auto-indexed. |
10
- | **PulseMCP** | [pulsemcp.com/servers/pleaseprompto-notebooklm](https://www.pulsemcp.com/servers/pleaseprompto-notebooklm) | #163 global, ~177k visitors. Auto-aggregated. |
11
- | **mcpservers.org** | [mcpservers.org/servers/roomi-fields/notebooklm-mcp](https://mcpservers.org/servers/roomi-fields/notebooklm-mcp) | Full listing. Auto-indexed. |
12
- | **MCPMarket.com** | [mcpmarket.com/server/notebooklm](https://mcpmarket.com/server/notebooklm) | Has Top 100 leaderboard. |
13
- | **LobeHub** | [lobehub.com/mcp/roomi-fields-notebooklm-mcp](https://lobehub.com/mcp/roomi-fields-notebooklm-mcp) | Auto-indexed. |
14
- | **npm** | [npmjs.com/package/@roomi-fields/notebooklm-mcp](https://www.npmjs.com/package/@roomi-fields/notebooklm-mcp) | v1.5.7 published with `mcpName` field. |
15
- | **Official MCP Registry** | [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io/) | `io.github.roomi-fields/notebooklm-mcp` v1.5.7, status active. |
16
- | **Cursor Directory** | [cursor.directory/mcp/notebooklm-mcp](https://cursor.directory/mcp/notebooklm-mcp) | Submitted via web form. Live. |
17
- | **awesome-mcp-servers** | [github.com/punkpeye/awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers) | 79.6k stars. Merged via [PR #2467](https://github.com/punkpeye/awesome-mcp-servers/pull/2467). |
9
+ ### Primary distribution channels (we control)
10
+
11
+ | Channel | URL | Notes |
12
+ | ---------------------------- | ------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
13
+ | **npm** | [npmjs.com/package/@roomi-fields/notebooklm-mcp](https://www.npmjs.com/package/@roomi-fields/notebooklm-mcp) | Canonical install. Auto-published on tag push by `.github/workflows/release.yml`. |
14
+ | **GitHub releases** | [github.com/roomi-fields/notebooklm-mcp/releases](https://github.com/roomi-fields/notebooklm-mcp/releases) | Release notes extracted from `CHANGELOG.md` per version, created automatically alongside the npm publish. |
15
+ | **Claude Code marketplace** | [github.com/roomi-fields/claude-plugins](https://github.com/roomi-fields/claude-plugins) | Aggregated marketplace (NotebookLM + RTFM). Upstream plugin manifest lives here at `.claude-plugin/plugin.json`. Install: `/plugin marketplace add roomi-fields/claude-plugins` + `/plugin install notebooklm@roomi-fields`. |
16
+ | **Official MCP Registry** | [registry.modelcontextprotocol.io](https://registry.modelcontextprotocol.io/) | `io.github.roomi-fields/notebooklm-mcp`. Last manual publish via `mcp-publisher` (see process section). `mcpName` declared in `package.json`. |
17
+ | **Docs site (GitHub Pages)** | [roomi-fields.github.io/notebooklm-mcp](https://roomi-fields.github.io/notebooklm-mcp/) | Docusaurus, auto-deployed on push to `main` by `.github/workflows/deploy-docs.yml`. Source under `website/`. |
18
+ | **Smithery** | [smithery.ai/servers/roomifields/notebooklm-mcp](https://smithery.ai/servers/roomifields/notebooklm-mcp) | Published 2026-05-14, quality score 60/100 (Metadata 35/35, Config UX 25/25, Capability 0/40 — Smithery can't introspect tools, the server needs a browser + Google auth to boot). Namespace is `roomifields` (no hyphen). Publish process below. |
19
+ | **Schema host** | [schemas.roomi-fields.com/nblm-answer-v1.json](https://schemas.roomi-fields.com/nblm-answer-v1.json) | Canonical home of the `nblm-answer-v1` JSON Schema, mirrored from `schemas/nblm-answer-v1.json` in this repo. Also embedded in `deployment/docs/14-RTFM-INTEGRATION.md` and referenced by `src/utils/vault-writer.ts`. Bump to v2 on breaking changes — never mutate v1. |
20
+
21
+ ### Auto-indexed third-party directories
22
+
23
+ | Directory | URL | Notes |
24
+ | -------------------------------- | ---------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
25
+ | **Glama.ai** | [glama.ai/mcp/servers/@roomi-fields/notebooklm-mcp](https://glama.ai/mcp/servers/@roomi-fields/notebooklm-mcp) | Security A, Quality A, License A. Auto-indexed. Tries to build their own Dockerfile (pnpm + Node 24) — see "Glama build" in process section below. |
26
+ | **PulseMCP** | [pulsemcp.com/servers/pleaseprompto-notebooklm](https://www.pulsemcp.com/servers/pleaseprompto-notebooklm) | ~14.9k servers tracked, largest hand-reviewed directory. Auto-aggregated. |
27
+ | **mcpservers.org** | [mcpservers.org/servers/roomi-fields/notebooklm-mcp](https://mcpservers.org/servers/roomi-fields/notebooklm-mcp) | Full listing. Auto-indexed. **This is the source for [`wong2/awesome-mcp-servers`](https://github.com/wong2/awesome-mcp-servers) (~3.6k★)** — that repo no longer takes PRs, it pulls from mcpservers.org/submit. So we're already in wong2's list. |
28
+ | **MCPMarket.com** | [mcpmarket.com/server/notebooklm](https://mcpmarket.com/server/notebooklm) | Has Top 100 leaderboard. |
29
+ | **LobeHub** | [lobehub.com/mcp/roomi-fields-notebooklm-mcp](https://lobehub.com/mcp/roomi-fields-notebooklm-mcp) | Auto-indexed. |
30
+ | **Cursor Directory** | [cursor.directory/mcp/notebooklm-mcp](https://cursor.directory/mcp/notebooklm-mcp) | Submitted via web form. Live. |
31
+ | **punkpeye/awesome-mcp-servers** | [github.com/punkpeye/awesome-mcp-servers](https://github.com/punkpeye/awesome-mcp-servers) | ~79.6k stars. Merged via [PR #2467](https://github.com/punkpeye/awesome-mcp-servers/pull/2467). |
32
+ | **best-of-mcp-servers** | [github.com/tolkonepiu/best-of-mcp-servers](https://github.com/tolkonepiu/best-of-mcp-servers) | Auto-ranked weekly from GitHub + package-manager metrics. No submission — **verify we appear** once stars/downloads cross their threshold. |
18
33
 
19
34
  ## Pending Review
20
35
 
21
- | Directory | Submission | Date | Link |
22
- | --------------------- | ------------------- | ---------- | ---------------------------------------------------------------------------- |
23
- | **Cline Marketplace** | Issue | 2026-02-27 | [Issue #703](https://github.com/cline/mcp-marketplace/issues/703) |
24
- | **mcp.so** | Comment on Issue #1 | 2026-02-27 | [Comment](https://github.com/chatmcp/mcpso/issues/1#issuecomment-3971662494) |
36
+ | Directory | Submission | Date | Link / Notes |
37
+ | --------------------- | ---------------------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
38
+ | **Cline Marketplace** | Issue + logo posted | 2026-05-14 | [Issue #703](https://github.com/cline/mcp-marketplace/issues/703). Logo `assets/notebooklm-mcp-logo-400.png` posted on the issue; awaiting maintainer review. |
39
+ | **mcp.so** | Comment on Issue #1 (never landed) | 2026-02-27 | ~19.7k servers, largest by volume. The old issue-comment route stalled — **resubmit via their current web form** at mcp.so. |
40
+
41
+ ## Closed to Submissions
42
+
43
+ | Directory | Notes |
44
+ | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
45
+ | **appcypher/awesome-mcp-servers** | ~5k★ but **PRs and Issues are both disabled** by the owner (verified 2026-05-14). No submission path. A ready branch sits on the `roomi-fields/awesome-mcp-servers-2` fork if it ever reopens. |
25
46
 
26
47
  ## Not Yet Submitted (Tier 2)
27
48
 
28
- | Directory | How to Submit | Priority |
29
- | -------------------------------------------- | --------------------------------------------------------- | -------- |
30
- | **FindMCP.dev** | Web form at findmcp.dev (~2 min) | Medium |
31
- | **wong2/awesome-mcp-servers** (3.6k stars) | GitHub PR | Medium |
32
- | **appcypher/awesome-mcp-servers** (5k stars) | GitHub PR | Medium |
33
- | **MCPIndex.net** | Contact form at mcpindex.net/en/contact | Medium |
34
- | **MCPList.ai** | Web form | Medium |
35
- | **Docker MCP Catalog** | PR on github.com/docker/mcp-registry (needs Docker image) | Medium |
36
- | **Windsurf Directory** | windsurf.run/mcp | Low |
49
+ | Directory | How to Submit | Priority |
50
+ | ---------------------- | -------------------------------------------------------------------------------------------- | -------- |
51
+ | **mcp.directory** | Web form at mcp.directory ~3k servers, one-click install for Cursor/VS Code/Claude/ChatGPT | High |
52
+ | **FindMCP.dev** | Web form at findmcp.dev (~2 min) | Medium |
53
+ | **MCPIndex.net** | Contact form at mcpindex.net/en/contact | Medium |
54
+ | **MCPList.ai** | Web form | Medium |
55
+ | **Docker MCP Catalog** | PR on github.com/docker/mcp-registry (needs Docker image) | Medium |
56
+ | **Windsurf Directory** | windsurf.run/mcp | Low |
57
+
58
+ ### Verified low-value (2026-05-14 scan) — deprioritised
59
+
60
+ - **best-of-mcp-servers** — we don't appear; it's threshold-ranked, revisit once stars/downloads grow.
61
+ - **mcp-awesome.com** — the "1.2k servers" claim is marketing; the live site listed ~18. Skip.
62
+ - **PopularAiTools.ai** — already listed, but the entry is low-quality and ranks below PleasePrompto. Not worth chasing; would need their editorial process to improve.
37
63
 
38
64
  ## Not Yet Submitted (Tier 3)
39
65
 
@@ -63,7 +89,41 @@ Tracking of all directories where `@roomi-fields/notebooklm-mcp` is listed or su
63
89
  | **GitHub notifications** | Enabled on all 13 public repos | Watch → All Activity |
64
90
  | **Cline logo** | Not yet created | 400x400 PNG needed for Cline Marketplace submission |
65
91
 
66
- ## How to Complete Official MCP Registry
92
+ ## Release & Distribution Process
93
+
94
+ ### 1. Version bump (one source, propagated)
95
+
96
+ The version number lives in **5 places** that must stay in sync. Run `npm run version:sync` after editing `package.json`:
97
+
98
+ | File | Field |
99
+ | ------------------------------ | ------------------------------------------------------------------------------------- |
100
+ | `package.json` | `version` (source of truth) |
101
+ | `.claude-plugin/plugin.json` | `version` AND `mcpServers.notebooklm.args[1]` (the `@<version>` pin — see note below) |
102
+ | `website/docusaurus.config.ts` | `softwareVersion` in the SoftwareApplication JSON-LD |
103
+ | `README.md` | Latest-version mention in the hero / latest-releases bullets |
104
+
105
+ CI gate: `.github/workflows/release.yml` runs `npm run version:check` before publish — release fails if anything drifts. The sync script uses **regex replace** on the target fields, not `JSON.parse + JSON.stringify`, to avoid fighting prettier's array layout (see `feedback_version_sync_prettier.md`).
106
+
107
+ > ⚠️ **The `@<version>` pin in `plugin.json.mcpServers.notebooklm.args` is mandatory, not cosmetic.** Without it, `/plugin marketplace update` does NOT actually upgrade the running MCP server — npx reuses the `_npx/<hash>/` cache. Bit us in 1.7.4 → users stuck on 1.7.2.
108
+
109
+ ### 2. Tag → CI → npm + GitHub release
110
+
111
+ ```bash
112
+ git tag v1.7.9
113
+ git push --tags
114
+ ```
115
+
116
+ That triggers `.github/workflows/release.yml`:
117
+
118
+ 1. `npm ci` (lockfile-aware; `overrides` block forces ip-address ≥10.2.0 for GHSA-v2v4-37r5-5v8g)
119
+ 2. `npm run version:check` — fails the build if any of the 5 sync targets drifted
120
+ 3. `npm run build` (tsc + i18n copy + `chmod 755` on `dist/index.js` and `dist/stdio-http-proxy.js`)
121
+ 4. `npm publish --access public`
122
+ 5. Extract CHANGELOG section for this version → create GitHub release with notes
123
+
124
+ ### 3. Official MCP Registry (manual publish)
125
+
126
+ npm publish does **not** propagate to `registry.modelcontextprotocol.io` — that registry needs an explicit publish via the `mcp-publisher` CLI. Do this after a notable release:
67
127
 
68
128
  ```bash
69
129
  cd /mnt/d/path/to/notebooklm-mcp
@@ -71,14 +131,77 @@ cd /mnt/d/path/to/notebooklm-mcp
71
131
  # 1. Login (opens browser for GitHub device flow)
72
132
  ./mcp-publisher login github
73
133
 
74
- # 2. Publish
134
+ # 2. Publish (reads server.json + package.json mcpName)
75
135
  ./mcp-publisher publish
76
136
 
77
137
  # 3. Verify
78
138
  curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=io.github.roomi-fields/notebooklm-mcp"
79
139
  ```
80
140
 
81
- ## Files Related to Registry
141
+ ### 4. Claude Code marketplace propagation
142
+
143
+ The aggregated marketplace at `roomi-fields/claude-plugins` references the upstream `.claude-plugin/plugin.json` in this repo. End users upgrade with:
144
+
145
+ ```
146
+ /plugin marketplace update roomi-fields
147
+ /reload-plugins
148
+ ```
149
+
150
+ > ⚠️ There is **no** `/plugin update <name>` command — that's a common mistake (see `feedback_claude_code_plugin_commands.md`). The marketplace must be updated, then plugins reloaded.
151
+
152
+ If a user is stuck on an old npx cache: the `@<version>` pin in `plugin.json.mcpServers.notebooklm.args` fixes this for new installs starting from 1.7.5+. For pre-1.7.5 installs, the user has to manually clear `~/.npm/_npx/`.
153
+
154
+ ### 5. Glama build (auto-rebuild, occasionally flaky)
155
+
156
+ Glama auto-rebuilds the Docker image on each release commit using **their own** Dockerfile (not ours):
157
+
158
+ - Base: `debian:bookworm-slim`
159
+ - Node 24 + `pnpm@10.14.0` + `mcp-proxy@6.4.3` globally
160
+ - `pnpm install && pnpm run build`
161
+ - CMD: `mcp-proxy node dist/index.js`
162
+
163
+ **Known infra fragility**: their builder can ECONNRESET while pulling `docker.io/library/debian:bookworm-slim` metadata. When that happens, the build aborts before `pnpm install` even runs. Retry from the admin UI at `https://glama.ai/mcp/servers/roomi-fields/notebooklm-mcp/admin/dockerfile/` (re-save the build spec to relaunch, or click Retry on the failed test detail page).
164
+
165
+ **Latent pnpm/npm gap**: our `overrides` block in `package.json` is **npm-only**. pnpm reads `pnpm.overrides`. Without a mirror, the Glama image would resolve `ip-address@10.1.0` (vulnerable) instead of the pinned `^10.2.0`. Add a `pnpm.overrides` mirror if/when Glama enables vulnerability scanning on their image, or migrate to a `pnpm-lock.yaml` in-repo.
166
+
167
+ ### 6. Smithery (manual, MCPB bundle)
168
+
169
+ Smithery lists this as a **local stdio** server (`remote: false`). It is **not** hosted — users still run it locally.
170
+
171
+ 1. Build the bundle from the committed source:
172
+ ```bash
173
+ npx @anthropic-ai/mcpb pack mcpb notebooklm-mcp.mcpb
174
+ ```
175
+ 2. Publish (needs Node ≥ 20 — the upload uses `globalThis.File`):
176
+ ```bash
177
+ npx @smithery/cli auth login
178
+ npx @smithery/cli mcp publish notebooklm-mcp.mcpb -n roomifields/notebooklm-mcp
179
+ ```
180
+ 3. Push server-level metadata (the bundle manifest does **not** populate the listing's description/homepage/icon):
181
+ ```bash
182
+ TOKEN=$(npx @smithery/cli auth token --policy '{"namespaces":"roomifields","ttl":"30m"}' | jq -r .token)
183
+ curl -X PATCH "https://registry.smithery.ai/servers/roomifields%2Fnotebooklm-mcp" \
184
+ -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
185
+ -d '{"description":"...","homepage":"https://roomi-fields.github.io/notebooklm-mcp/","iconUrl":"https://raw.githubusercontent.com/roomi-fields/notebooklm-mcp/main/mcpb/icon.png"}'
186
+ ```
187
+
188
+ **Gotchas:**
189
+
190
+ - Namespace is **`roomifields`** (no hyphen) — `roomi-fields` returns 403.
191
+ - The MCPB manifest **must declare at least one `user_config` option** or the publish fails with `400 "No values to set"`. We declare `data_dir` → `NOTEBOOKLM_DATA_DIR`.
192
+ - **Capability Quality stays 0/40**: Smithery can't introspect the tool list because the server boots a browser and needs Google auth — it can't run in their introspection sandbox. Metadata (35/35) + Config UX (25/25) → 60/100, which is the realistic ceiling for this server.
193
+
194
+ ## Files Related to Distribution
82
195
 
83
- - `server.json` — Official MCP Registry metadata
84
- - `package.json` Contains `mcpName: "io.github.roomi-fields/notebooklm-mcp"`
196
+ | File | Purpose |
197
+ | ----------------------------------- | -------------------------------------------------------------------------------------------------------------- |
198
+ | `package.json` | Source of truth for version. Contains `mcpName`, `bin`, `files`, `overrides`, build scripts. |
199
+ | `package-lock.json` | Lockfile — required to be in sync with `package.json` for `npm ci` to succeed in CI. |
200
+ | `server.json` | Official MCP Registry metadata (consumed by `mcp-publisher`). |
201
+ | `.claude-plugin/plugin.json` | Claude Code plugin manifest. Pinned version in `mcpServers.notebooklm.args` is load-bearing. |
202
+ | `scripts/sync-version.mjs` | Propagates `package.json` version to plugin manifest, docusaurus config, README. |
203
+ | `.github/workflows/release.yml` | Tag-driven: `version:check` → build → npm publish → GitHub release. |
204
+ | `.github/workflows/deploy-docs.yml` | Push-to-main: builds Docusaurus, deploys to `gh-pages` branch. |
205
+ | `Dockerfile` | Our local image (not used by Glama — Glama auto-generates its own). |
206
+ | `smithery.yaml` | Smithery discovery config — declares the stdio launch command (`npx -y @roomi-fields/notebooklm-mcp@latest`). |
207
+ | `CHANGELOG.md` | Per-version release notes. Section between `## [x.y.z]` headings is extracted into GitHub release notes by CI. |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roomi-fields/notebooklm-mcp",
3
- "version": "1.7.9",
3
+ "version": "2.0.1",
4
4
  "mcpName": "io.github.roomi-fields/notebooklm-mcp",
5
5
  "description": "MCP server for NotebookLM API with HTTP REST API - Zero hallucinations from your notebooks",
6
6
  "type": "module",
@@ -73,7 +73,11 @@
73
73
  "deployment"
74
74
  ],
75
75
  "overrides": {
76
- "ip-address": "^10.2.0"
76
+ "ip-address": "^10.2.0",
77
+ "fast-uri": "^3.1.2",
78
+ "hono": "^4.12.18",
79
+ "brace-expansion@^5.0.0": "^5.0.6",
80
+ "qs": "^6.15.2"
77
81
  },
78
82
  "dependencies": {
79
83
  "@modelcontextprotocol/sdk": "^1.0.0",