get_conversation_history
Retrieve message history for a conversation using the conversation ID to review past interactions and maintain context.
Instructions
Retrieve message history for a conversation
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| conversationId | Yes | Conversation ID | |
| limit | No | Maximum number of messages to return |
Implementation Reference
- src/server/mcp-server.ts:495-550 (handler)The handler function for the get_conversation_history tool. Validates arguments, checks user access, retrieves conversation state, slices history if limit specified, formats messages, logs audit, and returns success response./** * Handle get_conversation_history tool with user context */ 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)}` ); } }
- src/server/tool-schemas.ts:36-43 (schema)Zod schema defining input validation for get_conversation_history: required conversationId string and optional positive integer limit.* 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>;
- src/server/mcp-server.ts:161-178 (registration)Tool registration in the MCP ListToolsRequestHandler, specifying name, description, and JSON schema for inputs.{ 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'], }, },