Skip to main content
Glama
bradcstevens

Copilot Studio Agent Direct Line MCP Server

by bradcstevens

get_conversation_history

Retrieve message history for a specific conversation to review previous interactions and maintain context.

Instructions

Retrieve message history for a conversation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
conversationIdYesConversation ID
limitNoMaximum number of messages to return

Implementation Reference

  • The primary handler function for the 'get_conversation_history' tool. Validates input using the schema, checks user permissions, retrieves conversation state from the manager, slices history if limit provided, formats messages, logs audit, and returns structured response.
    private async handleGetConversationHistory( args: Record<string, unknown>, userContext?: UserContext ) { const { conversationId, limit } = validateToolArgs(GetConversationHistoryArgsSchema, args); // Validate permissions if user context exists if (userContext) { this.validateUserConversationAccess(userContext.userId, conversationId); } try { const convState = this.conversationManager.getConversation(conversationId); if (!convState) { throw new Error(`Conversation ${conversationId} not found or expired`); } let history = convState.messageHistory; if (limit && limit > 0) { history = history.slice(-limit); } const formattedHistory = history.map((activity) => ({ id: activity.id, type: activity.type, timestamp: activity.timestamp, from: activity.from, text: activity.text, attachments: activity.attachments, })); // Audit log this.logAudit({ timestamp: Date.now(), userId: userContext?.userId, action: 'get_conversation_history', conversationId, details: { messageCount: formattedHistory.length }, }); return createSuccessResponse({ conversationId, messageCount: formattedHistory.length, totalMessages: convState.messageHistory.length, messages: formattedHistory, }); } catch (error) { throw new Error( `Failed to get conversation history: ${error instanceof Error ? error.message : String(error)}` ); } }
  • Zod schema defining input arguments for the tool: required conversationId string and optional positive integer limit. Used for validation in the handler.
    /** * Schema for get_conversation_history tool arguments */ export const GetConversationHistoryArgsSchema = z.object({ conversationId: z.string().min(1, 'Conversation ID is required'), limit: z.number().int().positive().optional(), }); export type GetConversationHistoryArgs = z.infer<typeof GetConversationHistoryArgsSchema>;
  • Tool registration in the ListToolsRequestSchema handler for stdio transport, providing name, description, and JSON input schema.
    { name: 'get_conversation_history', description: 'Retrieve message history for a conversation', inputSchema: { type: 'object', properties: { conversationId: { type: 'string', description: 'Conversation ID', }, limit: { type: 'number', description: 'Maximum number of messages to return', }, }, required: ['conversationId'], }, },
  • Tool registration in the HTTP 'tools/list' handler, providing name, description, and JSON input schema.
    { name: 'get_conversation_history', description: 'Retrieve message history for a conversation', inputSchema: { type: 'object', properties: { conversationId: { type: 'string', description: 'Conversation ID', }, limit: { type: 'number', description: 'Maximum number of messages to return', }, }, required: ['conversationId'], }, },

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/bradcstevens/copilot-studio-agent-direct-line-mcp'

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