MCP (Model Context Protocol) plugin for Porter downloader, enabling AI clients (ZCode, Claude, Cursor) to drive downloads via tool calls. Provides 7 download management tools with async task handling, resume capability, and remote zip extraction.
Porter's MCP tools have detailed descriptions in Chinese but critical structural gaps. All 7 tools have descriptions (good), but parameter schemas are inferred from the Python validation script rather than visible in actual Go source code. Input schemas show types and descriptions for most parameters, but output schemas are completely undocumented. Tool naming follows verb_noun pattern (download_start, download_wait, list_tasks) which is appropriate. However, descriptions are overly technical and assume domain knowledge of download protocols, mirrors, and digest formats, not optimized for LLM selection. No tool annotations (readOnlyHint, destructiveHint) despite clear risk classifications. Error handling guidance is absent from descriptions.
取消运行中的任务。任务进入 paused 状态,已下载部分保留可续传。
探测 URL 不下载:返回文件大小、Range 支持、服务端建议文件名、重定向最终地址。支持 http/https/ftp/ftps/file 协议。
异步启动下载任务,立即返回 task_id。支持镜像候选、慢速保护、停滞超时、无限重试、按域放行、条件请求增量同步、多镜像混源分片、外部期望摘要校验。
查询任务进度与状态。可查单个任务或全部任务。返回状态、已下载字节、总大小、速度、错误信息、校验和。
阻塞等待任务至终态(done/failed/paused),返回最终状态与校验和。支持超时控制。
列出所有任务(含历史)。重启后可恢复历史任务状态。
远端 zip 归档按需提取:只读中央目录,只为选中成员下载压缩区段。支持列表模式(不解压)与选择性提取。
Output schemas completely undocumented. No tool returns a documented schema, LLMs cannot predict what fields to expect from download_start (task_id?), download_status (progress object?), or zip_extract (file list?). This forces agents to guess and breaks tool chaining.
Descriptions are technical jargon-heavy and assume deep knowledge of download protocols, mirror switching, digest formats (SRI, algo:hex), and FTP/FTPS. Phrases like '字节级续传', '慢速保护', '停滞超时' are domain-specific and not LLM-optimized. Descriptions should explain WHEN to use each tool and WHAT it returns in plain language.
No tool annotations despite explicit risk classifications in source. download_start and zip_extract are marked WRITE (destructive), download_cancel is REVERSIBLE, others are READ_ONLY. MCP spec supports readOnlyHint, destructiveHint, idempotentHint, none are used. LLMs cannot infer safety properties.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2025-06-18+ | v2 |
list_tasks has empty input schema ({}). No description of what it returns (all tasks? filtered by status?). No pagination guidance despite 'contains history' implying potentially large result sets.
Error handling guidance absent. Descriptions do not explain what errors are retryable (network timeout vs invalid URL), what the LLM should do on failure, or how to recover. E.g., download_start says 'fail-closed' for digest mismatch but does not explain the consequence or recovery path.