UNPKG

teams-mcp-server

Version:

Microsoft Teams MCP server with direct messaging support

74 lines (73 loc) 2.98 kB
export function createGetMessagesTool(teamsClient) { return { name: 'teams_get_messages', description: 'Retrieve messages from a Teams chat', inputSchema: { type: 'object', properties: { chatId: { type: 'string', description: 'ID of the chat to retrieve messages from' }, limit: { type: 'number', description: 'Maximum number of messages to return (1-50)', minimum: 1, maximum: 50, default: 20 }, since: { type: 'string', description: 'ISO 8601 datetime to retrieve messages after (e.g., "2024-01-01T00:00:00Z")' } }, required: ['chatId'] }, handler: async (args) => { try { await teamsClient.ensureAuthenticated(); const limit = args.limit || 20; const since = args.since ? new Date(args.since) : undefined; if (since && isNaN(since.getTime())) { return { content: [{ type: 'text', text: 'Invalid date format. Please use ISO 8601 format (e.g., "2024-01-01T00:00:00Z")' }] }; } const messages = await teamsClient.getMessages(args.chatId, limit, since); const formattedMessages = messages.map(msg => ({ id: msg.id, from: msg.from?.user?.displayName || 'Unknown', content: msg.body.content, contentType: msg.body.contentType, sent: new Date(msg.createdDateTime).toLocaleString(), edited: msg.lastModifiedDateTime ? new Date(msg.lastModifiedDateTime).toLocaleString() : null, deleted: msg.deletedDateTime ? new Date(msg.deletedDateTime).toLocaleString() : null, importance: msg.importance })); return { content: [{ type: 'text', text: JSON.stringify({ messages: formattedMessages, count: formattedMessages.length, chatId: args.chatId }, null, 2) }] }; } catch (error) { return { content: [{ type: 'text', text: `Failed to retrieve messages: ${error.message}` }] }; } } }; }