msexchange-mcp
Version:
MCP server for Microsoft Exchange/Outlook email operations via Microsoft Graph API
63 lines (60 loc) • 2.38 kB
JavaScript
import { z } from 'zod';
import { MailService } from '../mail/mailService.js';
import accountsConfig from '../config/accountsLoader.js';
export const listFoldersTool = {
name: 'list_folders',
description: `List all mail folders for a user.
Shows folder structure including:
- Folder IDs (needed for other operations)
- Folder names and hierarchy
- Unread and total item counts
- Child folder information
Use this to:
- Find folder IDs for move_email operations
- Check existing folder structure before creating new ones
- Monitor unread counts across folders
- Understand mailbox organization
The response includes standard folders (Inbox, Sent, Drafts, etc.) and any custom folders.`,
parameters: z.object({
user_id: z.string().describe('The user ID or email address'),
}),
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 folders = await mailService.listFolders();
return {
content: [
{
type: 'text',
text: JSON.stringify({
folders: folders.map(folder => ({
id: folder.id,
displayName: folder.displayName,
parentFolderId: folder.parentFolderId,
childFolderCount: folder.childFolderCount,
unreadItemCount: folder.unreadItemCount,
totalItemCount: folder.totalItemCount,
})),
count: folders.length,
}, null, 2),
},
],
};
}
catch (error) {
return {
content: [
{
type: 'text',
text: `Error listing folders: ${error instanceof Error ? error.message : 'Unknown error'}`,
},
],
};
}
},
};
//# sourceMappingURL=listFolders.js.map