search_objects
Find objects in Huawei OBS buckets using filters like prefix, suffix, file type, size, and modification date to locate specific files.
Instructions
Search for objects in a bucket from the 'huawei_obs' source. Supports filtering by prefix, suffix, extensions, glob patterns, file size, and modification date.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bucket | Yes | The name of the bucket to search in | |
| prefix | No | Filter objects by key prefix | |
| suffix | No | Filter objects by key suffix | |
| extensions | No | Filter by file extensions (e.g., ['.jpg', '.png']) | |
| pattern | No | Glob pattern to match object keys (e.g., '*.txt', 'folder/**/file.json') | |
| min_size | No | Minimum file size in bytes | |
| max_size | No | Maximum file size in bytes | |
| modified_after | No | Filter objects modified after this date (ISO 8601 format) | |
| modified_before | No | Filter objects modified before this date (ISO 8601 format) | |
| max_results | No | Maximum number of results to return (default: 100) |
Implementation Reference
- src/server.ts:266-285 (handler)The handler function that executes the logic for the 'search_objects' tool. Currently a placeholder returning structured error info for unimplemented search.async (args) => { // TODO: Implement actual object search with storage provider return createToolSuccessResponse({ message: `Object search in '${sourceId}' not yet implemented`, bucket: args.bucket, filter: { prefix: args.prefix, suffix: args.suffix, extensions: args.extensions, pattern: args.pattern, min_size: args.min_size, max_size: args.max_size, modified_after: args.modified_after, modified_before: args.modified_before, max_results: args.max_results || 100, }, source_id: sourceId, note: "Storage provider integration pending", }); }
- src/server.ts:254-265 (schema)Input schema using Zod validation for the search_objects tool parameters.{ bucket: z.string().describe("The name of the bucket to search in"), prefix: z.string().optional().describe("Filter objects by key prefix"), suffix: z.string().optional().describe("Filter objects by key suffix"), extensions: z.array(z.string()).optional().describe("Filter by file extensions (e.g., ['.jpg', '.png'])"), pattern: z.string().optional().describe("Glob pattern to match object keys (e.g., '*.txt', 'folder/**/file.json')"), min_size: z.number().optional().describe("Minimum file size in bytes"), max_size: z.number().optional().describe("Maximum file size in bytes"), modified_after: z.string().optional().describe("Filter objects modified after this date (ISO 8601 format)"), modified_before: z.string().optional().describe("Filter objects modified before this date (ISO 8601 format)"), max_results: z.number().optional().describe("Maximum number of results to return (default: 100)"), },
- src/server.ts:251-286 (registration)Registration of the search_objects tool using McpServer.tool(), dynamically suffixed per storage source. Includes description, schema, and handler.server.tool( `search_objects${toolSuffix}`, `Search for objects in a bucket from the '${sourceId}' source. Supports filtering by prefix, suffix, extensions, glob patterns, file size, and modification date.`, { bucket: z.string().describe("The name of the bucket to search in"), prefix: z.string().optional().describe("Filter objects by key prefix"), suffix: z.string().optional().describe("Filter objects by key suffix"), extensions: z.array(z.string()).optional().describe("Filter by file extensions (e.g., ['.jpg', '.png'])"), pattern: z.string().optional().describe("Glob pattern to match object keys (e.g., '*.txt', 'folder/**/file.json')"), min_size: z.number().optional().describe("Minimum file size in bytes"), max_size: z.number().optional().describe("Maximum file size in bytes"), modified_after: z.string().optional().describe("Filter objects modified after this date (ISO 8601 format)"), modified_before: z.string().optional().describe("Filter objects modified before this date (ISO 8601 format)"), max_results: z.number().optional().describe("Maximum number of results to return (default: 100)"), }, async (args) => { // TODO: Implement actual object search with storage provider return createToolSuccessResponse({ message: `Object search in '${sourceId}' not yet implemented`, bucket: args.bucket, filter: { prefix: args.prefix, suffix: args.suffix, extensions: args.extensions, pattern: args.pattern, min_size: args.min_size, max_size: args.max_size, modified_after: args.modified_after, modified_before: args.modified_before, max_results: args.max_results || 100, }, source_id: sourceId, note: "Storage provider integration pending", }); } );
- src/types/config.ts:81-86 (schema)Type definition for SearchObjectsStorageToolConfig interface used in tool configuration.export interface SearchObjectsStorageToolConfig { name: "search_objects"; source: string; /** Maximum search results */ max_results?: number; }
- src/types/config.ts:260-260 (registration)Listing of 'search_objects' as a built-in storage tool name in BUILTIN_STORAGE_TOOLS array."search_objects",