Skip to main content
Glama
Suixinlei

Tongyi Wanxiang MCP Server

by Suixinlei

wanx-t2v-video-generation-result

Retrieve text-to-video generation results using Alibaba Cloud's Tongyi Wanxiang API by providing a task ID for tracking and accessing the output.

Instructions

获取阿里云万相文生视频大模型的文生视频结果

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
task_idYes

Implementation Reference

  • src/index.ts:64-74 (registration)
    Registration of the 'wanx-t2v-video-generation-result' MCP tool, including description, input schema {task_id: string}, and a thin handler that calls the queryVideoTaskStatus helper.
    server.tool(
      "wanx-t2v-video-generation-result",
      "获取阿里云万相文生视频大模型的文生视频结果",
      { task_id: z.string() },
      async ({ task_id }) => {
        const result = await queryVideoTaskStatus(task_id);
        return {
          content: [{ type: "text", text: JSON.stringify(result) }],
        };
      }
    );
  • The handler function passed to server.tool, which executes the tool logic by querying the task status and returning the result in MCP format.
    async ({ task_id }) => {
      const result = await queryVideoTaskStatus(task_id);
      return {
        content: [{ type: "text", text: JSON.stringify(result) }],
      };
    }
  • Zod input schema validating the task_id parameter.
    { task_id: z.string() },
  • Core helper function that polls the DashScope API for video task status until 'SUCCEEDED', then returns the video_url, or throws on failure/timeout.
    export async function queryVideoTaskStatus(taskId: string) {
      const apiKey = config.api.apiKey;
      const url = `https://dashscope.aliyuncs.com/api/v1/tasks/${taskId}`;  
      const headers = {  
        'Authorization': `Bearer ${apiKey}`  
      };  
      let videoUrl = null;
      let retries = 0;
      const maxRetries = config.maxRetries; // 从配置文件中获取最大重试次数
      const pollingInterval = config.pollingInterval; // 从配置文件中获取轮询间隔
    
      while (retries < maxRetries) {
        try {
          const res = await axios.get(url, { headers });
          // res.data.output.task_status 可能为 INITIAL, RUNNING, SUCCEEDED, FAILED, CANCELLED  
          // res.data.output.video_url 只有在 SUCCEEDED 时有值  
          if (res.data.output.task_status === 'SUCCEEDED') {
            videoUrl = res.data.output.video_url;
            break; // 如果状态为 SUCCEEDED,则跳出循环
          } else if (res.data.output.task_status === 'FAILED' || res.data.output.task_status === 'CANCELLED') {
            throw res.data.output.task_status; // 如果状态为 FAILED 或 CANCELLED,则抛出错误
          }
          // 如果状态不是 SUCCEEDED,则等待一段时间后继续轮询
          await new Promise(resolve => setTimeout(resolve, pollingInterval));
          retries++;
        } catch (err: any) {
          throw err.response?.data || err.message;  
        }
      }
    
      if (!videoUrl) {
        throw new Error('视频生成任务超时或失败');
      }
    
      return videoUrl;
    }
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Suixinlei/tongyi-wanx-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server