@liorium/youtube-omni-mcp 0.2.0 → 0.2.2

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/.env.example CHANGED
@@ -1,9 +1,10 @@
1
1
  # Optional for public YouTube Data API reads
2
2
  YOUTUBE_API_KEY=
3
3
 
4
- # Optional cache/outlier provider, disabled by default
4
+ # Optional cache/outlier provider. When enabled with MongoDB URI, public YouTube API responses are cached.
5
5
  YOUTUBE_OMNI_ENABLE_OUTLIER=false
6
- YOUTUBE_OMNI_MONGO_URI=
6
+ YOUTUBE_OMNI_MONGO_URI=mongodb://127.0.0.1:27018/youtube_omni_mcp
7
+ YOUTUBE_OMNI_CACHE_TTL_SECONDS=21600
7
8
 
8
9
  # Safety defaults
9
10
  YOUTUBE_OMNI_MAX_RESULTS=50
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.2 - 2026-05-14
4
+
5
+ - Document the dedicated local MongoDB backing-service names under the `youtube-omni-mcp` package prefix.
6
+ - Standardize local Docker resources as `youtube-omni-mcp-mongo:7`, `youtube-omni-mcp-mongo`, and `youtube-omni-mcp-mongo-data`.
7
+ - Keep the dedicated MongoDB connection on `127.0.0.1:27018/youtube_omni_mcp` with cache collection `youtube_omni_cache`.
8
+
9
+ ## 0.2.1 - 2026-05-14
10
+
11
+ - Use the live YouTube Data API provider when `YOUTUBE_API_KEY` is configured instead of always using mock data.
12
+ - Add MongoDB cache provider activated by `YOUTUBE_OMNI_ENABLE_OUTLIER=true` plus `YOUTUBE_OMNI_MONGO_URI`.
13
+ - Add cache TTL configuration via `YOUTUBE_OMNI_CACHE_TTL_SECONDS` and document new-environment MCP setup.
14
+ - Keep mock provider fallback for safe schema/smoke testing when no API key is present.
15
+
3
16
  ## 0.2.0 - 2026-05-14
4
17
 
5
18
  - Add five Creator Research tools: outlier video discovery, hook comparison, topic angle extraction, comment pain-point summarization, and video angle matrix generation.
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  `youtube-omni` is a full-scope YouTube Creator Intelligence + Operations + Analytics + Production MCP project.
4
4
 
5
- Current implementation phase: **v0.2 Creator Research + governed write foundation**.
5
+ Current implementation phase: **v0.2.1 live YouTube Data API + MongoDB cache foundation**.
6
6
 
7
7
  ## v0.2 default boundary
8
8
 
@@ -57,7 +57,9 @@ Use this shape in an `mcp.json`-style client configuration:
57
57
  "env": {
58
58
  "YOUTUBE_API_KEY": "YOUR_YOUTUBE_DATA_API_KEY",
59
59
  "YOUTUBE_OMNI_MAX_RESULTS": "50",
60
- "YOUTUBE_OMNI_ENABLE_OUTLIER": "false",
60
+ "YOUTUBE_OMNI_ENABLE_OUTLIER": "true",
61
+ "YOUTUBE_OMNI_MONGO_URI": "mongodb://127.0.0.1:27018/youtube_omni_mcp",
62
+ "YOUTUBE_OMNI_CACHE_TTL_SECONDS": "21600",
61
63
  "YOUTUBE_OMNI_ENABLE_WRITE_TOOLS": "false",
62
64
  "YOUTUBE_OMNI_DRY_RUN_WRITES": "false",
63
65
  "YOUTUBE_OMNI_ENABLE_DOWNLOAD_TOOLS": "false",
@@ -72,7 +74,30 @@ For local development before publishing, use a packed tarball:
72
74
 
73
75
  ```bash
74
76
  npm pack
75
- npx -y ./liorium-youtube-omni-mcp-0.2.0.tgz
77
+ npx -y ./liorium-youtube-omni-mcp-0.2.1.tgz
78
+ ```
79
+
80
+ ## MongoDB cache mode
81
+
82
+ For a new Hermes/MCP environment, set both the flag and the URI:
83
+
84
+ ```yaml
85
+ YOUTUBE_OMNI_ENABLE_OUTLIER: 'true'
86
+ YOUTUBE_OMNI_MONGO_URI: mongodb://127.0.0.1:27018/youtube_omni_mcp
87
+ YOUTUBE_OMNI_CACHE_TTL_SECONDS: '21600'
88
+ ```
89
+
90
+ When `YOUTUBE_API_KEY` is present, youtube-omni uses the live YouTube Data API provider. When Mongo cache mode is also enabled, public Data API reads are wrapped by a MongoDB cache (`youtube_omni_cache` collection) so repeated research/planning calls reuse previous results instead of spending quota again. Without `YOUTUBE_API_KEY`, the server falls back to the mock provider for safe schema/smoke testing.
91
+
92
+ For local Docker-backed deployments, keep resource names under the package prefix:
93
+
94
+ ```text
95
+ image: youtube-omni-mcp-mongo:7
96
+ container: youtube-omni-mcp-mongo
97
+ volume: youtube-omni-mcp-mongo-data
98
+ port: 127.0.0.1:27018 -> 27017
99
+ db: youtube_omni_mcp
100
+ collection: youtube_omni_cache
76
101
  ```
77
102
 
78
103
  ## Development
@@ -7,6 +7,7 @@ export interface YoutubeOmniConfig {
7
7
  dryRunWrites: boolean;
8
8
  approvalAuditPath?: string;
9
9
  enableDownloadTools: boolean;
10
+ cacheTtlSeconds: number;
10
11
  }
11
12
  export declare function loadConfig(env?: NodeJS.ProcessEnv): YoutubeOmniConfig;
12
13
  export declare function redactedConfig(config: YoutubeOmniConfig): Record<string, unknown>;
@@ -8,7 +8,8 @@ export function loadConfig(env = process.env) {
8
8
  enableWriteTools: env.YOUTUBE_OMNI_ENABLE_WRITE_TOOLS === 'true',
9
9
  dryRunWrites: env.YOUTUBE_OMNI_DRY_RUN_WRITES === 'true',
10
10
  approvalAuditPath: env.YOUTUBE_OMNI_APPROVAL_AUDIT_PATH,
11
- enableDownloadTools: env.YOUTUBE_OMNI_ENABLE_DOWNLOAD_TOOLS === 'true'
11
+ enableDownloadTools: env.YOUTUBE_OMNI_ENABLE_DOWNLOAD_TOOLS === 'true',
12
+ cacheTtlSeconds: Number(env.YOUTUBE_OMNI_CACHE_TTL_SECONDS ?? 21600)
12
13
  };
13
14
  }
14
15
  export function redactedConfig(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAapD,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,aAAa,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;QACzD,QAAQ,EAAE,GAAG,CAAC,sBAAsB;QACpC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC;QACtD,gBAAgB,EAAE,GAAG,CAAC,+BAA+B,KAAK,MAAM;QAChE,YAAY,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;QACxD,iBAAiB,EAAE,GAAG,CAAC,gCAAgC;QACvD,mBAAmB,EAAE,GAAG,CAAC,kCAAkC,KAAK,MAAM;KACvE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAcpD,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,eAAe;QAClC,aAAa,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;QACzD,QAAQ,EAAE,GAAG,CAAC,sBAAsB;QACpC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE,CAAC;QACtD,gBAAgB,EAAE,GAAG,CAAC,+BAA+B,KAAK,MAAM;QAChE,YAAY,EAAE,GAAG,CAAC,2BAA2B,KAAK,MAAM;QACxD,iBAAiB,EAAE,GAAG,CAAC,gCAAgC;QACvD,mBAAmB,EAAE,GAAG,CAAC,kCAAkC,KAAK,MAAM;QACtE,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK,CAAC;KACrE,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAyB;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
package/dist/src/index.js CHANGED
@@ -21,7 +21,7 @@ rl.on('line', async (line) => {
21
21
  try {
22
22
  const request = JSON.parse(line);
23
23
  if (request.method === 'initialize') {
24
- respond(request.id, { protocolVersion: '2024-11-05', capabilities: { tools: {} }, serverInfo: { name: 'youtube-omni-mcp', version: '0.1.1' } });
24
+ respond(request.id, { protocolVersion: '2024-11-05', capabilities: { tools: {} }, serverInfo: { name: 'youtube-omni-mcp', version: '0.2.2' } });
25
25
  return;
26
26
  }
27
27
  if (request.method === 'tools/list') {
@@ -0,0 +1,82 @@
1
+ import type { ProviderHealth, YoutubeOmniProvider } from './types.js';
2
+ export interface CacheStore {
3
+ get<T>(key: string): Promise<T | undefined>;
4
+ set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
5
+ close?(): Promise<void>;
6
+ }
7
+ export declare class MongoCacheProvider implements YoutubeOmniProvider {
8
+ readonly upstream: YoutubeOmniProvider;
9
+ private readonly store;
10
+ private readonly ttlSeconds;
11
+ id: string;
12
+ name: string;
13
+ authTier: import("../core/envelope.js").AuthTier;
14
+ capabilities: string[];
15
+ constructor(upstream: YoutubeOmniProvider, store: CacheStore, ttlSeconds?: number);
16
+ isConfigured(): boolean;
17
+ healthCheck(): Promise<ProviderHealth>;
18
+ private cached;
19
+ searchVideos(input: {
20
+ query: string;
21
+ maxResults: number;
22
+ }): Promise<{
23
+ videos: any[];
24
+ }>;
25
+ searchChannels(input: {
26
+ query: string;
27
+ maxResults: number;
28
+ }): Promise<{
29
+ channels: any[];
30
+ }>;
31
+ getTrendingVideos(input: {
32
+ regionCode: string;
33
+ categoryId?: string;
34
+ maxResults: number;
35
+ }): Promise<{
36
+ videos: any[];
37
+ }>;
38
+ getVideoCategories(input: {
39
+ regionCode: string;
40
+ }): Promise<{
41
+ regionCode: string;
42
+ categories: any[];
43
+ }>;
44
+ getVideoDetails(input: {
45
+ videoIds: string[];
46
+ includeTags?: boolean;
47
+ descriptionDetail?: string;
48
+ }): Promise<{
49
+ videos: any[];
50
+ }>;
51
+ getChannelStatistics(input: {
52
+ channelIds: string[];
53
+ }): Promise<{
54
+ channels: any[];
55
+ }>;
56
+ getChannelTopVideos(input: {
57
+ channelId: string;
58
+ maxResults: number;
59
+ }): Promise<{
60
+ channelId: string;
61
+ videos: any[];
62
+ }>;
63
+ getVideoComments(input: {
64
+ videoId: string;
65
+ maxResults: number;
66
+ maxReplies: number;
67
+ }): Promise<{
68
+ videoId: string;
69
+ comments: any[];
70
+ }>;
71
+ }
72
+ export declare class MongoCacheStore implements CacheStore {
73
+ private readonly uri;
74
+ private readonly dbName;
75
+ private readonly collectionName;
76
+ private clientPromise?;
77
+ constructor(uri: string, dbName?: string, collectionName?: string);
78
+ private collection;
79
+ get<T>(key: string): Promise<T | undefined>;
80
+ set<T>(key: string, value: T, ttlSeconds?: number): Promise<void>;
81
+ close(): Promise<void>;
82
+ }
@@ -0,0 +1,118 @@
1
+ function stableStringify(value) {
2
+ if (Array.isArray(value))
3
+ return `[${value.map(stableStringify).join(',')}]`;
4
+ if (value && typeof value === 'object') {
5
+ return `{${Object.entries(value)
6
+ .sort(([a], [b]) => a.localeCompare(b))
7
+ .map(([key, val]) => `${JSON.stringify(key)}:${stableStringify(val)}`)
8
+ .join(',')}}`;
9
+ }
10
+ return JSON.stringify(value);
11
+ }
12
+ function cacheKey(providerId, method, input) {
13
+ return `youtube-omni:v1:${providerId}:${method}:${stableStringify(input)}`;
14
+ }
15
+ export class MongoCacheProvider {
16
+ upstream;
17
+ store;
18
+ ttlSeconds;
19
+ id = 'mongo_cache';
20
+ name = 'MongoDB cached YouTube provider';
21
+ authTier;
22
+ capabilities;
23
+ constructor(upstream, store, ttlSeconds = 6 * 60 * 60) {
24
+ this.upstream = upstream;
25
+ this.store = store;
26
+ this.ttlSeconds = ttlSeconds;
27
+ this.authTier = upstream.authTier;
28
+ this.capabilities = [...upstream.capabilities];
29
+ }
30
+ isConfigured() { return this.upstream.isConfigured(); }
31
+ async healthCheck() {
32
+ const upstream = await this.upstream.healthCheck();
33
+ return {
34
+ provider: this.id,
35
+ configured: this.isConfigured(),
36
+ authTier: this.authTier,
37
+ capabilities: this.capabilities,
38
+ warnings: [`Caching upstream provider: ${upstream.provider}`, ...upstream.warnings]
39
+ };
40
+ }
41
+ async cached(method, input, fetcher) {
42
+ const key = cacheKey(this.upstream.id, method, input);
43
+ const cached = await this.store.get(key);
44
+ if (cached !== undefined)
45
+ return cached;
46
+ const fresh = await fetcher();
47
+ await this.store.set(key, fresh, this.ttlSeconds);
48
+ return fresh;
49
+ }
50
+ async searchVideos(input) {
51
+ return this.cached('searchVideos', input, () => this.upstream.searchVideos(input));
52
+ }
53
+ async searchChannels(input) {
54
+ return this.cached('searchChannels', input, () => this.upstream.searchChannels(input));
55
+ }
56
+ async getTrendingVideos(input) {
57
+ return this.cached('getTrendingVideos', input, () => this.upstream.getTrendingVideos(input));
58
+ }
59
+ async getVideoCategories(input) {
60
+ return this.cached('getVideoCategories', input, () => this.upstream.getVideoCategories(input));
61
+ }
62
+ async getVideoDetails(input) {
63
+ return this.cached('getVideoDetails', input, () => this.upstream.getVideoDetails(input));
64
+ }
65
+ async getChannelStatistics(input) {
66
+ return this.cached('getChannelStatistics', input, () => this.upstream.getChannelStatistics(input));
67
+ }
68
+ async getChannelTopVideos(input) {
69
+ return this.cached('getChannelTopVideos', input, () => this.upstream.getChannelTopVideos(input));
70
+ }
71
+ async getVideoComments(input) {
72
+ return this.cached('getVideoComments', input, () => this.upstream.getVideoComments(input));
73
+ }
74
+ }
75
+ export class MongoCacheStore {
76
+ uri;
77
+ dbName;
78
+ collectionName;
79
+ clientPromise;
80
+ constructor(uri, dbName = databaseNameFromUri(uri), collectionName = 'youtube_omni_cache') {
81
+ this.uri = uri;
82
+ this.dbName = dbName;
83
+ this.collectionName = collectionName;
84
+ }
85
+ async collection() {
86
+ if (!this.clientPromise) {
87
+ const { MongoClient } = await import('mongodb');
88
+ const client = new MongoClient(this.uri, { serverSelectionTimeoutMS: 5000 });
89
+ this.clientPromise = client.connect().then(() => client);
90
+ }
91
+ const client = await this.clientPromise;
92
+ const collection = client.db(this.dbName).collection(this.collectionName);
93
+ await collection.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
94
+ return collection;
95
+ }
96
+ async get(key) {
97
+ const hit = await (await this.collection()).findOne({ _id: key, $or: [{ expiresAt: { $exists: false } }, { expiresAt: { $gt: new Date() } }] });
98
+ return hit?.value;
99
+ }
100
+ async set(key, value, ttlSeconds = 6 * 60 * 60) {
101
+ const expiresAt = new Date(Date.now() + ttlSeconds * 1000);
102
+ await (await this.collection()).updateOne({ _id: key }, { $set: { value, expiresAt, updatedAt: new Date() }, $setOnInsert: { createdAt: new Date() } }, { upsert: true });
103
+ }
104
+ async close() {
105
+ const client = await this.clientPromise;
106
+ await client?.close();
107
+ }
108
+ }
109
+ function databaseNameFromUri(uri) {
110
+ try {
111
+ const parsed = new URL(uri);
112
+ return parsed.pathname.replace(/^\//, '') || 'youtube_mcp';
113
+ }
114
+ catch {
115
+ return 'youtube_mcp';
116
+ }
117
+ }
118
+ //# sourceMappingURL=mongo-cache-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongo-cache-provider.js","sourceRoot":"","sources":["../../../src/providers/mongo-cache-provider.ts"],"names":[],"mappings":"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"}
@@ -6,4 +6,28 @@ export declare class TranscriptProvider implements YoutubeOmniProvider {
6
6
  capabilities: string[];
7
7
  isConfigured(): boolean;
8
8
  healthCheck(): Promise<ProviderHealth>;
9
+ getTranscriptSegments(input: {
10
+ videoIds: string[];
11
+ lang: string;
12
+ format: 'key_segments';
13
+ }): Promise<{
14
+ transcripts: {
15
+ videoId: string;
16
+ language: string;
17
+ format: "key_segments";
18
+ intro: string;
19
+ outro: string;
20
+ availability: string;
21
+ }[];
22
+ }>;
23
+ getTranscriptFullText(input: {
24
+ videoId: string;
25
+ lang: string;
26
+ maxChars: number;
27
+ }): Promise<{
28
+ videoId: string;
29
+ language: string;
30
+ text: string;
31
+ truncated: boolean;
32
+ }>;
9
33
  }
@@ -4,6 +4,14 @@ export class TranscriptProvider {
4
4
  authTier = 'none';
5
5
  capabilities = ['transcript'];
6
6
  isConfigured() { return true; }
7
- async healthCheck() { return { provider: this.id, configured: true, authTier: this.authTier, capabilities: this.capabilities, warnings: ['Placeholder provider returns TRANSCRIPT_UNAVAILABLE until a real transcript adapter is configured'] }; }
7
+ async healthCheck() {
8
+ return { provider: this.id, configured: true, authTier: this.authTier, capabilities: this.capabilities, warnings: ['Transcript provider returns unavailable placeholders until a real transcript adapter is configured'] };
9
+ }
10
+ async getTranscriptSegments(input) {
11
+ return { transcripts: input.videoIds.map((videoId) => ({ videoId, language: input.lang, format: input.format, intro: '', outro: '', availability: 'unavailable' })) };
12
+ }
13
+ async getTranscriptFullText(input) {
14
+ return { videoId: input.videoId, language: input.lang, text: '', truncated: false };
15
+ }
8
16
  }
9
17
  //# sourceMappingURL=transcript-provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transcript-provider.js","sourceRoot":"","sources":["../../../src/providers/transcript-provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAC7B,EAAE,GAAG,wBAAwB,CAAC;IAC9B,IAAI,GAAG,iCAAiC,CAAC;IACzC,QAAQ,GAAG,MAAe,CAAC;IAC3B,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC;IAC9B,YAAY,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IACxC,KAAK,CAAC,WAAW,KAA8B,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,mGAAmG,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5Q"}
1
+ {"version":3,"file":"transcript-provider.js","sourceRoot":"","sources":["../../../src/providers/transcript-provider.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAkB;IAC7B,EAAE,GAAG,wBAAwB,CAAC;IAC9B,IAAI,GAAG,iCAAiC,CAAC;IACzC,QAAQ,GAAG,MAAe,CAAC;IAC3B,YAAY,GAAG,CAAC,YAAY,CAAC,CAAC;IAE9B,YAAY,KAAc,OAAO,IAAI,CAAC,CAAC,CAAC;IAExC,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,oGAAoG,CAAC,EAAE,CAAC;IAC7N,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,KAAmE;QAC7F,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC,CAAC,EAAE,CAAC;IACxK,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,KAA0D;QACpF,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACtF,CAAC;CACF"}
@@ -1,11 +1,75 @@
1
1
  import type { ProviderHealth, YoutubeOmniProvider } from './types.js';
2
+ type FetchLike = typeof fetch;
2
3
  export declare class YoutubeDataApiProvider implements YoutubeOmniProvider {
3
4
  id: string;
4
5
  name: string;
5
6
  authTier: "api_key";
6
7
  capabilities: string[];
7
8
  private readonly apiKey?;
8
- constructor(apiKey?: string);
9
+ private readonly fetchImpl;
10
+ constructor(apiKey?: string, fetchImpl?: FetchLike);
9
11
  isConfigured(): boolean;
10
12
  healthCheck(): Promise<ProviderHealth>;
13
+ private get;
14
+ searchVideos(input: {
15
+ query: string;
16
+ maxResults: number;
17
+ order?: string;
18
+ videoDuration?: string;
19
+ recency?: string;
20
+ regionCode?: string;
21
+ }): Promise<{
22
+ videos: any;
23
+ }>;
24
+ searchChannels(input: {
25
+ query: string;
26
+ maxResults: number;
27
+ regionCode?: string;
28
+ }): Promise<{
29
+ channels: any;
30
+ }>;
31
+ getTrendingVideos(input: {
32
+ regionCode: string;
33
+ categoryId?: string;
34
+ maxResults: number;
35
+ }): Promise<{
36
+ videos: any;
37
+ }>;
38
+ getVideoCategories(input: {
39
+ regionCode: string;
40
+ }): Promise<{
41
+ regionCode: string;
42
+ categories: any;
43
+ }>;
44
+ getVideoDetails(input: {
45
+ videoIds: string[];
46
+ includeTags?: boolean;
47
+ descriptionDetail?: string;
48
+ }): Promise<{
49
+ videos: any;
50
+ }>;
51
+ getChannelStatistics(input: {
52
+ channelIds: string[];
53
+ }): Promise<{
54
+ channels: any;
55
+ }>;
56
+ getChannelTopVideos(input: {
57
+ channelId: string;
58
+ maxResults: number;
59
+ includeTags?: boolean;
60
+ descriptionDetail?: string;
61
+ }): Promise<{
62
+ channelId: string;
63
+ videos: any;
64
+ }>;
65
+ getVideoComments(input: {
66
+ videoId: string;
67
+ maxResults: number;
68
+ maxReplies: number;
69
+ order?: string;
70
+ }): Promise<{
71
+ videoId: string;
72
+ comments: any;
73
+ }>;
11
74
  }
75
+ export {};
@@ -1,13 +1,120 @@
1
+ const BASE = 'https://www.googleapis.com/youtube/v3';
2
+ function defined(params) {
3
+ const search = new URLSearchParams();
4
+ for (const [key, value] of Object.entries(params)) {
5
+ if (value !== undefined && value !== '')
6
+ search.set(key, String(value));
7
+ }
8
+ return search.toString();
9
+ }
10
+ function descriptionFor(snippet, detail) {
11
+ const text = snippet?.description ?? '';
12
+ if (detail === 'long')
13
+ return text.slice(0, 500);
14
+ if (detail === 'snippet')
15
+ return text.slice(0, 160);
16
+ return undefined;
17
+ }
18
+ function toVideo(item, detail, includeTags = false) {
19
+ const id = typeof item.id === 'string' ? item.id : item.id?.videoId;
20
+ const snippet = item.snippet ?? {};
21
+ return {
22
+ videoId: id,
23
+ title: snippet.title,
24
+ channelId: snippet.channelId,
25
+ channelTitle: snippet.channelTitle,
26
+ publishedAt: snippet.publishedAt,
27
+ descriptionSnippet: snippet.description?.slice?.(0, 160),
28
+ description: descriptionFor(snippet, detail),
29
+ duration: item.contentDetails?.duration,
30
+ categoryId: snippet.categoryId,
31
+ statistics: item.statistics,
32
+ tags: includeTags ? (snippet.tags ?? []) : undefined,
33
+ url: id ? `https://www.youtube.com/watch?v=${id}` : undefined
34
+ };
35
+ }
1
36
  export class YoutubeDataApiProvider {
2
37
  id = 'youtube_data_api';
3
38
  name = 'YouTube Data API Provider';
4
39
  authTier = 'api_key';
5
40
  capabilities = ['search', 'categories', 'video_details', 'channel_stats', 'channel_top_videos', 'comments'];
6
41
  apiKey;
7
- constructor(apiKey) { this.apiKey = apiKey; }
42
+ fetchImpl;
43
+ constructor(apiKey, fetchImpl = fetch) {
44
+ this.apiKey = apiKey;
45
+ this.fetchImpl = fetchImpl;
46
+ }
8
47
  isConfigured() { return Boolean(this.apiKey); }
9
48
  async healthCheck() {
10
49
  return { provider: this.id, configured: this.isConfigured(), authTier: this.authTier, capabilities: this.capabilities, warnings: this.isConfigured() ? [] : ['YOUTUBE_API_KEY is not configured'] };
11
50
  }
51
+ async get(path, params) {
52
+ const url = `${BASE}/${path}?${defined({ ...params, key: this.apiKey })}`;
53
+ const response = await this.fetchImpl(url);
54
+ if (!response.ok)
55
+ throw new Error(`YouTube Data API request failed: ${response.status} ${await response.text()}`);
56
+ return response.json();
57
+ }
58
+ async searchVideos(input) {
59
+ const data = await this.get('search', {
60
+ part: 'snippet',
61
+ type: 'video',
62
+ q: input.query,
63
+ maxResults: input.maxResults,
64
+ order: input.order,
65
+ videoDuration: input.videoDuration === 'any' ? undefined : input.videoDuration,
66
+ regionCode: input.regionCode
67
+ });
68
+ return { videos: (data.items ?? []).map((item) => toVideo(item)) };
69
+ }
70
+ async searchChannels(input) {
71
+ const data = await this.get('search', { part: 'snippet', type: 'channel', q: input.query, maxResults: input.maxResults, regionCode: input.regionCode });
72
+ return { channels: (data.items ?? []).map((item) => ({
73
+ channelId: item.id?.channelId,
74
+ title: item.snippet?.title,
75
+ descriptionSnippet: item.snippet?.description?.slice?.(0, 160),
76
+ url: item.id?.channelId ? `https://www.youtube.com/channel/${item.id.channelId}` : undefined
77
+ })) };
78
+ }
79
+ async getTrendingVideos(input) {
80
+ const data = await this.get('videos', { part: 'snippet,contentDetails,statistics', chart: 'mostPopular', regionCode: input.regionCode, videoCategoryId: input.categoryId, maxResults: input.maxResults });
81
+ return { videos: (data.items ?? []).map((item) => toVideo(item)) };
82
+ }
83
+ async getVideoCategories(input) {
84
+ const data = await this.get('videoCategories', { part: 'snippet', regionCode: input.regionCode });
85
+ return { regionCode: input.regionCode, categories: (data.items ?? []).map((item) => ({ id: item.id, title: item.snippet?.title, assignable: item.snippet?.assignable })) };
86
+ }
87
+ async getVideoDetails(input) {
88
+ const data = await this.get('videos', { part: 'snippet,contentDetails,statistics', id: input.videoIds.join(','), maxResults: input.videoIds.length });
89
+ return { videos: (data.items ?? []).map((item) => toVideo(item, input.descriptionDetail, input.includeTags)) };
90
+ }
91
+ async getChannelStatistics(input) {
92
+ const data = await this.get('channels', { part: 'snippet,statistics', id: input.channelIds.join(','), maxResults: input.channelIds.length });
93
+ return { channels: (data.items ?? []).map((item) => ({
94
+ channelId: item.id,
95
+ title: item.snippet?.title,
96
+ subscriberCount: item.statistics?.subscriberCount,
97
+ viewCount: item.statistics?.viewCount,
98
+ videoCount: item.statistics?.videoCount,
99
+ publishedAt: item.snippet?.publishedAt
100
+ })) };
101
+ }
102
+ async getChannelTopVideos(input) {
103
+ const search = await this.get('search', { part: 'snippet', channelId: input.channelId, type: 'video', order: 'viewCount', maxResults: input.maxResults });
104
+ const ids = (search.items ?? []).map((item) => item.id?.videoId).filter(Boolean);
105
+ const details = ids.length ? await this.getVideoDetails({ videoIds: ids, includeTags: input.includeTags, descriptionDetail: input.descriptionDetail }) : { videos: [] };
106
+ return { channelId: input.channelId, videos: details.videos };
107
+ }
108
+ async getVideoComments(input) {
109
+ const data = await this.get('commentThreads', { part: input.maxReplies > 0 ? 'snippet,replies' : 'snippet', videoId: input.videoId, maxResults: input.maxResults, order: input.order });
110
+ return { videoId: input.videoId, comments: (data.items ?? []).map((item) => ({
111
+ commentId: item.id,
112
+ text: item.snippet?.topLevelComment?.snippet?.textDisplay,
113
+ likeCount: item.snippet?.topLevelComment?.snippet?.likeCount,
114
+ publishedAt: item.snippet?.topLevelComment?.snippet?.publishedAt,
115
+ replyCount: item.snippet?.totalReplyCount,
116
+ replies: input.maxReplies > 0 ? (item.replies?.comments ?? []).slice(0, input.maxReplies).map((reply) => ({ commentId: reply.id, text: reply.snippet?.textDisplay, likeCount: reply.snippet?.likeCount, publishedAt: reply.snippet?.publishedAt })) : undefined
117
+ })) };
118
+ }
12
119
  }
13
120
  //# sourceMappingURL=youtube-data-api.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"youtube-data-api.js","sourceRoot":"","sources":["../../../src/providers/youtube-data-api.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,sBAAsB;IACjC,EAAE,GAAG,kBAAkB,CAAC;IACxB,IAAI,GAAG,2BAA2B,CAAC;IACnC,QAAQ,GAAG,SAAkB,CAAC;IAC9B,YAAY,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,CAAC,CAAC;IAC3F,MAAM,CAAU;IAEjC,YAAY,MAAe,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC;IACtD,YAAY,KAAc,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACxD,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,mCAAmC,CAAC,EAAE,CAAC;IACtM,CAAC;CACF"}
1
+ {"version":3,"file":"youtube-data-api.js","sourceRoot":"","sources":["../../../src/providers/youtube-data-api.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,8 @@ export declare const channelTopVideosSchema: z.ZodObject<{
8
8
  includeTags: z.ZodDefault<z.ZodBoolean>;
9
9
  descriptionDetail: z.ZodDefault<z.ZodEnum<{
10
10
  none: "none";
11
- snippet: "snippet";
12
11
  long: "long";
12
+ snippet: "snippet";
13
13
  }>>;
14
14
  }, z.core.$strip>;
15
15
  export declare const channelPositioningSchema: z.ZodObject<{
@@ -3,8 +3,8 @@ export declare const regionCodeSchema: z.ZodDefault<z.ZodString>;
3
3
  export declare const langCodeSchema: z.ZodDefault<z.ZodString>;
4
4
  export declare const maxResultsSchema: z.ZodDefault<z.ZodNumber>;
5
5
  export declare const detailLevelSchema: z.ZodDefault<z.ZodEnum<{
6
- compact: "compact";
7
6
  snippet: "snippet";
7
+ compact: "compact";
8
8
  full: "full";
9
9
  }>>;
10
10
  export declare const videoIdSchema: z.ZodString;
@@ -3,15 +3,15 @@ export declare const searchVideosSchema: z.ZodObject<{
3
3
  query: z.ZodString;
4
4
  maxResults: z.ZodDefault<z.ZodNumber>;
5
5
  order: z.ZodDefault<z.ZodEnum<{
6
+ viewCount: "viewCount";
6
7
  relevance: "relevance";
7
8
  date: "date";
8
- viewCount: "viewCount";
9
9
  }>>;
10
10
  videoDuration: z.ZodDefault<z.ZodEnum<{
11
+ long: "long";
11
12
  any: "any";
12
13
  short: "short";
13
14
  medium: "medium";
14
- long: "long";
15
15
  }>>;
16
16
  recency: z.ZodDefault<z.ZodEnum<{
17
17
  any: "any";
@@ -4,8 +4,8 @@ export declare const videoDetailsSchema: z.ZodObject<{
4
4
  includeTags: z.ZodDefault<z.ZodBoolean>;
5
5
  descriptionDetail: z.ZodDefault<z.ZodEnum<{
6
6
  none: "none";
7
- snippet: "snippet";
8
7
  long: "long";
8
+ snippet: "snippet";
9
9
  }>>;
10
10
  }, z.core.$strip>;
11
11
  export declare const compareVideosSchema: z.ZodObject<{
@@ -1,5 +1,6 @@
1
1
  import { type YoutubeOmniConfig } from './config.js';
2
2
  import { ProviderRegistry } from './core/provider-registry.js';
3
+ import type { YoutubeOmniProvider } from './providers/types.js';
3
4
  export declare const V0_TOOL_NAMES: readonly ["youtube.discovery.search_videos", "youtube.discovery.get_video_categories", "youtube.video.get_details", "youtube.video.compare", "youtube.channel.get_statistics", "youtube.channel.get_top_videos", "youtube.transcript.get_segments", "youtube.transcript.get_full_text", "youtube.transcript.analyze_structure", "youtube.comments.get", "youtube.comments.summarize", "youtube.planning.generate_research_brief", "youtube.research.find_outlier_videos", "youtube.research.compare_hooks", "youtube.research.extract_topic_angles", "youtube.research.summarize_comment_pain_points", "youtube.research.generate_video_angle_matrix", "youtube.safety.classify_action_risk", "youtube.safety.list_capabilities"];
4
5
  export declare const OPERATION_TOOL_NAMES: readonly ["youtube.operations.update_video_metadata", "youtube.operations.schedule_upload", "youtube.operations.update_thumbnail", "youtube.operations.update_playlist", "youtube.operations.moderate_comment", "youtube.operations.create_community_post"];
5
6
  export type V0ToolName = typeof V0_TOOL_NAMES[number];
@@ -14,6 +15,7 @@ type ToolDefinition = {
14
15
  export declare const V0_TOOL_INPUT_SCHEMAS: Record<string, JsonSchema>;
15
16
  export declare function getToolNames(config?: Pick<YoutubeOmniConfig, 'enableWriteTools' | 'dryRunWrites'>): ToolName[];
16
17
  export declare function getToolDefinitions(config?: Pick<YoutubeOmniConfig, 'enableWriteTools' | 'dryRunWrites'>): ToolDefinition[];
17
- export declare function createDefaultRegistry(): ProviderRegistry;
18
+ export declare function createProviders(config?: YoutubeOmniConfig): YoutubeOmniProvider[];
19
+ export declare function createDefaultRegistry(config?: YoutubeOmniConfig): ProviderRegistry;
18
20
  export declare function createToolHandlers(registry?: ProviderRegistry, config?: Pick<YoutubeOmniConfig, 'enableWriteTools' | 'dryRunWrites'>): Record<string, (input: unknown) => Promise<any>>;
19
21
  export {};
@@ -1,6 +1,9 @@
1
1
  import { loadConfig } from './config.js';
2
2
  import { ProviderRegistry } from './core/provider-registry.js';
3
3
  import { MockYoutubeProvider } from './providers/mock-provider.js';
4
+ import { YoutubeDataApiProvider } from './providers/youtube-data-api.js';
5
+ import { MongoCacheProvider, MongoCacheStore } from './providers/mongo-cache-provider.js';
6
+ import { TranscriptProvider } from './providers/transcript-provider.js';
4
7
  import { searchVideos, getVideoCategories } from './tools/discovery.js';
5
8
  import { getVideoDetails, compareVideos } from './tools/video.js';
6
9
  import { getChannelStatistics, getChannelTopVideos } from './tools/channel.js';
@@ -217,8 +220,17 @@ export function getToolDefinitions(config = loadConfig()) {
217
220
  inputSchema: V0_TOOL_INPUT_SCHEMAS[name]
218
221
  }));
219
222
  }
220
- export function createDefaultRegistry() {
221
- return new ProviderRegistry([new MockYoutubeProvider()]);
223
+ export function createProviders(config = loadConfig()) {
224
+ if (!config.youtubeApiKey)
225
+ return [new MockYoutubeProvider()];
226
+ let liveProvider = new YoutubeDataApiProvider(config.youtubeApiKey);
227
+ if (config.enableOutlier && config.mongoUri) {
228
+ liveProvider = new MongoCacheProvider(liveProvider, new MongoCacheStore(config.mongoUri), config.cacheTtlSeconds);
229
+ }
230
+ return [liveProvider, new TranscriptProvider()];
231
+ }
232
+ export function createDefaultRegistry(config = loadConfig()) {
233
+ return new ProviderRegistry(createProviders(config));
222
234
  }
223
235
  export function createToolHandlers(registry = createDefaultRegistry(), config = loadConfig()) {
224
236
  const handlers = {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/server.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,6 @@ export async function classifyActionRiskTool(input) {
5
5
  return makeEnvelope({ tool: 'youtube.safety.classify_action_risk', provider: 'core', authTier: 'none', data: risk, warnings: risk.allowedInV0 ? [] : ['This action is part of the full scope but locked in v0.'] });
6
6
  }
7
7
  export async function listCapabilities(_input) {
8
- return makeEnvelope({ tool: 'youtube.safety.list_capabilities', provider: 'core', authTier: 'none', data: { version: '0.2.0', phase: 'v0.2-research-plus-governed-write-foundation', enabledNamespaces: ['discovery', 'video', 'channel', 'transcript', 'comments', 'planning', 'research', 'safety'], lockedNamespaces: ['operations', 'community-write', 'analytics-oauth', 'reporting', 'media-download', 'shorts-render', 'music-private'] }, warnings: [] });
8
+ return makeEnvelope({ tool: 'youtube.safety.list_capabilities', provider: 'core', authTier: 'none', data: { version: '0.2.2', phase: 'v0.2.2-dedicated-mongo-naming', enabledNamespaces: ['discovery', 'video', 'channel', 'transcript', 'comments', 'planning', 'research', 'safety'], lockedNamespaces: ['operations', 'community-write', 'analytics-oauth', 'reporting', 'media-download', 'shorts-render', 'music-private'] }, warnings: [] });
9
9
  }
10
10
  //# sourceMappingURL=safety.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../src/tools/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAA2D;IACtG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,EAAE,CAAC,CAAC;AACtN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAA6B;IAClE,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,8CAA8C,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACpc,CAAC"}
1
+ {"version":3,"file":"safety.js","sourceRoot":"","sources":["../../../src/tools/safety.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,KAA2D;IACtG,MAAM,IAAI,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,qCAAqC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,yDAAyD,CAAC,EAAE,CAAC,CAAC;AACtN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAA6B;IAClE,OAAO,YAAY,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC,YAAY,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AACrb,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liorium/youtube-omni-mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "YouTube Creator Intelligence, Analytics, Operations, and Production MCP server.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",
@@ -41,6 +41,7 @@
41
41
  ],
42
42
  "dependencies": {
43
43
  "@modelcontextprotocol/sdk": "latest",
44
+ "mongodb": "latest",
44
45
  "zod": "latest"
45
46
  },
46
47
  "devDependencies": {