Agnes Image/Video 2.5 Flash MCP Server (stdio) - 2.5-flash-only edition for any MCP-compatible IDE
Server has 4 tools with explicit schemas and descriptions. Naming follows verb_noun pattern (generate_image, create_video, query_video, generate_video). Descriptions are detailed and include bilingual triggers, but are verbose (300-400 chars, above the 10-200 char LLM-optimized baseline). All tools have input schemas with types and enums. However, output schemas are not documented, responses are inferred from code (e.g., generate_image returns dict with 'url', 'b64_json', 'saved_to' fields, but this is not formally declared). Error handling is minimal, no recovery guidance or error categorization. Parameters lack validation descriptions (e.g., 'seconds' accepts string '4'..'12' but this constraint is only in docstring, not schema). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). generate_video and create_video are near-duplicates (sync vs async), violating single-responsibility; composition could be cleaner.
Create an async agnes-video-2.5-flash task (RECOMMENDED). Returns video_id; poll with query_video. 中文触发:当用户说「生视频 / 生成视频 / 做个视频 / 图生视频 / 首尾帧 / 参考图视频」时优先调用此工具(异步默认,避免IDE超时)。 Trigger: agnes generate video (async) / text-to-video / image-to-video / keyframe. mode text: pure text (no media). keyframe: first_frame and/or last_frame required. reference: images (<=5) and/or audios (<=3) required; use <Picture N>/<Audio N> in prompt. size is fixed 720P. seconds is a string "4".."12" (default "5"). Examples: - 纯文本生视频:prompt="未来城市街道", mode="text", seconds="5" - 首尾帧:prompt="街道由白天变为夜晚", mode="keyframe", first_frame="https://.../a.png"
Generate or edit an image with agnes-image-2.5-flash. Always returns a URL (or base64). 中文触发:当用户说「agnes生图 / 生成图片 / 做张图 / 文生图 / 图生图 / 改图 / 多图合成」时调用此工具。 Trigger: agnes generate image / text-to-image / image-to-image / edit image. Presets: size 1K(fast/cheap) / 2K(default, wallpaper 16:9=2624x1472) / 3K / 4K(max quality). ratio 16:9 default (wallpaper), 1:1 social, 9:16 vertical, 21:9 ultrawide. Pass `images` (public URL or Data URI) for image-to-image / multi-image compose; omit it for pure text-to-image. save_path is optional: when given, the result is also downloaded locally. Examples: - 纯文生图:prompt="赛博朋克夜景壁纸", size="2K", ratio="16:9" - 带图改图:prompt="改成雨夜霓虹风格,保持构图", images=["https://.../a.png"]
Create a video task and block-poll until completed/failed (compat; may hit client timeouts). ⚠️ 同步阻塞(易超时):开源推荐用 create_video + query_video;此工具仅为短视频兼容保留。 中文触发:仅当用户明确说「一步到位 / 直接等视频结果」时才用,否则用 create_video。 Trigger (compat): agnes generate video sync; prefer async create_video + query_video. Same params as create_video plus poll_interval (default 2s) and timeout_seconds (default 600s). On timeout, reuse video_id with query_video.
Output schemas not documented. generate_image returns dict with 'url', 'b64_json', 'saved_to' fields; create_video returns 'video_id'; query_video returns 'status', 'progress', 'video_url', but none are formally declared in tool definitions. LLMs cannot plan downstream calls without knowing response structure.
Descriptions are verbose (300-400 chars) and include bilingual triggers, examples, and presets. LLM-optimized descriptions should be 50-200 chars. Current length wastes tokens and buries key intent. Bilingual content should be in separate documentation, not tool descriptions.
Parameter constraints documented only in docstrings, not in schema. E.g., 'seconds' must be string '4'..'12', 'images' max 5 items, 'audios' max 3 items, these are stated in descriptions but not enforced via JSON Schema minItems/maxItems/pattern. No validation errors returned if violated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
Query an agnes-video-2.5-flash task. Returns status/progress and video_url when completed. 中文触发:视频创建后,用此工具按 video_id 轮询进度(配合 create_video 使用)。
generate_video and create_video are near-duplicates: create_video is async (returns video_id), generate_video is sync (blocks and polls). This violates single-responsibility and forces LLMs to reason about which to use. Should consolidate into one tool with a 'wait' parameter or separate them more clearly with distinct names (e.g., 'create_video_async' vs 'create_video_sync').
No error handling guidance. If API key is invalid, network fails, or video generation times out, responses are raw exceptions. No recovery hints (e.g., 'Check AGNES_API_KEY env var' or 'Retry with query_video(video_id=...)' on timeout). Agents cannot self-correct.