UNPKG

msexchange-mcp

Version:

MCP server for Microsoft Exchange/Outlook email operations via Microsoft Graph API

69 lines 3.31 kB
import { z } from 'zod'; import { MailService } from '../mail/mailService.js'; import accountsConfig from '../config/accountsLoader.js'; export const listMailRulesTool = { name: 'list_mail_rules', description: 'List all mail rules configured for the user\'s mailbox', parameters: z.object({ user_id: z.string().describe('The user ID or email address'), include_disabled: z.boolean().optional().default(false).describe('Include disabled rules in the list'), }), execute: async (params) => { try { const account = accountsConfig.accounts.find(acc => acc.id === params.user_id || acc.email === params.user_id); if (!account) { throw new Error(`User not found: ${params.user_id}`); } const mailService = new MailService(account.email); const rules = await mailService.listMailRules(); // Filter rules based on enabled status if requested const filteredRules = params.include_disabled ? rules : rules.filter((rule) => rule.isEnabled); // Sort rules by sequence order const sortedRules = filteredRules.sort((a, b) => (a.sequence || 0) - (b.sequence || 0)); return { content: [ { type: 'text', text: JSON.stringify({ summary: { totalRules: rules.length, enabledRules: rules.filter((rule) => rule.isEnabled).length, disabledRules: rules.filter((rule) => !rule.isEnabled).length, showingDisabled: params.include_disabled, }, rules: sortedRules.map((rule) => ({ id: rule.id, displayName: rule.displayName, sequence: rule.sequence, isEnabled: rule.isEnabled, hasConditions: Object.keys(rule.conditions || {}).length > 0, hasActions: Object.keys(rule.actions || {}).length > 0, conditions: rule.conditions, actions: rule.actions, })), managementTips: [ 'Rules are executed in sequence order (lower numbers first)', 'Disabled rules are kept but not executed', 'Use modify_mail_rule to update existing rules', 'Test rule changes with a few emails before applying broadly' ] }, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Error listing mail rules: ${error instanceof Error ? error.message : 'Unknown error'}`, }, ], }; } }, }; //# sourceMappingURL=listMailRules.js.map