Skip to main content
Glama

putObject

Upload local files to cloud storage buckets by specifying file paths, target directories, and custom filenames for organized cloud file management.

Instructions

上传本地文件到存储桶

Input Schema

NameRequiredDescriptionDefault
filePathYes文件路径 (包含文件名)
fileNameNo文件名 (存在存储桶里的名称)
targetDirNo目标目录 (存在存储桶的哪个目录)

Input Schema (JSON Schema)

{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "fileName": { "description": "文件名 (存在存储桶里的名称)", "type": "string" }, "filePath": { "description": "文件路径 (包含文件名)", "type": "string" }, "targetDir": { "description": "目标目录 (存在存储桶的哪个目录)", "type": "string" } }, "required": [ "filePath" ], "type": "object" }

Implementation Reference

  • Core handler logic for uploading a local file to COS bucket: validates parameters, checks file existence, builds object key, performs upload via cos.uploadFile, handles errors.
    async uploadFile(params: UploadFileParams) { // 验证并解析参数 const validParams = UploadFileParamsSchema.parse(params); const { filePath, targetDir = '', fileName } = validParams; try { // 检查文件是否存在 if (!filePath || !fs.existsSync(filePath)) { return { isSuccess: false, message: '此路径上文件不存在', data: '此路径上文件不存在: ' + filePath, }; } // 确定文件名 const actualFileName = fileName || path.basename(filePath); // 构建COS路径 const cosPath = this.buildCosPath(actualFileName, targetDir); // 上传文件 const cosParams: COS.UploadFileParams = { Bucket: this.bucket, Region: this.region, Key: cosPath, FilePath: filePath, }; const result = await this.cos.uploadFile(cosParams); return { isSuccess: true, message: '上传成功', data: result, }; } catch (error) { return { isSuccess: false, message: '上传失败', data: error, }; } }
  • src/server.ts:84-111 (registration)
    Registers the 'putObject' MCP tool, defines input schema with zod, and provides thin handler that delegates to CosService.uploadFile and formats response.
    server.tool( 'putObject', '上传本地文件到存储桶', { filePath: z.string().describe('文件路径 (包含文件名)'), fileName: z.string().optional().describe('文件名 (存在存储桶里的名称)'), targetDir: z .string() .optional() .describe('目标目录 (存在存储桶的哪个目录)'), }, async ({ fileName, filePath, targetDir }) => { const res = await COSInstance.uploadFile({ fileName, filePath, targetDir, }); return { content: [ { type: 'text', text: JSON.stringify(res.data, null, 2), }, ], isError: !res.isSuccess, }; }, );
  • Zod schema definition for upload file parameters, used for validation inside the uploadFile handler.
    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 function to construct the full COS object key/path from filename and optional target directory.
    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/xiaomizhoubaobei/MCP'

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