teams-mcp-server
Version:
Microsoft Teams MCP server with direct messaging support
74 lines (73 loc) • 2.98 kB
JavaScript
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}`
}]
};
}
}
};
}