MCP server for video editing operations including clipping, merging, and adding background music
vedit-mcp demonstrates significant gaps across naming, descriptions, parameter validation, and error handling. While tool names are action-oriented (clip_video, merge_videos, add_bgm, task_ending), descriptions are minimal and parameter-level documentation is entirely absent. Input schemas are present with proper JSON Schema structure, but parameters lack type information beyond the schema declaration itself, descriptions that would clarify intent, constraints, and error guidance are missing from the source. No output schemas are documented. Error handling is not visible in the provided code. Security concerns exist around file path handling without apparent sanitization. The tool set appears incomplete for a video editing workflow (missing tools for preview, metadata inspection, or format conversion). STDIO transport limits practical usability.
Add background music to a video file.
Cut a video and save it to a specified folder.
Merge multiple local video files.
End the video editing task.
Parameter descriptions are completely missing. The input schemas define parameter names and types, but provide no guidance on format, constraints, or valid ranges. LLMs cannot determine valid values for 'start_time', 'stop_time', or whether times are in seconds, milliseconds, or frames without explicit descriptions.
No output schemas documented. Tools return video paths or task IDs, but the response structure (fields, types, error cases) is not specified. Agents cannot plan downstream operations without knowing what data to expect.
Tool descriptions are too brief (10-30 chars) and lack context. 'Cut a video and save it to a specified folder' does not explain when to use clip_video vs merge_videos, what format constraints exist, or how the tool handles malformed input. Descriptions should be 50-200 chars and include WHAT, WHEN, and consequences.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 44 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Path parameters (original_video_path, save_folder, video_paths, bgm_path, video_path) accept free-form strings with no validation hints. No description specifies whether paths should be absolute or relative, whether they must exist beforehand, or what happens if a path contains special characters or spaces. This invites path traversal vulnerabilities and LLM-generated invalid paths.
No error handling guidance. The source code does not show what happens when a video file is corrupted, when start_time >= stop_time, when save_folder does not exist, or when FFmpeg (implied by subprocess calls) fails. LLMs need categorized errors (retryable, user-fixable, fatal) with recovery steps.
task_ending tool name is ambiguous. 'End the video editing task' does not clarify whether this cancels in-progress work, archives results, or signals completion to a tracking system. Verb + noun naming (finalize_task, mark_task_complete, archive_task) would be clearer.
No parameter constraints or enums. The 'title' parameter in clip_video accepts any string, should it support only alphanumeric + underscore? The array 'video_paths' in merge_videos lacks min/max length guidance. Without constraints, LLMs generate invalid inputs.
Tool composition is incomplete. No discovery tools (list_videos, get_video_metadata, get_available_formats) exist to help agents understand what media is available or what formats are supported. Agents must guess valid paths and formats.
No confirmation or dry-run pattern for destructive operations. clip_video, merge_videos, and add_bgm modify the filesystem, overwriting files or deleting temporary data, without user confirmation. Agents can trash user data without oversight.