MCP stdio server for Alibaba Cloud Model Studio. Provides access to text/vision completion, embeddings, reranking, image generation, video generation, audio transcription, speech synthesis, file management, batch inference, and fine-tuning capabilities.
15 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (ms_* prefix). Descriptions are substantive (100-200 chars typical), explaining WHAT, WHEN, and key constraints. Parameters are typed and mostly described. However, output schemas are entirely undocumented, LLMs cannot plan downstream calls or extract structured data. No error handling guidance. No parameter validation rules (e.g., max_tokens bounds, dimension enum enforcement). Missing descriptions on several optional parameters (e.g., 'model' in ms_chat defaults to configured default but no guidance on fallback behavior). No idempotency or retry semantics documented. Composition is sound, tools are single-responsibility and chainable via IDs.
Batch inference, billed at 50 percent of real-time for the same model. Create from a local JSONL path or an already-uploaded file id.
Free-quota headroom per model, and whether the local guard is enforcing. Counts only calls made through this tooling — the real protection against charges is the per-model 'Free Quota Only' switch in the Model Studio console.
Text or vision completion on a Qwen/DeepSeek/GLM model. Attach images by URL or local path to use it as a vision model. Returns the text and the token usage for the call.
Verify Model Studio credentials and endpoints end to end: resolve config, list callable models, and run a smoke completion. Run this first when anything looks wrong. Never reveals the API key.
Embed texts with text-embedding-v4. Chunks past the 10-item per-request cap automatically. Writes vectors to out_path when given, otherwise returns only the count and dimension so a large payload never floods context.
Output schemas completely undocumented. No tool returns a documented response structure. LLMs cannot plan downstream calls, extract IDs for chaining, or validate results. E.g., ms_chat returns 'text and token usage' but no schema; ms_models returns 'model ids' but structure unknown; ms_files 'upload' action returns what?
No error handling guidance. Tools like ms_chat, ms_embed, ms_rerank, ms_image, ms_video, ms_transcribe, ms_speak, ms_batch, ms_tune provide no recovery hints. E.g., if ms_models fails, should LLM retry? Call ms_doctor? What does 'Max 500 documents' error in ms_rerank tell the agent to do?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Manage files on Model Studio: upload (for fine-tuning or batch), list, delete, or read back contents.
Generate an image from text, or edit images when reference images are supplied. Downloads to out_dir when given; otherwise returns the URLs.
List the model ids this account can actually call, optionally filtered. Model availability differs per region and changes often, so prefer this over assuming a model name exists.
Rerank candidate documents against a query with qwen3-rerank. Max 500 documents; query plus documents must stay under 30k tokens.
Synthesize speech from text. Downloads to out_path when given, otherwise returns the audio URL.
Poll any async task id (image, video, ASR). Task ids stay valid for 24h. Status flows PENDING -> RUNNING -> SUCCEEDED | FAILED.
Transcribe audio files. Takes PUBLICLY REACHABLE URLs only — there is no local upload path, so host the file first. Async: returns a task_id unless wait=true.
Fine-tuning lifecycle: create a job, list, check status, read logs, list checkpoints, deploy a checkpoint as a callable model, cancel, delete, or run a deployed model. One job trains at a time; the rest sit in QUEUING.
Local ledger of every call made through this tool, aggregated per kind/model. Free quota is per-model and expires 90 days after activation, so this is how you see the burn without opening the console.
Generate video from text, or from a first-frame image URL. Long-running (1-5 min): by default this submits and returns a task_id to poll with ms_task. Set wait=true only when blocking is acceptable.
Parameter constraints missing or vague. ms_embed 'dimensions' lists enum values in description (2048|1536|...) but not as formal enum constraint. ms_chat 'max_tokens' unbounded, no min/max. ms_rerank 'top_n' unbounded. ms_image 'size' format unclear ('e.g. 1024*1024', is it '1024x1024'?). LLMs cannot validate without formal constraints.
Optional parameters lack guidance on defaults and fallback behavior. ms_chat 'model' defaults to configured default, but what if none is configured? ms_image 'size' optional, what is the default? ms_video 'wait' defaults to false, but description says 'default false' redundantly. No guidance on when to omit vs. provide.
Destructive/async operations lack confirmation or dry-run patterns. ms_image, ms_video, ms_speak, ms_files (delete), ms_batch (cancel), ms_tune (delete, cancel) modify state but no confirmation step. ms_video, ms_transcribe are async but no clear polling guidance beyond 'use ms_task'. No idempotency guarantees documented.