Skip to main content
Glama
Racimy

iMail-mcp

delete_messages

Remove specific emails from your iCloud mailbox by providing message IDs to clean up your inbox and manage email storage.

Instructions

Delete messages from a mailbox

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
mailboxNoMailbox name (default: INBOX)INBOX
messageIdsYesArray of message IDs to delete

Implementation Reference

  • MCP tool handler for 'delete_messages' that extracts arguments, calls the iCloudMailClient.deleteMessages method, and returns the result as text content.
    case 'delete_messages': {
      if (!mailClient) {
        throw new McpError(
          ErrorCode.InvalidRequest,
          'iCloud Mail not configured. Please set ICLOUD_EMAIL and ICLOUD_APP_PASSWORD environment variables.'
        );
      }
    
      const messageIds = args?.messageIds as string[];
      const mailbox = (args?.mailbox as string) || 'INBOX';
    
      const result = await mailClient.deleteMessages(messageIds, mailbox);
    
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
    }
  • Input schema definition for the 'delete_messages' tool, specifying required messageIds array and optional mailbox.
    {
      name: 'delete_messages',
      description: 'Delete messages from a mailbox',
      inputSchema: {
        type: 'object',
        properties: {
          messageIds: {
            type: 'array',
            items: { type: 'string' },
            description: 'Array of message IDs to delete',
          },
          mailbox: {
            type: 'string',
            description: 'Mailbox name (default: INBOX)',
            default: 'INBOX',
          },
        },
        required: ['messageIds'],
      },
    },
  • Helper method in iCloudMailClient that deletes all messages in the specified mailbox by adding the \\Deleted flag and expunging (ignores provided messageIds).
    async deleteMessages(
      _messageIds: string[],
      mailbox: string = 'INBOX'
    ): Promise<{ status: string; message: string }> {
      return new Promise((resolve) => {
        this.imap.openBox(mailbox, false, (err: Error) => {
          if (err) {
            resolve({
              status: 'error',
              message: `Failed to open mailbox '${mailbox}': ${err.message}`,
            });
            return;
          }
    
          this.imap.search(['ALL'], (err: Error, results: number[]) => {
            if (err) {
              resolve({
                status: 'error',
                message: `Failed to search messages: ${err.message}`,
              });
              return;
            }
    
            if (!results || results.length === 0) {
              resolve({
                status: 'error',
                message: 'No messages found in mailbox',
              });
              return;
            }
    
            this.imap.addFlags(results, ['\\Deleted'], (err: Error) => {
              if (err) {
                resolve({
                  status: 'error',
                  message: `Failed to mark messages for deletion: ${err.message}`,
                });
                return;
              }
    
              this.imap.expunge((err: Error) => {
                if (err) {
                  resolve({
                    status: 'error',
                    message: `Failed to expunge deleted messages: ${err.message}`,
                  });
                  return;
                }
    
                resolve({
                  status: 'success',
                  message: `Successfully deleted ${results.length} messages from '${mailbox}'`,
                });
              });
            });
          });
        });
      });
    }

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/Racimy/iMail-mcp'

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