video-context-mcp-server 0.49.3-beta → 0.50.1-beta

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
@@ -25,7 +25,7 @@ An MCP server that gives coding assistants (GitHub Copilot, Cursor, Claude Code)
25
25
 
26
26
  ### Prerequisites
27
27
 
28
- - **Node.js 18+**
28
+ - **Node.js 20+**
29
29
  - A supported MCP client (VS Code + GitHub Copilot Chat, Cursor, or Claude Code)
30
30
  - At least one API key — see [API Keys](#api-keys) below
31
31
 
@@ -298,24 +298,24 @@ When an audio key is missing or an audio API call fails at runtime, tools automa
298
298
 
299
299
  | Feature | GLM-4.6V (default) | Gemini 3 Flash Preview | Qwen3.5 | Kimi K2.5 | MiMo-V2 Omni |
300
300
  | -------------- | ------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------ |
301
- | Price | Free tier available (GLM-4.6V-Flash) | Free tier available | Free credits (1M tokens, 90 days) | $0.60 input / $3.00 output per 1M tokens | Free launch promo |
301
+ | Price | Free tier available (GLM-4.6V-Flash) | Free tier available | Free credits (1M tokens, 90 days) | $0.60 input / $3.00 output per 1M tokens | $0.40 input / $2.00 output per 1M tokens |
302
302
  | Video formats | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, mov, avi, wmv |
303
303
  | Context window | 128K tokens | 1M tokens | 1M tokens | 256K tokens | 256K tokens |
304
304
  | Max file size | ~12 MB base64 / frames fallback / **unlimited w/ S3↓** | 2 GB | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** | 100 MB | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** |
305
- | Best for | **Default** — free, no card required | Free fallback, no card (less accurate) | Free credits (card required) | Paid — broadest format support | Free launch promo; thinking mode |
305
+ | Best for | **Default** — free, no card required | Free fallback, no card (less accurate) | Free credits (card required) | Paid — broadest format support | Paid thinking mode; multimodal |
306
306
 
307
- **GLM-4.6V** is the default — it offers a free tier with no credit card required. **Gemini** is the second fallback — also free with no card required, though it has proven less accurate for video analysis in practice. **Qwen3.5** offers free credits (1M tokens for 90 days) but requires a credit card to sign up. **Kimi K2.5** is a paid provider with the broadest video format support. **MiMo-V2 Omni** is Xiaomi's multimodal model with thinking mode support and a free launch promotion.
307
+ **GLM-4.6V** is the default — it offers a free tier with no credit card required. **Gemini** is the second fallback — also free with no card required, though it has proven less accurate for video analysis in practice. **Qwen3.5** offers free credits (1M tokens for 90 days) but requires a credit card to sign up. **Kimi K2.5** is a paid provider with the broadest video format support. **MiMo-V2 Omni** is Xiaomi's multimodal model with thinking mode support ($0.40 input / $2.00 output per 1M tokens).
308
308
 
309
309
  Set `VIDEO_MCP_DEFAULT_PROVIDER=gemini`, `qwen`, `kimi`, or `mimo` to change the default.
310
310
 
311
- > **ℹ️ Large local files with GLM or Qwen:** Both providers have a 10–12 MB base64 limit for local files. When a file exceeds this limit, the server first tries to fall back to an upload-capable provider (Gemini or Kimi) if one is available in the fallback chain. Frame-based analysis (evenly-spaced keyframes sent as images) is used only as a **last resort** when no upload-capable provider is available, or when all upload-capable providers fail at runtime — no configuration needed. For the highest quality with large local videos, set up the optional **S3 relay** (below) — GLM and Qwen will receive a presigned URL to the full video, bypassing the limit entirely and taking priority over both fallbacks.
311
+ > **ℹ️ Large local files with GLM, Qwen, or MiMo:** All three providers have a 10–12 MB base64 limit for local files. When a file exceeds this limit, the server first tries to fall back to an upload-capable provider (Gemini or Kimi) if one is available in the fallback chain. Frame-based analysis (evenly-spaced keyframes sent as images) is used only as a **last resort** when no upload-capable provider is available, or when all upload-capable providers fail at runtime — no configuration needed. For the highest quality with large local videos, set up the optional **S3 relay** (below) — GLM, Qwen, and MiMo will receive a presigned URL to the full video, bypassing the limit entirely and taking priority over both fallbacks.
312
312
 
313
313
  <details open>
314
- <summary><strong>Automatic S3 relay: bypass the 10 MB local file limit with Qwen and GLM</strong></summary>
314
+ <summary><strong>Automatic S3 relay: bypass the 10 MB local file limit with GLM, Qwen, and MiMo</strong></summary>
315
315
 
316
- **GLM-4.6V** and **Qwen3.5** both accept direct video URLs, but base64-encoding a local file caps out at **10–12 MB**. Above that limit, the server first tries to fall back to an upload-capable provider (Gemini or Kimi) if one is available, then falls back to **frame-based analysis** as a last resort. For the best results on large local videos, set `AWS_S3_BUCKET` — the server uploads the full video to S3 and passes a presigned URL to GLM/Qwen, bypassing the base64 limit entirely and taking priority over both fallbacks. No manual upload step needed.
316
+ **GLM-4.6V**, **Qwen3.5**, and **MiMo-V2 Omni** all accept direct video URLs, but base64-encoding a local file caps out at **10–12 MB**. Above that limit, the server first tries to fall back to an upload-capable provider (Gemini or Kimi) if one is available, then falls back to **frame-based analysis** as a last resort. For the best results on large local videos, set `AWS_S3_BUCKET` — the server uploads the full video to S3 and passes a presigned URL to GLM, Qwen, and MiMo, bypassing the base64 limit entirely and taking priority over both fallbacks. No manual upload step needed.
317
317
 
318
- **Why it works**: Qwen and GLM require the server to serve `Content-Length` and `Content-Type` headers alongside the video. AWS S3 provides these automatically.
318
+ **Why it works**: GLM, Qwen, and MiMo require the server to serve `Content-Length` and `Content-Type` headers alongside the video. AWS S3 provides these automatically.
319
319
 
320
320
  **One-time setup**
321
321
 
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.49.3-beta";
1
+ export declare const VERSION = "0.50.1-beta";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by scripts/sync-version.ts — do not edit
2
- export const VERSION = '0.49.3-beta';
2
+ export const VERSION = '0.50.1-beta';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"deepgramClient.d.ts","sourceRoot":"","sources":["../../../src/services/audio/deepgramClient.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,2BAA2B,CAAA;AASlC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAqMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAI1B;;;;OAIG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC;CAuB3B"}
1
+ {"version":3,"file":"deepgramClient.d.ts","sourceRoot":"","sources":["../../../src/services/audio/deepgramClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,2BAA2B,CAAA;AASlC,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAqMD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAQ;gBAEV,MAAM,EAAE,MAAM;IAI1B;;;;OAIG;IACG,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,yBAA8B,GACtC,OAAO,CAAC,cAAc,CAAC;CAkB3B"}
@@ -1,5 +1,4 @@
1
- import { createClient } from '@deepgram/sdk';
2
- import * as fs from 'fs/promises';
1
+ import { DeepgramClient as DGClient } from '@deepgram/sdk';
3
2
  /**
4
3
  * Deepgram Audio Client
5
4
  * Transcribes audio files using Deepgram's Nova-2 model
@@ -103,12 +102,8 @@ export class DeepgramClient {
103
102
  * @param options - Transcription options
104
103
  */
105
104
  async transcribe(audioPath, options = {}) {
106
- const client = createClient(this.apiKey);
107
- const audioBuffer = await fs.readFile(audioPath);
108
- const { result, error } = await client.listen.prerecorded.transcribeFile(audioBuffer, buildDeepgramRequest(options));
109
- if (error) {
110
- throw new Error(`Deepgram transcription error: ${error.message}`);
111
- }
105
+ const client = new DGClient({ apiKey: this.apiKey });
106
+ const result = (await client.listen.v1.media.transcribeFile({ path: audioPath }, buildDeepgramRequest(options)));
112
107
  const { paragraphs, text } = buildTranscript(result, options);
113
108
  return {
114
109
  text,
@@ -1 +1 @@
1
- {"version":3,"file":"deepgramClient.js","sourceRoot":"","sources":["../../../src/services/audio/deepgramClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"deepgramClient.js","sourceRoot":"","sources":["../../../src/services/audio/deepgramClient.ts"],"names":[],"mappings":"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"}
@@ -4,101 +4,87 @@
4
4
  * file (for deriving typed params via z.infer<>).
5
5
  */
6
6
  import { z } from 'zod';
7
- export declare const videoProviderEnum: z.ZodEnum<["glm", "kimi", "gemini", "qwen", "mimo"]>;
8
- export declare const audioProviderEnum: z.ZodEnum<["deepgram", "assemblyai", "groq", "gemini"]>;
7
+ export declare const videoProviderEnum: z.ZodEnum<{
8
+ glm: "glm";
9
+ kimi: "kimi";
10
+ gemini: "gemini";
11
+ qwen: "qwen";
12
+ mimo: "mimo";
13
+ }>;
14
+ export declare const audioProviderEnum: z.ZodEnum<{
15
+ gemini: "gemini";
16
+ deepgram: "deepgram";
17
+ assemblyai: "assemblyai";
18
+ groq: "groq";
19
+ }>;
9
20
  export declare const analyzeVideoSchema: z.ZodObject<{
10
21
  videoPath: z.ZodString;
11
22
  question: z.ZodString;
12
- provider: z.ZodOptional<z.ZodEnum<["glm", "kimi", "gemini", "qwen", "mimo"]>>;
13
- }, "strip", z.ZodTypeAny, {
14
- videoPath: string;
15
- question: string;
16
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
17
- }, {
18
- videoPath: string;
19
- question: string;
20
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
21
- }>;
23
+ provider: z.ZodOptional<z.ZodEnum<{
24
+ glm: "glm";
25
+ kimi: "kimi";
26
+ gemini: "gemini";
27
+ qwen: "qwen";
28
+ mimo: "mimo";
29
+ }>>;
30
+ }, z.core.$strip>;
22
31
  export declare const summarizeVideoSchema: z.ZodObject<{
23
32
  videoPath: z.ZodString;
24
- provider: z.ZodOptional<z.ZodEnum<["glm", "kimi", "gemini", "qwen", "mimo"]>>;
25
- }, "strip", z.ZodTypeAny, {
26
- videoPath: string;
27
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
28
- }, {
29
- videoPath: string;
30
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
31
- }>;
33
+ provider: z.ZodOptional<z.ZodEnum<{
34
+ glm: "glm";
35
+ kimi: "kimi";
36
+ gemini: "gemini";
37
+ qwen: "qwen";
38
+ mimo: "mimo";
39
+ }>>;
40
+ }, z.core.$strip>;
32
41
  export declare const extractFramesSchema: z.ZodObject<{
33
42
  videoPath: z.ZodString;
34
- mode: z.ZodEnum<["even", "interval", "timestamps", "scene"]>;
43
+ mode: z.ZodEnum<{
44
+ even: "even";
45
+ interval: "interval";
46
+ timestamps: "timestamps";
47
+ scene: "scene";
48
+ }>;
35
49
  count: z.ZodOptional<z.ZodNumber>;
36
50
  intervalSec: z.ZodOptional<z.ZodNumber>;
37
- timestamps: z.ZodOptional<z.ZodArray<z.ZodNumber, "many">>;
51
+ timestamps: z.ZodOptional<z.ZodArray<z.ZodNumber>>;
38
52
  maxImages: z.ZodOptional<z.ZodNumber>;
39
53
  offset: z.ZodOptional<z.ZodNumber>;
40
54
  sceneThreshold: z.ZodOptional<z.ZodNumber>;
41
- }, "strip", z.ZodTypeAny, {
42
- videoPath: string;
43
- mode: "even" | "interval" | "timestamps" | "scene";
44
- timestamps?: number[] | undefined;
45
- count?: number | undefined;
46
- intervalSec?: number | undefined;
47
- maxImages?: number | undefined;
48
- offset?: number | undefined;
49
- sceneThreshold?: number | undefined;
50
- }, {
51
- videoPath: string;
52
- mode: "even" | "interval" | "timestamps" | "scene";
53
- timestamps?: number[] | undefined;
54
- count?: number | undefined;
55
- intervalSec?: number | undefined;
56
- maxImages?: number | undefined;
57
- offset?: number | undefined;
58
- sceneThreshold?: number | undefined;
59
- }>;
55
+ }, z.core.$strip>;
60
56
  export declare const searchTimestampSchema: z.ZodObject<{
61
57
  videoPath: z.ZodString;
62
58
  query: z.ZodString;
63
- provider: z.ZodOptional<z.ZodEnum<["glm", "kimi", "gemini", "qwen", "mimo"]>>;
64
- }, "strip", z.ZodTypeAny, {
65
- videoPath: string;
66
- query: string;
67
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
68
- }, {
69
- videoPath: string;
70
- query: string;
71
- provider?: "glm" | "kimi" | "gemini" | "qwen" | "mimo" | undefined;
72
- }>;
59
+ provider: z.ZodOptional<z.ZodEnum<{
60
+ glm: "glm";
61
+ kimi: "kimi";
62
+ gemini: "gemini";
63
+ qwen: "qwen";
64
+ mimo: "mimo";
65
+ }>>;
66
+ }, z.core.$strip>;
73
67
  export declare const getVideoInfoSchema: z.ZodObject<{
74
68
  videoPath: z.ZodString;
75
- }, "strip", z.ZodTypeAny, {
76
- videoPath: string;
77
- }, {
78
- videoPath: string;
79
- }>;
69
+ }, z.core.$strip>;
80
70
  export declare const transcribeVideoSchema: z.ZodObject<{
81
71
  videoPath: z.ZodString;
82
- provider: z.ZodOptional<z.ZodEnum<["deepgram", "assemblyai", "groq", "gemini"]>>;
72
+ provider: z.ZodOptional<z.ZodEnum<{
73
+ gemini: "gemini";
74
+ deepgram: "deepgram";
75
+ assemblyai: "assemblyai";
76
+ groq: "groq";
77
+ }>>;
83
78
  language: z.ZodOptional<z.ZodString>;
84
79
  diarize: z.ZodOptional<z.ZodBoolean>;
85
80
  translate: z.ZodOptional<z.ZodBoolean>;
86
- outputFormat: z.ZodOptional<z.ZodEnum<["text", "srt", "vtt", "json"]>>;
87
- }, "strip", z.ZodTypeAny, {
88
- videoPath: string;
89
- language?: string | undefined;
90
- diarize?: boolean | undefined;
91
- provider?: "gemini" | "deepgram" | "assemblyai" | "groq" | undefined;
92
- translate?: boolean | undefined;
93
- outputFormat?: "text" | "json" | "srt" | "vtt" | undefined;
94
- }, {
95
- videoPath: string;
96
- language?: string | undefined;
97
- diarize?: boolean | undefined;
98
- provider?: "gemini" | "deepgram" | "assemblyai" | "groq" | undefined;
99
- translate?: boolean | undefined;
100
- outputFormat?: "text" | "json" | "srt" | "vtt" | undefined;
101
- }>;
81
+ outputFormat: z.ZodOptional<z.ZodEnum<{
82
+ text: "text";
83
+ json: "json";
84
+ srt: "srt";
85
+ vtt: "vtt";
86
+ }>>;
87
+ }, z.core.$strip>;
102
88
  export type AnalyzeVideoParams = z.infer<typeof analyzeVideoSchema>;
103
89
  export type SummarizeVideoParams = z.infer<typeof summarizeVideoSchema>;
104
90
  export type ExtractFramesParams = z.infer<typeof extractFramesSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,iBAAiB,sDAM5B,CAAA;AACF,eAAO,MAAM,iBAAiB,yDAK5B,CAAA;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAQ7B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;EAO/B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwD9B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;EAgBhC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;EAmChC,CAAA;AAIF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACzE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACzE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA"}
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/tools/schemas.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAA;AACF,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAA;AAIF,eAAO,MAAM,kBAAkB;;;;;;;;;;iBAQ7B,CAAA;AAEF,eAAO,MAAM,oBAAoB;;;;;;;;;iBAO/B,CAAA;AAEF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;iBAwD9B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;iBAgBhC,CAAA;AAEF,eAAO,MAAM,kBAAkB;;iBAM7B,CAAA;AAEF,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;iBAmChC,CAAA;AAIF,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAA;AACrE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACzE,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AACnE,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AACzE,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "video-context-mcp-server",
3
- "version": "0.49.3-beta",
3
+ "version": "0.50.1-beta",
4
4
  "description": "A Model Context Protocol server that gives GitHub Copilot the ability to understand and analyze video content",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -39,17 +39,17 @@
39
39
  "dependencies": {
40
40
  "@aws-sdk/client-s3": "^3.1009.0",
41
41
  "@aws-sdk/s3-request-presigner": "^3.1009.0",
42
- "@deepgram/sdk": "^4.11.3",
42
+ "@deepgram/sdk": "^5.0.0",
43
43
  "@ffmpeg-installer/ffmpeg": "^1.1.0",
44
44
  "@ffprobe-installer/ffprobe": "^2.1.0",
45
45
  "@google/genai": "^1.42.0",
46
46
  "@modelcontextprotocol/sdk": "^1.26.0",
47
47
  "assemblyai": "^4.23.1",
48
48
  "fluent-ffmpeg": "^2.1.3",
49
- "openai": "^4.0.0",
49
+ "openai": "^6.32.0",
50
50
  "p-limit": "^7.3.0",
51
51
  "youtube-dl-exec": "^3.1.3",
52
- "zod": "^3.25.0"
52
+ "zod": "^4.3.6"
53
53
  },
54
54
  "devDependencies": {
55
55
  "@eslint/js": "^10.0.1",
@@ -67,7 +67,7 @@
67
67
  "vitest": "^4.0.18"
68
68
  },
69
69
  "engines": {
70
- "node": ">=18.0.0"
70
+ "node": ">=20.0.0"
71
71
  },
72
72
  "overrides": {
73
73
  "minimatch": ">=10.2.1"