video-context-mcp-server 0.20.1-beta → 0.22.0-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 +306 -332
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/tools/analyzeVideo.d.ts.map +1 -1
- package/dist/tools/analyzeVideo.js +1 -6
- package/dist/tools/analyzeVideo.js.map +1 -1
- package/dist/tools/summarizeVideo.d.ts.map +1 -1
- package/dist/tools/summarizeVideo.js +1 -4
- package/dist/tools/summarizeVideo.js.map +1 -1
- package/dist/utils/audioUtils.d.ts +0 -3
- package/dist/utils/audioUtils.d.ts.map +1 -1
- package/dist/utils/audioUtils.js +0 -6
- package/dist/utils/audioUtils.js.map +1 -1
- package/dist/utils/downloadCache.d.ts.map +1 -1
- package/dist/utils/downloadCache.js +11 -6
- package/dist/utils/downloadCache.js.map +1 -1
- package/dist/utils/videoUtils.d.ts.map +1 -1
- package/dist/utils/videoUtils.js +11 -3
- package/dist/utils/videoUtils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
# Video Context MCP Server
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
An MCP server that gives coding assistants (GitHub Copilot, Cursor, Claude Code) the ability to understand and analyze video content.
|
|
4
|
+
|
|
5
|
+
**[Watch the demo](https://www.youtube.com/watch?v=vv4ojD5_67M)**
|
|
4
6
|
|
|
5
7
|
## Features
|
|
6
8
|
|
|
@@ -9,98 +11,43 @@ Video Context MCP Server is a Model Context Protocol (MCP) server that gives MCP
|
|
|
9
11
|
- 🖼️ **Frame Extraction** — Extract frames at specific timestamps or intervals
|
|
10
12
|
- 🔍 **Timestamp Search** — Find the exact moment when something happens in a video
|
|
11
13
|
- 📊 **Video Metadata** — Get duration, resolution, fps, codec, and other technical details
|
|
12
|
-
- 🎙️ **Audio Transcription** — Transcribe speech
|
|
14
|
+
- 🎙️ **Audio Transcription** — Transcribe speech using Deepgram, AssemblyAI, Groq/Whisper, or Gemini
|
|
13
15
|
- 🔊 **Speaker Diarization** — Identify who said what (Deepgram and AssemblyAI)
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
**[Check demo here](https://www.youtube.com/watch?v=vv4ojD5_67M)**
|
|
16
|
+
- 🔊 **Audio-Enhanced Analysis** — Auto-transcribes audio and injects transcripts into AI prompts for richer results (GLM/Kimi only)
|
|
17
|
+
- 🔄 **Multi-Backend Support** — Choose between GLM-4.6V (free), Kimi K2.5, or Gemini
|
|
18
|
+
- 🎯 **Smart Video Handling** — Extracts keyframes from long videos to reduce token usage
|
|
19
|
+
- ⭐ **Pro tier** — Extended frame extraction, multi-platform downloads, higher resolution. [Learn more ↓](#pro)
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
---
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
## Quick Start
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | --------------------------------- |
|
|
26
|
-
| **🔊 Audio-enhanced analysis** — Auto-transcribes a video's audio track and injects the transcript into AI prompts, giving `analyze_video` and `summarize_video` richer, more accurate results. Controlled by `AUDIO_ENHANCE_VIDEO_ANALYSIS`.<br />**Note**: The `transcribe_video` tool itself is available to all users — this feature specifically enhances the _analysis_ tools by injecting the transcript automatically. | Disabled | ✅ Enabled |
|
|
27
|
-
| **🖼️ Extended frame extraction** — Raise the keyframe cap used by `summarize_video` for long or complex videos beyond the free-tier limit. Controlled by `VIDEO_MCP_MAX_FRAMES`. | Capped at 50 | Default 100; set `0` for uncapped |
|
|
28
|
-
| **🌐 Platform video downloads** — Analyze videos directly from YouTube, Vimeo, TikTok, and hundreds of other yt-dlp-supported platforms without downloading manually.<br />**Note**: Local files and direct `http(s)://` video file URLs (e.g., `https://example.com/video.mp4`) work for all users — no license needed. This gate only applies to platform URLs handled by yt-dlp (e.g., YouTube, Vimeo, TikTok links). | YouTube only | All platforms |
|
|
29
|
-
| **📺 Extended download resolution** — Raise the yt-dlp download resolution cap beyond 720p for higher-quality platform video downloads. Controlled by `YT_DLP_MAX_RESOLUTION`. | Capped at 720p | Uncapped |
|
|
25
|
+
### Prerequisites
|
|
30
26
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
27
|
+
- **Node.js 18+**
|
|
28
|
+
- A supported MCP client (VS Code + GitHub Copilot Chat, Cursor, or Claude Code)
|
|
29
|
+
- At least one API key — see [API Keys](#api-keys) below
|
|
34
30
|
|
|
35
|
-
|
|
31
|
+
### Install
|
|
36
32
|
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
**Step 1.** Add `VIDEO_MCP_LICENSE_KEY` to the `env` block in your MCP config:
|
|
40
|
-
|
|
41
|
-
```json
|
|
42
|
-
{
|
|
43
|
-
"env": {
|
|
44
|
-
"VIDEO_MCP_LICENSE_KEY": "<your-license-key>"
|
|
45
|
-
}
|
|
46
|
-
}
|
|
33
|
+
```bash
|
|
34
|
+
npm install -g video-context-mcp-server
|
|
47
35
|
```
|
|
48
36
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
> That's all — no registration, no internet check, no extra setup.
|
|
52
|
-
|
|
53
|
-
## Installation
|
|
54
|
-
|
|
55
|
-
### Quick Start (Recommended for ordinary users)
|
|
56
|
-
|
|
57
|
-
#### 1. Prerequisites
|
|
58
|
-
|
|
59
|
-
- Node.js 18+
|
|
60
|
-
- A supported MCP client: VS Code with GitHub Copilot Chat, Cursor, or Claude Code
|
|
61
|
-
|
|
62
|
-
#### 2. Get API keys
|
|
63
|
-
|
|
64
|
-
You'll need API keys for one or more **video** backends:
|
|
65
|
-
|
|
66
|
-
- **GLM-4.6V (Z.AI)**: [Get API Key](https://z.ai/manage-apikey/apikey-list)
|
|
67
|
-
- **Kimi K2.5 (Moonshot AI)**: [Get API Key](https://platform.moonshot.ai)
|
|
68
|
-
- **Gemini 3 Flash Preview (Google)**: [Get API Key](https://aistudio.google.com/app/apikey)
|
|
69
|
-
|
|
70
|
-
For **audio transcription** (`transcribe_video`), you'll also need at least one audio provider key:
|
|
71
|
-
|
|
72
|
-
- **Deepgram** (default): [Get API Key](https://console.deepgram.com/)
|
|
73
|
-
- **AssemblyAI**: [Get API Key](https://www.assemblyai.com/dashboard)
|
|
74
|
-
- **Groq** (free Whisper): [Get API Key](https://console.groq.com/)
|
|
75
|
-
- **Gemini** (reuse `GEMINI_API_KEY` above — no extra key needed)
|
|
76
|
-
|
|
77
|
-
#### 3. Install the MCP server
|
|
37
|
+
### Updating & version check
|
|
78
38
|
|
|
79
39
|
```bash
|
|
80
|
-
npm
|
|
40
|
+
npm ls -g --depth=0 video-context-mcp-server # installed version
|
|
41
|
+
npm outdated -g video-context-mcp-server # check for updates
|
|
42
|
+
npm install -g video-context-mcp-server@latest # update
|
|
81
43
|
```
|
|
82
44
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
> **Tip:** To check your installed version and whether an update is available:
|
|
86
|
-
>
|
|
87
|
-
> ```bash
|
|
88
|
-
> # Check installed version
|
|
89
|
-
> npm ls -g --depth=0 video-context-mcp-server
|
|
90
|
-
>
|
|
91
|
-
> # Check if outdated
|
|
92
|
-
> npm outdated -g video-context-mcp-server
|
|
93
|
-
> ```
|
|
94
|
-
>
|
|
95
|
-
> To update to the latest version, re-run:
|
|
96
|
-
>
|
|
97
|
-
> ```bash
|
|
98
|
-
> npm install -g video-context-mcp-server@latest
|
|
99
|
-
> ```
|
|
45
|
+
### Configure Your MCP Client
|
|
100
46
|
|
|
101
|
-
|
|
47
|
+
<details open>
|
|
48
|
+
<summary><strong>VS Code</strong></summary>
|
|
102
49
|
|
|
103
|
-
Create
|
|
50
|
+
Create or update `.vscode/mcp.json` in your workspace:
|
|
104
51
|
|
|
105
52
|
```json
|
|
106
53
|
{
|
|
@@ -121,11 +68,14 @@ Create (or update) `.vscode/mcp.json` in your project/workspace:
|
|
|
121
68
|
}
|
|
122
69
|
```
|
|
123
70
|
|
|
124
|
-
Open Copilot Chat
|
|
71
|
+
Open Copilot Chat — the MCP server starts automatically when tools are needed.
|
|
125
72
|
|
|
126
|
-
|
|
73
|
+
</details>
|
|
127
74
|
|
|
128
|
-
|
|
75
|
+
<details>
|
|
76
|
+
<summary><strong>Cursor</strong></summary>
|
|
77
|
+
|
|
78
|
+
Add to your Cursor MCP configuration (global or project-level):
|
|
129
79
|
|
|
130
80
|
```json
|
|
131
81
|
{
|
|
@@ -145,15 +95,10 @@ Add this server to your Cursor MCP configuration (global or project-level):
|
|
|
145
95
|
}
|
|
146
96
|
```
|
|
147
97
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- Run `npm install -g video-context-mcp-server` first if you haven't already.
|
|
151
|
-
- If you prefer not to install globally, use `npx -y video-context-mcp-server@latest` as the command (slower startup due to registry check).
|
|
152
|
-
- Set one or both API keys depending on which provider you use.
|
|
98
|
+
</details>
|
|
153
99
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
Use the Claude CLI to register the MCP server:
|
|
100
|
+
<details>
|
|
101
|
+
<summary><strong>Claude Code</strong></summary>
|
|
157
102
|
|
|
158
103
|
```bash
|
|
159
104
|
claude mcp add videoMcp video-context-mcp \
|
|
@@ -165,46 +110,16 @@ claude mcp add videoMcp video-context-mcp \
|
|
|
165
110
|
--env GROQ_API_KEY=your-groq-key
|
|
166
111
|
```
|
|
167
112
|
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
```bash
|
|
171
|
-
claude mcp list
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
If you prefer not to install globally, register via `npx` instead (slower startup due to registry check):
|
|
175
|
-
|
|
176
|
-
```bash
|
|
177
|
-
claude mcp add videoMcp npx -y video-context-mcp-server@latest \
|
|
178
|
-
--env Z_AI_API_KEY=your-zai-key \
|
|
179
|
-
--env MOONSHOT_API_KEY=your-moonshot-key \
|
|
180
|
-
--env GEMINI_API_KEY=your-gemini-key \
|
|
181
|
-
--env DEEPGRAM_API_KEY=your-deepgram-key \
|
|
182
|
-
--env ASSEMBLYAI_API_KEY=your-assemblyai-key \
|
|
183
|
-
--env GROQ_API_KEY=your-groq-key
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Troubleshooting Setup
|
|
187
|
-
|
|
188
|
-
- **`video-context-mcp: command not found`**
|
|
189
|
-
- Make sure Node.js is installed and available in your shell (`node -v`, `npm -v`).
|
|
190
|
-
- If installed globally, re-run: `npm install -g video-context-mcp-server`.
|
|
191
|
-
- If global binaries are not on PATH, use `npx -y video-context-mcp-server@latest` instead of `video-context-mcp`.
|
|
113
|
+
Verify with `claude mcp list`.
|
|
192
114
|
|
|
193
|
-
|
|
194
|
-
- Restart the client app after changing MCP configuration.
|
|
195
|
-
- Validate JSON syntax in your MCP config file.
|
|
196
|
-
- For Claude Code, verify registration with `claude mcp list`.
|
|
115
|
+
</details>
|
|
197
116
|
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
- For audio transcription, set `DEEPGRAM_API_KEY` (default), `ASSEMBLYAI_API_KEY`, `GROQ_API_KEY` (free tier), or reuse `GEMINI_API_KEY`. At least one audio key is needed to use `transcribe_video`.
|
|
201
|
-
- You can set only the keys for the providers you intend to use.
|
|
202
|
-
- For local files, if `provider=glm` is requested but `Z_AI_API_KEY` is missing, the server automatically falls back to Kimi (and then Gemini) when those keys are available.
|
|
203
|
-
- For remote `http(s)` video URLs, all three AI providers (`glm`, `kimi`, `gemini`) are supported. All tools automatically download remote videos to a temporary file before processing.
|
|
117
|
+
<details>
|
|
118
|
+
<summary><strong>Run via npx (no global install)</strong></summary>
|
|
204
119
|
|
|
205
|
-
|
|
120
|
+
Use `npx -y video-context-mcp-server@latest` as the command instead of `video-context-mcp`. This adds a startup delay (npm registry check) but self-updates automatically.
|
|
206
121
|
|
|
207
|
-
|
|
122
|
+
**VS Code example:**
|
|
208
123
|
|
|
209
124
|
```json
|
|
210
125
|
{
|
|
@@ -226,83 +141,27 @@ If you prefer not to install globally, you can use `npx` instead. Note this adds
|
|
|
226
141
|
}
|
|
227
142
|
```
|
|
228
143
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
### For contributors: install from source
|
|
232
|
-
|
|
233
|
-
Clone this repository, then:
|
|
144
|
+
**Claude Code:**
|
|
234
145
|
|
|
235
146
|
```bash
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
{
|
|
244
|
-
"servers": {
|
|
245
|
-
"videoMcp": {
|
|
246
|
-
"type": "stdio",
|
|
247
|
-
"command": "node",
|
|
248
|
-
"args": ["${workspaceFolder}/dist/index.js"],
|
|
249
|
-
"env": {
|
|
250
|
-
"Z_AI_API_KEY": "your-zai-key",
|
|
251
|
-
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
252
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
253
|
-
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
254
|
-
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
255
|
-
"GROQ_API_KEY": "your-groq-key"
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
|
-
}
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Debugging Behavior in VS Code
|
|
263
|
-
|
|
264
|
-
When your `.vscode/mcp.json` includes a `dev` block such as:
|
|
265
|
-
|
|
266
|
-
```jsonc
|
|
267
|
-
{
|
|
268
|
-
"servers": {
|
|
269
|
-
"videoMcp": {
|
|
270
|
-
"type": "stdio",
|
|
271
|
-
"command": "node",
|
|
272
|
-
"args": ["${workspaceFolder}/dist/index.js"],
|
|
273
|
-
"env": {
|
|
274
|
-
"Z_AI_API_KEY": "your-zai-key",
|
|
275
|
-
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
276
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
277
|
-
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
278
|
-
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
279
|
-
"GROQ_API_KEY": "your-groq-key",
|
|
280
|
-
},
|
|
281
|
-
"dev": {
|
|
282
|
-
"watch": "src/**/*.ts",
|
|
283
|
-
"debug": { "type": "node" },
|
|
284
|
-
},
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
}
|
|
147
|
+
claude mcp add videoMcp npx -y video-context-mcp-server@latest \
|
|
148
|
+
--env Z_AI_API_KEY=your-zai-key \
|
|
149
|
+
--env MOONSHOT_API_KEY=your-moonshot-key \
|
|
150
|
+
--env GEMINI_API_KEY=your-gemini-key \
|
|
151
|
+
--env DEEPGRAM_API_KEY=your-deepgram-key \
|
|
152
|
+
--env ASSEMBLYAI_API_KEY=your-assemblyai-key \
|
|
153
|
+
--env GROQ_API_KEY=your-groq-key
|
|
288
154
|
```
|
|
289
155
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
This is expected in development mode:
|
|
156
|
+
</details>
|
|
293
157
|
|
|
294
|
-
|
|
295
|
-
- `debug` enables Node debug integration
|
|
296
|
-
- MCP protocol payloads (tool schemas, discovery events, lifecycle messages) are printed in that output channel
|
|
158
|
+
> **Tip:** Set keys for all providers you can access — this maximises the fallback chain. If the default provider is unavailable or rate-limited, the server automatically retries with the next available one. At minimum you need one video key and one audio key, but more is better.
|
|
297
159
|
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
- `dev.debug` (keeps auto-watch, disables debug integration), or
|
|
301
|
-
- the full `dev` block (disables watch + debug behavior)
|
|
160
|
+
---
|
|
302
161
|
|
|
303
162
|
## Available Tools
|
|
304
163
|
|
|
305
|
-
| Tool | Description | Parameters
|
|
164
|
+
| Tool | Description | Key Parameters |
|
|
306
165
|
| ------------------ | ------------------------------------ | --------------------------------------------------------------- |
|
|
307
166
|
| `analyze_video` | Ask questions about video content | `videoPath`, `question`, `provider?` |
|
|
308
167
|
| `summarize_video` | Generate a structured video summary | `videoPath`, `provider?` |
|
|
@@ -311,140 +170,150 @@ If you want less noise, remove either:
|
|
|
311
170
|
| `get_video_info` | Get video metadata | `videoPath` |
|
|
312
171
|
| `transcribe_video` | Transcribe audio/speech from a video | `videoPath`, `provider?`, `language?`, `diarize?`, `translate?` |
|
|
313
172
|
|
|
314
|
-
|
|
173
|
+
All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Remote videos are downloaded automatically.
|
|
315
174
|
|
|
316
|
-
|
|
317
|
-
- For remote `http(s)` URLs with AI-powered video tools (`analyze_video`, `summarize_video`, `search_timestamp`): all three providers (`provider=glm`, `provider=kimi`, `provider=gemini`) are supported. Remote videos are downloaded to a temp file before upload.
|
|
318
|
-
- For `transcribe_video`, all four audio providers (Deepgram, AssemblyAI, Groq, Gemini) support both local files and remote URLs.
|
|
319
|
-
- For local inputs, all tools accept normal filesystem paths or `file://` URIs (automatically normalized).
|
|
175
|
+
### Usage Examples
|
|
320
176
|
|
|
321
|
-
|
|
177
|
+
**Local files**
|
|
322
178
|
|
|
323
|
-
|
|
179
|
+
> "Analyze the video at `./demo.mp4` and tell me what happens in it"
|
|
324
180
|
|
|
325
|
-
|
|
181
|
+
> "Summarize `./long-video.mp4`"
|
|
326
182
|
|
|
327
|
-
> "
|
|
183
|
+
> "Extract 5 evenly-spaced frames from `./recording.mp4`"
|
|
328
184
|
|
|
329
|
-
|
|
185
|
+
> "At what timestamp does the person wave in `./clip.mp4`?"
|
|
330
186
|
|
|
331
|
-
> "
|
|
187
|
+
> "Transcribe `./interview.mp4` with speaker diarization using AssemblyAI"
|
|
332
188
|
|
|
333
|
-
|
|
189
|
+
> "Transcribe this Spanish video and translate it to English: `./video.mp4`"
|
|
334
190
|
|
|
335
|
-
|
|
191
|
+
**Remote video files** (direct URLs — works for all users)
|
|
336
192
|
|
|
337
|
-
> "
|
|
193
|
+
> "Analyze this video: `https://example.com/product-demo.mp4`"
|
|
338
194
|
|
|
339
|
-
|
|
195
|
+
> "Get the metadata for `https://cdn.example.com/sample.webm`"
|
|
340
196
|
|
|
341
|
-
|
|
197
|
+
**Platform videos** (YouTube, Vimeo, TikTok, etc. — requires [Pro](#pro) for non-YouTube)
|
|
342
198
|
|
|
343
|
-
|
|
199
|
+
> "Summarize this YouTube video: `https://www.youtube.com/watch?v=dQw4w9WgXcQ`"
|
|
344
200
|
|
|
345
|
-
> "
|
|
201
|
+
> "At what point does the speaker mention pricing in `https://www.youtube.com/watch?v=abc123`?"
|
|
346
202
|
|
|
347
|
-
|
|
203
|
+
> "Transcribe the audio from `https://vimeo.com/123456789`"
|
|
348
204
|
|
|
349
|
-
|
|
205
|
+
---
|
|
350
206
|
|
|
351
|
-
|
|
207
|
+
## API Keys
|
|
352
208
|
|
|
353
|
-
|
|
209
|
+
### Video Backends
|
|
210
|
+
|
|
211
|
+
Set all three keys to get the full fallback chain. The server will try GLM first, then Kimi, then Gemini, so having all keys ensures it never gets stuck without a working backend:
|
|
212
|
+
|
|
213
|
+
| Provider | Key | Link |
|
|
214
|
+
| ---------------------------- | ------------------ | ------------------------------------------------- |
|
|
215
|
+
| **GLM-4.6V** (default, free) | `Z_AI_API_KEY` | [Get key](https://z.ai/manage-apikey/apikey-list) |
|
|
216
|
+
| **Kimi K2.5** | `MOONSHOT_API_KEY` | [Get key](https://platform.moonshot.ai) |
|
|
217
|
+
| **Gemini 3 Flash Preview** | `GEMINI_API_KEY` | [Get key](https://aistudio.google.com/app/apikey) |
|
|
218
|
+
|
|
219
|
+
When a provider's API key is missing, tools automatically fall back: **GLM → Kimi → Gemini**.
|
|
220
|
+
|
|
221
|
+
### Audio Providers
|
|
222
|
+
|
|
223
|
+
Similarly, set all audio keys so transcription always has a fallback provider available:
|
|
224
|
+
|
|
225
|
+
| Provider | Key | Link |
|
|
226
|
+
| ----------------------- | -------------------- | ----------------------------------------------- |
|
|
227
|
+
| **Deepgram** (default) | `DEEPGRAM_API_KEY` | [Get key](https://console.deepgram.com/) |
|
|
228
|
+
| **AssemblyAI** | `ASSEMBLYAI_API_KEY` | [Get key](https://www.assemblyai.com/dashboard) |
|
|
229
|
+
| **Groq/Whisper** (free) | `GROQ_API_KEY` | [Get key](https://console.groq.com/) |
|
|
230
|
+
| **Gemini** | `GEMINI_API_KEY` | Reuses the same key as the video backend |
|
|
231
|
+
|
|
232
|
+
When an audio key is missing, tools fall back: **Deepgram → AssemblyAI → Groq → Gemini**.
|
|
233
|
+
|
|
234
|
+
---
|
|
354
235
|
|
|
355
236
|
## Backend Comparison
|
|
356
237
|
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
|
360
|
-
|
|
|
361
|
-
|
|
|
362
|
-
|
|
|
363
|
-
|
|
|
238
|
+
### Video Backends
|
|
239
|
+
|
|
240
|
+
| Feature | GLM-4.6V (default) | Kimi K2.5 | Gemini 3 Flash Preview |
|
|
241
|
+
| -------------- | ------------------------------------ | ---------------------------------------------- | ---------------------------------------------- |
|
|
242
|
+
| Price | Free tier available (GLM-4.6V-Flash) | $0.60 input / $3.00 output per 1M tokens | Free tier available |
|
|
243
|
+
| Video formats | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp |
|
|
244
|
+
| Context window | 128K tokens | 256K tokens | 1M tokens |
|
|
245
|
+
| Max file size | ~20 MB (base64) | 100 MB | 2 GB |
|
|
246
|
+
| Best for | **Default** — free, good accuracy | Broader format support | Last-resort fallback only |
|
|
247
|
+
|
|
248
|
+
**GLM-4.6V** is the default — it offers a free tier, making it a good zero-cost starting point. **Kimi K2.5** is a paid alternative with broader format support. **Gemini** is used as a last-resort fallback — despite superior technical specs, it has proven inaccurate for video analysis in practice.
|
|
249
|
+
|
|
250
|
+
Set `VIDEO_MCP_DEFAULT_PROVIDER=kimi` or `gemini` to change the default.
|
|
251
|
+
|
|
252
|
+
### Audio Providers
|
|
364
253
|
|
|
365
|
-
|
|
254
|
+
| Feature | Deepgram (default) | AssemblyAI | Groq/Whisper | Gemini |
|
|
255
|
+
| ------------------- | ---------------------------- | ------------------------ | ----------------------- | -------------------------- |
|
|
256
|
+
| Price | Paid (free trial) | Paid (free trial) | Free tier available | Free tier available |
|
|
257
|
+
| Speaker diarization | Yes | Yes | No | No |
|
|
258
|
+
| Translation | No | No | Yes (`translate: true`) | Yes (`translate: true`) |
|
|
259
|
+
| Best for | **Default** (fast, accurate) | High-quality diarization | Free/cost-conscious use | Users already using Gemini |
|
|
366
260
|
|
|
367
|
-
|
|
261
|
+
Set `AUDIO_MCP_DEFAULT_PROVIDER` to change the default.
|
|
262
|
+
|
|
263
|
+
---
|
|
368
264
|
|
|
369
265
|
## Environment Variables
|
|
370
266
|
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
|
374
|
-
|
|
|
375
|
-
| `
|
|
376
|
-
| `
|
|
377
|
-
| `
|
|
378
|
-
| `
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
|
383
|
-
|
|
|
384
|
-
| `
|
|
385
|
-
| `
|
|
386
|
-
| `
|
|
387
|
-
| `
|
|
388
|
-
| `
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
> C:\Users\you\cookies-youtube.txt
|
|
422
|
-
> ```
|
|
423
|
-
>
|
|
424
|
-
> You can export separate files per platform or combine multiple sites into one file — yt-dlp reads all cookies in the file and uses whichever match the domain.
|
|
425
|
-
>
|
|
426
|
-
> **Step 2 — Point `YT_DLP_COOKIES_FILE` at the exported file.**
|
|
427
|
-
>
|
|
428
|
-
> Add it to the `env` block in your MCP config:
|
|
429
|
-
>
|
|
430
|
-
> ```jsonc
|
|
431
|
-
> {
|
|
432
|
-
> "servers": {
|
|
433
|
-
> "videoMcp": {
|
|
434
|
-
> "env": {
|
|
435
|
-
> // ... other keys ...
|
|
436
|
-
> "YT_DLP_COOKIES_FILE": "C:/Users/you/cookies-youtube.txt",
|
|
437
|
-
> },
|
|
438
|
-
> },
|
|
439
|
-
> },
|
|
440
|
-
> }
|
|
441
|
-
> ```
|
|
442
|
-
>
|
|
443
|
-
> Restart the MCP server after adding the variable. yt-dlp will now send those cookies with every download request, allowing access to content that requires authentication.
|
|
444
|
-
>
|
|
445
|
-
> **Keep your cookies file private** — it contains session tokens that grant access to your accounts. Never commit it to source control.
|
|
446
|
-
|
|
447
|
-
### Example Configuration
|
|
267
|
+
### Core
|
|
268
|
+
|
|
269
|
+
| Variable | Description | Default |
|
|
270
|
+
| ---------------------------- | ------------------------------------------------- | ------- |
|
|
271
|
+
| `Z_AI_API_KEY` | Z.AI API key for GLM-4.6V | — |
|
|
272
|
+
| `MOONSHOT_API_KEY` | Moonshot AI API key for Kimi K2.5 | — |
|
|
273
|
+
| `GEMINI_API_KEY` | Google API key for Gemini | — |
|
|
274
|
+
| `VIDEO_MCP_DEFAULT_PROVIDER` | Default video backend: `glm`, `kimi`, or `gemini` | `glm` |
|
|
275
|
+
|
|
276
|
+
### Audio
|
|
277
|
+
|
|
278
|
+
| Variable | Description | Default |
|
|
279
|
+
| ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- |
|
|
280
|
+
| `DEEPGRAM_API_KEY` | Deepgram API key | — |
|
|
281
|
+
| `ASSEMBLYAI_API_KEY` | AssemblyAI API key | — |
|
|
282
|
+
| `GROQ_API_KEY` | Groq API key for Whisper transcription | — |
|
|
283
|
+
| `AUDIO_MCP_DEFAULT_PROVIDER` | Default audio provider: `deepgram`, `assemblyai`, `groq`, or `gemini`. Falls back in that order when the selected key is missing. | `deepgram` |
|
|
284
|
+
| `AUDIO_ENHANCE_VIDEO_ANALYSIS` | Inject audio transcripts into `analyze_video`/`summarize_video` prompts (GLM/Kimi only). `auto` = transcribe when audio track detected; `true` = always; `false` = disabled. | `auto` |
|
|
285
|
+
|
|
286
|
+
### Caching
|
|
287
|
+
|
|
288
|
+
| Variable | Description | Default |
|
|
289
|
+
| ----------------------------- | -------------------------------------------------------------------------------------- | ------- |
|
|
290
|
+
| `VIDEO_MCP_CACHE_TTL_MINUTES` | How long downloaded videos are cached across tool calls (minutes). Set `0` to disable. | `30` |
|
|
291
|
+
| `VIDEO_MCP_CACHE_MAX_ENTRIES` | Max entries in the download cache. LRU eviction. Set `0` for unbounded. | `100` |
|
|
292
|
+
|
|
293
|
+
### Video Summarization
|
|
294
|
+
|
|
295
|
+
| Variable | Description | Default |
|
|
296
|
+
| ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------- |
|
|
297
|
+
| `VIDEO_MCP_MAX_FRAMES` | Max keyframes for `summarize_video` (GLM/Kimi only; Gemini uploads full video). **Free**: clamped 5–50. **Pro**: default 100; set `0` for uncapped. Either way, trailing frames are automatically dropped if the total payload exceeds the provider's size limit (12 MB for GLM, 80 MB for Kimi). | `50` free / `100` pro |
|
|
298
|
+
|
|
299
|
+
### yt-dlp (Platform Downloads)
|
|
300
|
+
|
|
301
|
+
| Variable | Description | Default |
|
|
302
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
303
|
+
| `YT_DLP_MAX_RESOLUTION` | Max video height (px) for yt-dlp downloads. Free users capped at 720. | `720` |
|
|
304
|
+
| `YT_DLP_PATH` | Path to a custom yt-dlp binary. If unset, uses the bundled binary from `youtube-dl-exec`. | — |
|
|
305
|
+
| `YT_DLP_COOKIES_FILE` | Path to a Netscape-format cookies file for authenticated downloads (age-restricted, private videos). | — |
|
|
306
|
+
| `YT_DLP_IMPERSONATE` | Browser to impersonate (e.g. `chrome`, `firefox`). Needed for sites like Udemy. Requires yt-dlp with `curl_cffi` support. | — |
|
|
307
|
+
|
|
308
|
+
### Pro
|
|
309
|
+
|
|
310
|
+
| Variable | Description | Default |
|
|
311
|
+
| ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------- |
|
|
312
|
+
| `VIDEO_MCP_LICENSE_KEY` | Pro license key. Unlocks extended frames, platform downloads beyond YouTube, and resolution above 720p. Valid 1 year. | — |
|
|
313
|
+
|
|
314
|
+
### Complete Example Config
|
|
315
|
+
|
|
316
|
+
A fully annotated `.vscode/mcp.json` showing every available environment variable:
|
|
448
317
|
|
|
449
318
|
```json
|
|
450
319
|
{
|
|
@@ -460,63 +329,168 @@ When a provider's API key is missing, the tool automatically falls back to the n
|
|
|
460
329
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
461
330
|
"GROQ_API_KEY": "your-groq-key",
|
|
462
331
|
"VIDEO_MCP_DEFAULT_PROVIDER": "glm",
|
|
463
|
-
"
|
|
332
|
+
"AUDIO_MCP_DEFAULT_PROVIDER": "deepgram",
|
|
464
333
|
"AUDIO_ENHANCE_VIDEO_ANALYSIS": "auto",
|
|
465
334
|
"VIDEO_MCP_CACHE_TTL_MINUTES": "30",
|
|
335
|
+
"VIDEO_MCP_CACHE_MAX_ENTRIES": "100",
|
|
336
|
+
"VIDEO_MCP_MAX_FRAMES": "50",
|
|
466
337
|
"YT_DLP_MAX_RESOLUTION": "720",
|
|
467
|
-
"YT_DLP_PATH": "/
|
|
468
|
-
"
|
|
338
|
+
"YT_DLP_PATH": "/usr/local/bin/yt-dlp",
|
|
339
|
+
"YT_DLP_COOKIES_FILE": "/path/to/cookies.txt",
|
|
340
|
+
"YT_DLP_IMPERSONATE": "chrome",
|
|
341
|
+
"VIDEO_MCP_LICENSE_KEY": "your-license-key"
|
|
469
342
|
}
|
|
470
343
|
}
|
|
471
344
|
}
|
|
472
345
|
}
|
|
473
346
|
```
|
|
474
347
|
|
|
475
|
-
>
|
|
476
|
-
>
|
|
477
|
-
> **Note:** `YT_DLP_PATH` and `YT_DLP_COOKIES_FILE` are only needed if you want to use a custom yt-dlp binary or authenticate downloads of private/age-restricted videos. Omit them for standard use.
|
|
348
|
+
> Remove or omit any variables you don't need — unset optional vars fall back to their defaults.
|
|
478
349
|
|
|
479
|
-
|
|
350
|
+
<details>
|
|
351
|
+
<summary><strong>Tip: install yt-dlp system-wide for faster startup</strong></summary>
|
|
480
352
|
|
|
481
|
-
|
|
353
|
+
The `youtube-dl-exec` package bundles a yt-dlp binary (~30 MB). If you use platform URLs often, install yt-dlp directly:
|
|
482
354
|
|
|
483
|
-
|
|
355
|
+
```bash
|
|
356
|
+
brew install yt-dlp # macOS
|
|
357
|
+
winget install yt-dlp # Windows
|
|
358
|
+
pip install yt-dlp # cross-platform
|
|
359
|
+
```
|
|
360
|
+
|
|
361
|
+
Then set `YT_DLP_PATH` to the installed binary. To skip the bundled download at install time:
|
|
484
362
|
|
|
485
363
|
```bash
|
|
486
|
-
|
|
487
|
-
|
|
364
|
+
YOUTUBE_DL_SKIP_DOWNLOAD=true npm install -g video-context-mcp-server
|
|
365
|
+
```
|
|
488
366
|
|
|
489
|
-
|
|
490
|
-
npm run dev
|
|
367
|
+
</details>
|
|
491
368
|
|
|
492
|
-
|
|
493
|
-
|
|
369
|
+
<details>
|
|
370
|
+
<summary><strong>Tip: use cookies for age-restricted or private videos</strong></summary>
|
|
371
|
+
|
|
372
|
+
Some videos require authentication. Export cookies from your browser and point yt-dlp at them.
|
|
373
|
+
|
|
374
|
+
**Step 1 — Export cookies.** Install [Get cookies.txt LOCALLY](https://chromewebstore.google.com/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc) (Chrome/Edge) or [cookies.txt](https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/) (Firefox). Navigate to the platform while logged in, export in Netscape format, and save the file (e.g. `~/cookies-youtube.txt`).
|
|
375
|
+
|
|
376
|
+
**Step 2 — Configure.** Add `YT_DLP_COOKIES_FILE` to your MCP config `env` block:
|
|
377
|
+
|
|
378
|
+
```jsonc
|
|
379
|
+
{
|
|
380
|
+
"env": {
|
|
381
|
+
"YT_DLP_COOKIES_FILE": "C:/Users/you/cookies-youtube.txt",
|
|
382
|
+
},
|
|
383
|
+
}
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
Restart the MCP server. **Keep your cookies file private** — never commit it to source control.
|
|
387
|
+
|
|
388
|
+
</details>
|
|
389
|
+
|
|
390
|
+
---
|
|
391
|
+
|
|
392
|
+
## Pro
|
|
393
|
+
|
|
394
|
+
The free tier covers all core functionality. A **pro license** unlocks three power features:
|
|
395
|
+
|
|
396
|
+
| Feature | Free | Pro |
|
|
397
|
+
| ---------------------------- | ------------------- | --------------------------------- |
|
|
398
|
+
| 🖼️ Extended frame extraction | Capped at 50 frames | Default 100; set `0` for uncapped |
|
|
399
|
+
| 🌐 Platform video downloads | YouTube only | All yt-dlp platforms |
|
|
400
|
+
| 📺 Download resolution | Capped at 720p | Uncapped |
|
|
401
|
+
|
|
402
|
+
> Local files and direct `http(s)://` video URLs work for all users — the platform gate only applies to yt-dlp URLs (YouTube, Vimeo, TikTok, etc.).
|
|
403
|
+
|
|
404
|
+
When a free-tier limit is reached, the tool falls back gracefully with a notice — it **never hard-blocks**.
|
|
494
405
|
|
|
495
|
-
|
|
496
|
-
|
|
406
|
+
### Getting a License
|
|
407
|
+
|
|
408
|
+
License keys are valid for **1 year** and verified **offline** (no network calls at runtime). Contact the author to obtain one.
|
|
409
|
+
|
|
410
|
+
Add `VIDEO_MCP_LICENSE_KEY` to your MCP config `env` block and restart the server:
|
|
411
|
+
|
|
412
|
+
```json
|
|
413
|
+
{
|
|
414
|
+
"env": {
|
|
415
|
+
"VIDEO_MCP_LICENSE_KEY": "<your-license-key>"
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
> No registration, no internet check, no extra setup.
|
|
421
|
+
|
|
422
|
+
---
|
|
497
423
|
|
|
498
|
-
|
|
499
|
-
npm run lint
|
|
424
|
+
## Troubleshooting
|
|
500
425
|
|
|
501
|
-
|
|
502
|
-
npm run test
|
|
426
|
+
- **`video-context-mcp: command not found`** — Make sure Node.js is installed (`node -v`). Re-run `npm install -g video-context-mcp-server`, or use `npx -y video-context-mcp-server@latest` if global binaries aren't on PATH.
|
|
503
427
|
|
|
504
|
-
|
|
505
|
-
npm run test:watch
|
|
428
|
+
- **MCP server not appearing** — Restart the client app after config changes. Validate JSON syntax. For Claude Code, verify with `claude mcp list`.
|
|
506
429
|
|
|
507
|
-
|
|
508
|
-
|
|
430
|
+
- **Missing API key errors** — Set only the keys for providers you use. When a key is missing, tools automatically fall back to the next available provider and include a notice in the response.
|
|
431
|
+
|
|
432
|
+
---
|
|
433
|
+
|
|
434
|
+
## Development
|
|
435
|
+
|
|
436
|
+
> This section is for contributors building from source. If you're just using the server, follow the [Quick Start](#quick-start) instead.
|
|
437
|
+
|
|
438
|
+
### From Source
|
|
439
|
+
|
|
440
|
+
```bash
|
|
441
|
+
git clone <repo-url> && cd video-mcp
|
|
442
|
+
npm install
|
|
443
|
+
npm run build
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
Use this `.vscode/mcp.json` to run the local build:
|
|
447
|
+
|
|
448
|
+
```json
|
|
449
|
+
{
|
|
450
|
+
"servers": {
|
|
451
|
+
"videoMcp": {
|
|
452
|
+
"type": "stdio",
|
|
453
|
+
"command": "node",
|
|
454
|
+
"args": ["${workspaceFolder}/dist/index.js"],
|
|
455
|
+
"env": {
|
|
456
|
+
"Z_AI_API_KEY": "your-zai-key",
|
|
457
|
+
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
458
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
459
|
+
"VIDEO_MCP_DEFAULT_PROVIDER": "glm",
|
|
460
|
+
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
461
|
+
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
462
|
+
"GROQ_API_KEY": "your-groq-key",
|
|
463
|
+
"AUDIO_MCP_DEFAULT_PROVIDER": "deepgram",
|
|
464
|
+
"AUDIO_ENHANCE_VIDEO_ANALYSIS": "auto",
|
|
465
|
+
"VIDEO_MCP_CACHE_TTL_MINUTES": "30",
|
|
466
|
+
"VIDEO_MCP_CACHE_MAX_ENTRIES": "100",
|
|
467
|
+
"VIDEO_MCP_MAX_FRAMES": "0",
|
|
468
|
+
"YT_DLP_MAX_RESOLUTION": "720",
|
|
469
|
+
"YT_DLP_PATH": "/usr/local/bin/yt-dlp",
|
|
470
|
+
"YT_DLP_COOKIES_FILE": "/path/to/cookies.txt",
|
|
471
|
+
"YT_DLP_IMPERSONATE": "chrome",
|
|
472
|
+
"VIDEO_MCP_LICENSE_KEY": "your-license-key"
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
```
|
|
509
478
|
|
|
510
|
-
|
|
511
|
-
npm run format
|
|
479
|
+
### Debugging in VS Code
|
|
512
480
|
|
|
513
|
-
|
|
514
|
-
npm run format:check
|
|
481
|
+
Add a `dev` block to `.vscode/mcp.json` for auto-restart and debug integration:
|
|
515
482
|
|
|
516
|
-
|
|
517
|
-
|
|
483
|
+
```jsonc
|
|
484
|
+
"dev": {
|
|
485
|
+
"watch": "src/**/*.ts",
|
|
486
|
+
"debug": { "type": "node" }
|
|
487
|
+
}
|
|
518
488
|
```
|
|
519
489
|
|
|
490
|
+
This causes verbose MCP protocol logs in **Output → MCP: videoMcp** — that's expected. Remove `dev.debug` or the full `dev` block to reduce noise.
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
520
494
|
## License
|
|
521
495
|
|
|
522
496
|
Proprietary — All Rights Reserved. No part of this software may be copied, modified, distributed, or used without explicit written permission from the author.
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.21.0-beta";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"analyzeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,KAAK,kBAAkB,GAAG,OAAO,KAAK,EAAE,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAExE,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,kBAAkB,KACzB,OAAO,CAAC,cAAc,CAsExB,CAAA"}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Ask questions about video content and get AI-powered answers
|
|
4
4
|
*/
|
|
5
5
|
import { logProgress } from '../utils/logger.js';
|
|
6
|
-
import { isPro, proNotice } from '../utils/license.js';
|
|
7
6
|
import { runWithProviderFallback } from './orchestrator.js';
|
|
8
7
|
export const analyzeVideoTool = async (params) => {
|
|
9
8
|
const { videoPath, question } = params;
|
|
@@ -51,11 +50,7 @@ export const analyzeVideoTool = async (params) => {
|
|
|
51
50
|
return { text };
|
|
52
51
|
},
|
|
53
52
|
extraNotices() {
|
|
54
|
-
|
|
55
|
-
if (!isPro() && process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS !== 'false') {
|
|
56
|
-
notices.push(proNotice('Audio-enhanced analysis'));
|
|
57
|
-
}
|
|
58
|
-
return notices;
|
|
53
|
+
return [];
|
|
59
54
|
},
|
|
60
55
|
});
|
|
61
56
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,KAAK,oBAAoB,GAAG,OAAO,KAAK,EAAE,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAuC5E,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,cAAc,
|
|
1
|
+
{"version":3,"file":"summarizeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,KAAK,oBAAoB,GAAG,OAAO,KAAK,EAAE,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAuC5E,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CA6IxB,CAAA"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import { extractFramesEvenly, getVideoMetadata } from '../services/ffmpeg.js';
|
|
6
6
|
import { getMaxFrames, wasFramesCapped } from '../services/providerRouter.js';
|
|
7
7
|
import { logProgress } from '../utils/logger.js';
|
|
8
|
-
import {
|
|
8
|
+
import { proNotice } from '../utils/license.js';
|
|
9
9
|
import { runWithProviderFallback } from './orchestrator.js';
|
|
10
10
|
const LONG_VIDEO_THRESHOLD_SEC = 5 * 60;
|
|
11
11
|
function buildSummaryPrompt() {
|
|
@@ -123,9 +123,6 @@ export const summarizeVideoTool = async (params) => {
|
|
|
123
123
|
},
|
|
124
124
|
extraNotices(s) {
|
|
125
125
|
const notices = [];
|
|
126
|
-
if (!isPro() && process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS !== 'false') {
|
|
127
|
-
notices.push(proNotice('Audio-enhanced analysis'));
|
|
128
|
-
}
|
|
129
126
|
if (wasFramesCapped()) {
|
|
130
127
|
notices.push(proNotice('Extended frame extraction (uncapped for pro users)'));
|
|
131
128
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,9 +17,6 @@ export type TranscriptResult = {
|
|
|
17
17
|
/**
|
|
18
18
|
* Reads and validates AUDIO_ENHANCE_VIDEO_ANALYSIS env var.
|
|
19
19
|
* Returns 'auto' if unset or unrecognised (the default behaviour).
|
|
20
|
-
*
|
|
21
|
-
* Audio enhancement is a pro feature. When no valid license is present,
|
|
22
|
-
* this always returns 'false' regardless of the env var value.
|
|
23
20
|
*/
|
|
24
21
|
export declare function getAudioEnhancementMode(): AudioEnhancementMode;
|
|
25
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioUtils.d.ts","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"audioUtils.d.ts","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAgBH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;AAE5D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;CACtC,CAAA;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,oBAAoB,CAI9D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,QAAQ,GAAG,KAAK,CAM3B;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAChD,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAkElC;AAED;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,gBAAgB,GAAG,IAAI,GAC9B,MAAM,CASR"}
|
package/dist/utils/audioUtils.js
CHANGED
|
@@ -18,17 +18,11 @@ import { createGeminiClient } from '../services/geminiClient.js';
|
|
|
18
18
|
import { resolveAudioProvider, getAudioProviderKeys, } from '../services/audioRouter.js';
|
|
19
19
|
import { generateTempFilename } from './tempFiles.js';
|
|
20
20
|
import { logProgress } from './logger.js';
|
|
21
|
-
import { isPro } from './license.js';
|
|
22
21
|
/**
|
|
23
22
|
* Reads and validates AUDIO_ENHANCE_VIDEO_ANALYSIS env var.
|
|
24
23
|
* Returns 'auto' if unset or unrecognised (the default behaviour).
|
|
25
|
-
*
|
|
26
|
-
* Audio enhancement is a pro feature. When no valid license is present,
|
|
27
|
-
* this always returns 'false' regardless of the env var value.
|
|
28
24
|
*/
|
|
29
25
|
export function getAudioEnhancementMode() {
|
|
30
|
-
if (!isPro())
|
|
31
|
-
return 'false';
|
|
32
26
|
const val = process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS;
|
|
33
27
|
if (val === 'true' || val === 'false' || val === 'auto')
|
|
34
28
|
return val;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioUtils.js","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"audioUtils.js","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadCache.d.ts","sourceRoot":"","sources":["../../src/utils/downloadCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAuBH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"downloadCache.d.ts","sourceRoot":"","sources":["../../src/utils/downloadCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAuBH;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAMtC;AAED,gEAAgE;AAChE,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAM3C;AAMD;;;GAGG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC,CAMtD;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAqB3E;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAI1E;AAkDD;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC"}
|
|
@@ -33,9 +33,12 @@ let _cacheDirPath = null;
|
|
|
33
33
|
* disabled (TTL set to 0 or negative).
|
|
34
34
|
*/
|
|
35
35
|
export function getCacheTTLMs() {
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
const raw = process.env.VIDEO_MCP_CACHE_TTL_MINUTES ?? '';
|
|
37
|
+
const minutes = parseInt(raw, 10);
|
|
38
|
+
if (isNaN(minutes))
|
|
39
|
+
return 30 * 60_000; // invalid/empty → default 30 min
|
|
40
|
+
if (minutes <= 0)
|
|
41
|
+
return 0; // explicit 0 / negative → disabled
|
|
39
42
|
return minutes * 60_000;
|
|
40
43
|
}
|
|
41
44
|
/** Returns true when the download cache is active (TTL > 0). */
|
|
@@ -48,10 +51,12 @@ export function isCachingEnabled() {
|
|
|
48
51
|
* Returns 0 when the cap is disabled (value ≤ 0).
|
|
49
52
|
*/
|
|
50
53
|
export function getMaxCacheEntries() {
|
|
51
|
-
const raw = process.env.VIDEO_MCP_CACHE_MAX_ENTRIES ?? '
|
|
54
|
+
const raw = process.env.VIDEO_MCP_CACHE_MAX_ENTRIES ?? '';
|
|
52
55
|
const parsed = parseInt(raw, 10);
|
|
53
|
-
if (isNaN(parsed)
|
|
54
|
-
return
|
|
56
|
+
if (isNaN(parsed))
|
|
57
|
+
return 100; // invalid/empty → default 100
|
|
58
|
+
if (parsed <= 0)
|
|
59
|
+
return 0; // explicit 0 / negative → unbounded
|
|
55
60
|
return parsed;
|
|
56
61
|
}
|
|
57
62
|
// ---------------------------------------------------------------------------
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"downloadCache.js","sourceRoot":"","sources":["../../src/utils/downloadCache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAS3B,oCAAoC;AACpC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;AAE3C,yDAAyD;AACzD,IAAI,aAAa,GAAkB,IAAI,CAAA;AAEvC,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"downloadCache.js","sourceRoot":"","sources":["../../src/utils/downloadCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAgCD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUlD;AAKD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBzD;AAiCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAoGjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C;AAMD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEzD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
|
package/dist/utils/videoUtils.js
CHANGED
|
@@ -13,6 +13,15 @@ import { isCachingEnabled, ensureCacheDir, getCachedDownload, registerCachedDown
|
|
|
13
13
|
import { isPro, proNotice } from './license.js';
|
|
14
14
|
/** Free-tier cap for max download resolution. Pro users have no cap. */
|
|
15
15
|
const FREE_MAX_RESOLUTION = 720;
|
|
16
|
+
/**
|
|
17
|
+
* Safely parse YT_DLP_MAX_RESOLUTION from the environment.
|
|
18
|
+
* Returns the default (720) for missing, empty, non-numeric, or non-positive values.
|
|
19
|
+
*/
|
|
20
|
+
function getEnvMaxResolution() {
|
|
21
|
+
const raw = process.env.YT_DLP_MAX_RESOLUTION ?? '';
|
|
22
|
+
const parsed = parseInt(raw, 10);
|
|
23
|
+
return isNaN(parsed) || parsed <= 0 ? FREE_MAX_RESOLUTION : parsed;
|
|
24
|
+
}
|
|
16
25
|
/**
|
|
17
26
|
* Returns true if the value is an http or https URL
|
|
18
27
|
*/
|
|
@@ -230,7 +239,7 @@ export async function downloadWithYtDlp(url, tempDir) {
|
|
|
230
239
|
return cached;
|
|
231
240
|
}
|
|
232
241
|
// ── Download ───────────────────────────────────────────────────────────────
|
|
233
|
-
const envMaxRes =
|
|
242
|
+
const envMaxRes = getEnvMaxResolution();
|
|
234
243
|
const maxRes = isPro() ? envMaxRes : Math.min(envMaxRes, FREE_MAX_RESOLUTION);
|
|
235
244
|
const format = `bestvideo[height<=${maxRes}][ext=mp4]+bestaudio[ext=m4a]` +
|
|
236
245
|
`/best[height<=${maxRes}][ext=mp4]` +
|
|
@@ -301,8 +310,7 @@ export async function downloadWithYtDlp(url, tempDir) {
|
|
|
301
310
|
export function wasResolutionCapped() {
|
|
302
311
|
if (isPro())
|
|
303
312
|
return false;
|
|
304
|
-
|
|
305
|
-
return envMaxRes > FREE_MAX_RESOLUTION;
|
|
313
|
+
return getEnvMaxResolution() > FREE_MAX_RESOLUTION;
|
|
306
314
|
}
|
|
307
315
|
/**
|
|
308
316
|
* Resolves a videoPath to a local filesystem path, downloading if necessary.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,MAAM,IAAI,WAAW,GAEtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAE/C,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAE/B;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,OAAO,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACpC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAC/C,MAAM,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC7D,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAAiB;IAClD,IAAI,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACpC,wEAAwE;QACxE,wDAAwD;QACxD,uEAAuE;QACvE,iEAAiE;QACjE,IAAI,CAAC;YACH,OAAO,aAAa,CAAC,SAAS,CAAC,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAA;QACjE,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAW,EACX,OAAe;IAEf,8EAA8E;IAC9E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,6EAA6E;IAC7E,wEAAwE;IACxE,0EAA0E;IAC1E,6CAA6C;IAC7C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QACpD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACpD,IACE,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACrD,CAAC,MAAM,gBAAgB,EAAE,CAAC,EAC1B,CAAC;YACD,MAAM,WAAW,CACf,gEAAgE,CACjE,CAAA;YACD,OAAO,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;IAED,8EAA8E;IAC9E,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,MAAM,cAAc,EAAE,CAAC,CAAC,CAAC,OAAO,CAAA;IACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;IAErE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAA;IACrE,CAAC;IACD,8DAA8D;IAC9D,MAAM,QAAQ,CAAC,QAAQ,CAAC,IAAW,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAA;IAEnE,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,sBAAsB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;IACzC,CAAC;IAED,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;IACvB,aAAa;IACb,UAAU;IACV,WAAW;IACX,iBAAiB;IACjB,QAAQ;IACR,YAAY;IACZ,aAAa;IACb,OAAO;IACP,eAAe;IACf,cAAc;IACd,UAAU;IACV,WAAW;IACX,cAAc;IACd,cAAc;IACd,WAAW;CACZ,CAAA;AAED,yDAAyD;AACzD,MAAM,iBAAiB,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,iBAAiB,CAAC,IAAI,CAC3B,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CACnE,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAA;IAC5C,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACjC,OAAO,gBAAgB,CAAC,IAAI,CAC1B,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,KAAK,MAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,MAAM,EAAE,CAAC,CACnE,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,IAAI,mBAAmB,GAAmB,IAAI,CAAA;AAE9C;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,mBAAmB,GAAG,IAAI,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,mBAAmB,KAAK,IAAI;QAAE,OAAO,mBAAmB,CAAA;IAC5D,IAAI,CAAC;QACH,4EAA4E;QAC5E,uEAAuE;QACvE,MAAM,KAAK,GAAG,CACZ,OAAO,CAAC,GAAG,CAAC,WAAW;YACrB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACtC,CAAC,CAAC,aAAa,CACM,CAAA;QACzB,MAAM,KAAK,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3C,mBAAmB,GAAG,IAAI,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,mBAAmB,GAAG,KAAK,CAAA;IAC7B,CAAC;IACD,OAAO,mBAAmB,CAAA;AAC5B,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAc;IACxC,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,EAAE,CAAA;IAC9B,IACE,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAC5B,CAAC;QACD,OAAO,CACL,sCAAsC;YACtC,uFAAuF,CACxF,CAAA;IACH,CAAC;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrE,OAAO,2EAA2E,CAAA;IACpF,CAAC;IACD,IACE,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC7B,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC;QACzB,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EACpB,CAAC;QACD,OAAO,CACL,uCAAuC;YACvC,qEAAqE,CACtE,CAAA;IACH,CAAC;IACD,OAAO,4BAA4B,MAAM,EAAE,CAAA;AAC7C,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,OAAe;IAEf,0EAA0E;IAC1E,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CACb,SAAS,CAAC,kCAAkC,CAAC;YAC3C,oDAAoD;YACpD,kCAAkC,CACrC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,sBAAsB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAChE,OAAO,MAAM,CAAA;IACf,CAAC;IAED,8EAA8E;IAC9E,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "video-context-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.22.0-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",
|