delete_file
Remove files from storage systems by specifying the file key or name to permanently delete them.
Instructions
Delete a file
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The file key/name to delete |
Implementation Reference
- src/index.ts:200-222 (handler)MCP tool handler for 'delete_file': extracts the file key from arguments, logs the operation, delegates deletion to FileStorage.delete(), and returns a JSON response indicating success or if the file was not found.case 'delete_file': { const { key } = args as { key: string }; logger.info('Tool request received', { operation: 'tool:delete', toolName: 'delete_file', key, requestId }); const deleted = await storage.delete(key, requestId); return { content: [{ type: 'text', text: JSON.stringify({ success: deleted, message: deleted ? `File '${key}' deleted successfully` : `File '${key}' not found`, key }, null, 2) }] }; }
- src/index.ts:137-150 (schema)Input schema definition for the 'delete_file' tool, specifying a required 'key' string parameter, provided in the ListTools response.{ name: 'delete_file', description: 'Delete a file', inputSchema: { type: 'object', properties: { key: { type: 'string', description: 'The file key/name to delete', }, }, required: ['key'], }, },
- src/storage.ts:130-151 (helper)Core implementation of file deletion in FileStorage class: acquires a lock for concurrency safety, computes safe file path, uses fs.unlink to delete the file, handles not-found gracefully by returning false, with comprehensive logging.async delete(key: string, requestId: string): Promise<boolean> { const releaseLock = await this.acquireLock(key); const filePath = this.getFilePath(key); try { logger.debug('Deleting file', { operation: 'delete', key, filePath, requestId }); await fs.unlink(filePath); logger.info('File deleted successfully', { operation: 'delete', key, requestId }); return true; } catch (error) { if ((error as NodeJS.ErrnoException).code === 'ENOENT') { logger.warn('File not found for deletion', { operation: 'delete', key, requestId }); return false; } logger.error('Failed to delete file', error as Error, { operation: 'delete', key, requestId }); throw error; } finally { releaseLock(); } }
- src/index.ts:116-167 (registration)Registration of all tools including 'delete_file' via the ListToolsRequestSchema handler, which returns the tool list with schemas.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: 'write_file', description: 'Write content to a file', inputSchema: { type: 'object', properties: { key: { type: 'string', description: 'The file key/name', }, content: { type: 'string', description: 'The content to write', }, }, required: ['key', 'content'], }, }, { name: 'delete_file', description: 'Delete a file', inputSchema: { type: 'object', properties: { key: { type: 'string', description: 'The file key/name to delete', }, }, required: ['key'], }, }, { name: 'search_files', description: 'Search for files containing specific text', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The text to search for', }, }, required: ['query'], }, }, ], }; });
- src/index-multimode.ts:209-231 (handler)Identical MCP tool handler for 'delete_file' in the multi-mode server variant.case 'delete_file': { const { key } = args as { key: string }; logger.info('Tool request received', { operation: 'tool:delete', toolName: 'delete_file', key, requestId }); const deleted = await storage.delete(key, requestId); return { content: [{ type: 'text', text: JSON.stringify({ success: deleted, message: deleted ? `File '${key}' deleted successfully` : `File '${key}' not found`, key }, null, 2) }] }; }