list_objects
Retrieve a list of objects within a MinIO storage bucket, optionally filtering by prefix and enabling recursive search for organized file management.
Instructions
列出存储桶中的对象
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bucketName | Yes | 存储桶名称 | |
| prefix | No | 对象名前缀(可选) | |
| recursive | No | 是否递归列出 |
Implementation Reference
- src/index.ts:395-413 (handler)MCP tool handler for 'list_objects': validates arguments with Zod schema, lists objects using MinIO client, and returns formatted text response.case 'list_objects': { const { bucketName, prefix, recursive } = z.object({ bucketName: z.string(), prefix: z.string().optional(), recursive: z.boolean().default(false) }).parse(args); const objects = await this.minioClient.listObjects(bucketName, prefix, recursive); return { content: [ { type: 'text', text: `存储桶 ${bucketName} 中找到 ${objects.length} 个对象:\n${objects.map(obj => `- ${obj.name} (大小: ${obj.size} 字节, 修改时间: ${obj.lastModified.toISOString()})` ).join('\n')}` } ] }; }
- src/index.ts:122-134 (registration)Registration of 'list_objects' tool in ListTools response, including name, description, and JSON input schema.{ name: 'list_objects', description: '列出存储桶中的对象', inputSchema: { type: 'object', properties: { bucketName: { type: 'string', description: '存储桶名称' }, prefix: { type: 'string', description: '对象名前缀(可选)' }, recursive: { type: 'boolean', description: '是否递归列出', default: false } }, required: ['bucketName'] } },
- src/minio-client.ts:81-101 (helper)Helper function implementing object listing by streaming from MinIO client and mapping to ObjectInfo objects.async listObjects(bucketName: string, prefix?: string, recursive: boolean = false): Promise<ObjectInfo[]> { this.ensureConnected(); return new Promise((resolve, reject) => { const objects: ObjectInfo[] = []; const stream = this.client!.listObjects(bucketName, prefix, recursive); stream.on('data', (obj: any) => { objects.push({ name: obj.name, size: obj.size, lastModified: obj.lastModified, etag: obj.etag, isDir: obj.name.endsWith('/') }); }); stream.on('error', reject); stream.on('end', () => resolve(objects)); }); }
- src/types.ts:22-29 (schema)TypeScript interface defining the structure of ObjectInfo used in listObjects response.export interface ObjectInfo { name: string; size: number; lastModified: Date; etag: string; contentType?: string; isDir: boolean; }