MCP server for Alibaba Cloud DashScope by three.ws — Qwen chat, embeddings, and model discovery using your own Alibaba Cloud API key.
Three well-defined tools with complete JSON schemas, clear descriptions (194 - 250 chars), and proper parameter typing. All tools include descriptions and input schemas. Tool annotations (readOnlyHint, idempotentHint, openWorldHint) are present and correct. Naming follows verb_noun convention (qwen_chat, qwen_embed, qwen_list_models). Sampling parameters (temperature, top_p, max_tokens) are properly constrained with min/max bounds. Output structure uses jsonResult() helper returning both text and structuredContent. Main gaps: no pagination support for list_models (could return hundreds of models), no error recovery guidance in descriptions, and output schemas are not formally documented in the tool definitions.
Chat completion with an Alibaba Cloud Qwen model via DashScope. Pass a list of role/content messages and get the assistant reply plus token usage. Defaults to qwen-plus; use qwen-max for highest quality, qwen-turbo for fastest/cheapest, or qwen-long for very large contexts.
Generate text embeddings using Alibaba Cloud text-embedding models. Returns a float vector per input string. Useful for semantic search, clustering, and RAG retrieval. Defaults to text-embedding-v3 (1024-dim).
List the models available on this DashScope account. Returns model ids, owners, and creation timestamps.
qwen_list_models lacks pagination and result limits. No limit, offset, or cursor parameters; no documented cap on returned models. Large account model lists could exhaust context window.
Output schemas not formally documented. Tool definitions return structured content via jsonResult() but do not declare outputSchema in the tool definition. LLMs cannot plan downstream tool calls without knowing response structure.
Error handling lacks recovery guidance. No descriptions of what errors can occur, when to retry, or what to do if a call fails (e.g., 'API key invalid', 'rate limited', 'model not found').
qwen_embed accepts both string and array inputs via oneOf, but handler normalizes to array internally. Description does not clarify return structure (single vector vs array of vectors) or how to interpret results.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2025-06-18+ | v2 |
Model parameter in qwen_chat and qwen_embed lacks enum constraint. Description lists options but free-form string invites hallucinated model names. Should use enum: ['qwen-max', 'qwen-plus', 'qwen-turbo', 'qwen-long', 'qwen-max-latest'].