Skip to main content
Glama
Tencent

Tencent Cloud COS MCP Server

Official
by Tencent

putObjectSourceUrl

Download files from a specified URL and upload them directly to a Tencent Cloud COS storage bucket, specifying the target directory and file name.

Instructions

通过 url下载文件并将文件上传到存储桶

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileNameNo文件名 (存在存储桶里的名称)
sourceUrlYes可下载的文件 url
targetDirNo目标目录 (存在存储桶的哪个目录)

Implementation Reference

  • Core implementation of putObjectSourceUrl: validates params, downloads file stream from sourceUrl using axios, generates filename if missing, builds COS key, pipes stream to COS putObject, returns structured success/error response.
    async uploadFileSourceUrl(params: UploadFileParams) { // 验证并解析参数 const validParams = UploadFileParamsSchema.parse(params); const { targetDir = '', fileName, sourceUrl } = validParams; try { const response = await axios({ method: 'get', url: sourceUrl, responseType: 'stream' }); const actualFileName = fileName ? fileName : generateOutPutFileId(''); const cosPath = this.buildCosPath(actualFileName, targetDir); const req = response.data; const passThrough = new PassThrough(); const result = await this.cos.putObject({ Bucket: this.bucket, Region:this.region, Key: cosPath, Body: req.pipe(passThrough), }); return { isSuccess: true, message: '上传成功', data: result, }; } catch (error) { return { isSuccess: false, message: '上传失败', data: error, }; } }
  • src/server.ts:221-248 (registration)
    Registers the 'putObjectSourceUrl' tool in the MCP server, defines input schema with zod validators, and delegates execution to CosService.uploadFileSourceUrl, formatting response for MCP.
    server.tool( 'putObjectSourceUrl', '通过 url下载文件并将文件上传到存储桶', { sourceUrl: z.string().describe('可下载的文件 url'), fileName: z.string().optional().describe('文件名 (存在存储桶里的名称)'), targetDir: z .string() .optional() .describe('目标目录 (存在存储桶的哪个目录)'), }, async ({ sourceUrl, fileName, targetDir}) => { const res = await COSInstance.uploadFileSourceUrl({ targetDir, fileName, sourceUrl, }); return { content: [ { type: 'text', text: JSON.stringify(res.data, null, 2), }, ], isError: !res.isSuccess, }; }, );
  • Zod schema definition for UploadFileParams type, used to validate inputs in uploadFileSourceUrl and other upload methods (note: sourceUrl made optional here for reuse).
    export const UploadFileParamsSchema = z.object({ filePath: z.string().optional(), targetDir: z.string().optional(), fileName: z.string().optional(), sourceUrl: z.string().optional() }); export type UploadFileParams = z.infer<typeof UploadFileParamsSchema>;
  • Helper method to construct the full COS object key by combining targetDir (normalized) and fileName.
    private buildCosPath(fileName: string, targetDir?: string): string { if (!targetDir) { return fileName; } // 规范化目标目录:移除头尾斜杠 const normalizedDir = targetDir.replace(/^\/+|\/+$/g, ''); return normalizedDir ? `${normalizedDir}/${fileName}` : fileName; }

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/Tencent/cos-mcp'

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