youtube-knowledge-mcp 1.2.0 → 2.0.0

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.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/youtube-knowledge-mcp.svg)](https://www.npmjs.com/package/youtube-knowledge-mcp)
4
4
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
- [![Node.js](https://img.shields.io/badge/Node.js-20%2B-green.svg)](https://nodejs.org/)
5
+ [![Node.js](https://img.shields.io/badge/Node.js-22%2B-green.svg)](https://nodejs.org/)
6
6
  [![GitHub stars](https://img.shields.io/github/stars/teobouancheau/youtube-knowledge-mcp?style=social)](https://github.com/teobouancheau/youtube-knowledge-mcp)
7
7
 
8
8
  A Model Context Protocol (MCP) server that gives AI assistants the ability to search, analyze, and extract knowledge from YouTube videos. Works with Claude Desktop, Claude Code, Claude.ai, Cursor and any MCP-compatible client.
@@ -50,7 +50,7 @@ Supports both **local** (stdio) and **remote** (Streamable HTTP) transports.
50
50
 
51
51
  ## Prerequisites
52
52
 
53
- - Node.js 20+
53
+ - Node.js 22+
54
54
  - [yt-dlp](https://github.com/yt-dlp/yt-dlp#installation) — required by every tool.
55
55
  `brew install yt-dlp` (macOS) or `pip install -U yt-dlp`
56
56
  - [ffmpeg](https://ffmpeg.org/) — required for downloads, clip extraction and frame
@@ -382,7 +382,7 @@ npm run start:http # Run server (HTTP)
382
382
  npm run validate # Typecheck + lint + format check + test
383
383
  ```
384
384
 
385
- CI runs the same gate on Node 20, 22 and 24 for every push and pull request,
385
+ CI runs the same gate on Node 22 and 24 for every push and pull request,
386
386
  then boots the built server as a real MCP client to verify the manifest.
387
387
 
388
388
  ## Contributing
package/dist/schemas.d.ts CHANGED
@@ -59,8 +59,8 @@ export declare const videoInfoSchema: z.ZodObject<{
59
59
  url: string;
60
60
  description: string;
61
61
  title: string;
62
- channel: string;
63
62
  id: string;
63
+ channel: string;
64
64
  uploadDate: string;
65
65
  thumbnailUrl: string;
66
66
  tags: string[];
@@ -73,8 +73,8 @@ export declare const videoInfoSchema: z.ZodObject<{
73
73
  url: string;
74
74
  description: string;
75
75
  title: string;
76
- channel: string;
77
76
  id: string;
77
+ channel: string;
78
78
  uploadDate: string;
79
79
  thumbnailUrl: string;
80
80
  tags: string[];
@@ -159,8 +159,8 @@ export declare const playlistInfoSchema: z.ZodObject<{
159
159
  lastModified: string;
160
160
  description: string;
161
161
  title: string;
162
- channel: string;
163
162
  id: string;
163
+ channel: string;
164
164
  handle: string;
165
165
  channelUrl: string;
166
166
  videoCount: number;
@@ -169,8 +169,8 @@ export declare const playlistInfoSchema: z.ZodObject<{
169
169
  lastModified: string;
170
170
  description: string;
171
171
  title: string;
172
- channel: string;
173
172
  id: string;
173
+ channel: string;
174
174
  handle: string;
175
175
  channelUrl: string;
176
176
  videoCount: number;
@@ -248,8 +248,8 @@ export declare const libraryMetadataSchema: z.ZodObject<{
248
248
  }, "strip", z.ZodTypeAny, {
249
249
  url: string;
250
250
  title: string;
251
- channel: string;
252
251
  videoId: string;
252
+ channel: string;
253
253
  tags: string[];
254
254
  dateSaved: string;
255
255
  hasTranscript: boolean;
@@ -258,8 +258,8 @@ export declare const libraryMetadataSchema: z.ZodObject<{
258
258
  }, {
259
259
  url: string;
260
260
  title: string;
261
- channel: string;
262
261
  videoId: string;
262
+ channel: string;
263
263
  tags: string[];
264
264
  dateSaved: string;
265
265
  hasTranscript: boolean;
@@ -24,8 +24,8 @@ export declare const getLibraryItemOutputSchema: {
24
24
  }, "strip", z.ZodTypeAny, {
25
25
  url: string;
26
26
  title: string;
27
- channel: string;
28
27
  videoId: string;
28
+ channel: string;
29
29
  tags: string[];
30
30
  dateSaved: string;
31
31
  hasTranscript: boolean;
@@ -34,8 +34,8 @@ export declare const getLibraryItemOutputSchema: {
34
34
  }, {
35
35
  url: string;
36
36
  title: string;
37
- channel: string;
38
37
  videoId: string;
38
+ channel: string;
39
39
  tags: string[];
40
40
  dateSaved: string;
41
41
  hasTranscript: boolean;
@@ -22,8 +22,8 @@ export declare const listLibraryOutputSchema: {
22
22
  }, "strip", z.ZodTypeAny, {
23
23
  url: string;
24
24
  title: string;
25
- channel: string;
26
25
  videoId: string;
26
+ channel: string;
27
27
  tags: string[];
28
28
  dateSaved: string;
29
29
  hasTranscript: boolean;
@@ -32,8 +32,8 @@ export declare const listLibraryOutputSchema: {
32
32
  }, {
33
33
  url: string;
34
34
  title: string;
35
- channel: string;
36
35
  videoId: string;
36
+ channel: string;
37
37
  tags: string[];
38
38
  dateSaved: string;
39
39
  hasTranscript: boolean;
@@ -2,10 +2,10 @@
2
2
  * Full-text search over the local library.
3
3
  *
4
4
  * A hand-written BM25 index rather than SQLite FTS5 or an embedding store:
5
- * `node:sqlite` needs Node 22 and this release still supports Node 20, and
6
5
  * embeddings would mean an API key and a heavyweight dependency for a server
7
6
  * whose whole appeal is four runtime dependencies. BM25 over a few thousand
8
- * saved notes is instant and costs nothing.
7
+ * saved notes is instant and costs nothing. `node:sqlite` is reachable now that
8
+ * the floor is Node 22, so FTS5 is the move if a library ever outgrows this.
9
9
  */
10
10
  import { z } from 'zod';
11
11
  export declare const indexedDocumentSchema: z.ZodObject<{
@@ -2,10 +2,10 @@
2
2
  * Full-text search over the local library.
3
3
  *
4
4
  * A hand-written BM25 index rather than SQLite FTS5 or an embedding store:
5
- * `node:sqlite` needs Node 22 and this release still supports Node 20, and
6
5
  * embeddings would mean an API key and a heavyweight dependency for a server
7
6
  * whose whole appeal is four runtime dependencies. BM25 over a few thousand
8
- * saved notes is instant and costs nothing.
7
+ * saved notes is instant and costs nothing. `node:sqlite` is reachable now that
8
+ * the floor is Node 22, so FTS5 is the move if a library ever outgrows this.
9
9
  */
10
10
  import { z } from 'zod';
11
11
  export const indexedDocumentSchema = z.object({
@@ -19,8 +19,8 @@ export declare const libraryMetadataSchema: z.ZodObject<{
19
19
  }, "strip", z.ZodTypeAny, {
20
20
  url: string;
21
21
  title: string;
22
- channel: string;
23
22
  videoId: string;
23
+ channel: string;
24
24
  tags: string[];
25
25
  dateSaved: string;
26
26
  hasTranscript: boolean;
@@ -29,8 +29,8 @@ export declare const libraryMetadataSchema: z.ZodObject<{
29
29
  }, {
30
30
  url: string;
31
31
  title: string;
32
- channel: string;
33
32
  videoId: string;
33
+ channel: string;
34
34
  tags: string[];
35
35
  dateSaved: string;
36
36
  hasTranscript: boolean;
@@ -43,8 +43,8 @@ export declare const libraryIndexSchema: z.ZodObject<{
43
43
  items: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnknown>, Record<string, {
44
44
  url: string;
45
45
  title: string;
46
- channel: string;
47
46
  videoId: string;
47
+ channel: string;
48
48
  tags: string[];
49
49
  dateSaved: string;
50
50
  hasTranscript: boolean;
@@ -56,8 +56,8 @@ export declare const libraryIndexSchema: z.ZodObject<{
56
56
  items: Record<string, {
57
57
  url: string;
58
58
  title: string;
59
- channel: string;
60
59
  videoId: string;
60
+ channel: string;
61
61
  tags: string[];
62
62
  dateSaved: string;
63
63
  hasTranscript: boolean;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "youtube-knowledge-mcp",
3
- "version": "1.2.0",
3
+ "version": "2.0.0",
4
4
  "description": "MCP Server for extracting and managing YouTube video knowledge",
5
5
  "author": "teobouancheau",
6
6
  "repository": {
@@ -59,7 +59,7 @@
59
59
  },
60
60
  "dependencies": {
61
61
  "@modelcontextprotocol/sdk": "^1.30.0",
62
- "execa": "^9.6.1",
62
+ "execa": "^10.0.1",
63
63
  "express": "^5.0.1",
64
64
  "webvtt-parser": "^2.2.0",
65
65
  "zod": "^3.25.0"
@@ -75,13 +75,13 @@
75
75
  "eslint-config-prettier": "^10.1.8",
76
76
  "globals": "^17.11.0",
77
77
  "husky": "^9.1.7",
78
- "lint-staged": "^16.4.0",
78
+ "lint-staged": "^17.3.0",
79
79
  "prettier": "^3.9.6",
80
80
  "typescript": "^5.4.0",
81
81
  "typescript-eslint": "^8.67.0",
82
82
  "vitest": "^4.1.10"
83
83
  },
84
84
  "engines": {
85
- "node": ">=20.0.0"
85
+ "node": ">=22.0.0"
86
86
  }
87
87
  }