Skip to main content
Glama
haasonsaas

Deep Code Reasoning MCP Server

by haasonsaas

finalize_conversation

End a conversation session and retrieve a tailored summary in formats like detailed, concise, or actionable, aiding in final code analysis and decision-making.

Instructions

Complete the conversation and get final analysis results

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
session_idYesID of the conversation session
summary_formatNoFormat for the final summary

Implementation Reference

  • Zod schema definition for validating the input parameters of the finalize_conversation tool (session_id required, summary_format optional).
    const FinalizeConversationSchema = z.object({
      session_id: z.string(),
      summary_format: z.enum(['detailed', 'concise', 'actionable']).optional(),
    });
  • src/index.ts:384-402 (registration)
    Registration of the finalize_conversation tool in the MCP server's list of tools, including name, description, and input schema.
    {
      name: 'finalize_conversation',
      description: 'Complete the conversation and get final analysis results',
      inputSchema: {
        type: 'object',
        properties: {
          session_id: {
            type: 'string',
            description: 'ID of the conversation session',
          },
          summary_format: {
            type: 'string',
            enum: ['detailed', 'concise', 'actionable'],
            description: 'Format for the final summary',
          },
        },
        required: ['session_id'],
      },
    },
  • MCP server request handler for call_tool requests: parses args with schema, delegates to DeepCodeReasonerV2.finalizeConversation, returns result as text content.
    case 'finalize_conversation': {
      const parsed = FinalizeConversationSchema.parse(args);
      const result = await deepReasoner.finalizeConversation(
        parsed.session_id,
        parsed.summary_format,
      );
    
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify(result, null, 2),
          },
        ],
      };
    }
  • Intermediate handler in DeepCodeReasonerV2: acquires conversation lock, validates session, delegates to ConversationalGeminiService.finalizeConversation, merges results with conversation metadata.
    async finalizeConversation(
      sessionId: string,
      summaryFormat?: 'detailed' | 'concise' | 'actionable',
    ): Promise<DeepAnalysisResult> {
      // Acquire lock before processing
      const lockAcquired = this.conversationManager.acquireLock(sessionId);
      if (!lockAcquired) {
        throw new ConversationLockedError(sessionId);
      }
    
      try {
        // Validate session
        const session = this.conversationManager.getSession(sessionId);
        if (!session) {
          throw new SessionNotFoundError(sessionId);
        }
    
        // Get final analysis from Gemini
        const result = await this.conversationalGemini.finalizeConversation(
          sessionId,
          summaryFormat || 'detailed',
        );
    
        // Extract additional insights from conversation manager
        const conversationResults = this.conversationManager.extractResults(sessionId);
    
        // Merge results
        return {
          ...result,
          metadata: {
            ...result.metadata,
            ...conversationResults.metadata,
          },
        };
      } catch (error) {
        console.error('Failed to finalize conversation:', error);
        throw error;
      } finally {
        // Always release lock
        this.conversationManager.releaseLock(sessionId);
      }
    }
  • Core implementation: retrieves Gemini chat session, sends synthesis prompt for final summary based on conversation history, parses response into structured DeepAnalysisResult, cleans up session.
    async finalizeConversation(
      sessionId: string,
      summaryFormat: 'detailed' | 'concise' | 'actionable' = 'detailed',
    ): Promise<DeepAnalysisResult> {
      const chat = this.activeSessions.get(sessionId);
      const context = this.sessionContexts.get(sessionId);
    
      if (!chat || !context) {
        throw new SessionNotFoundError(sessionId);
      }
    
      // Request final synthesis
      const synthesisPrompt = this.buildSynthesisPrompt(summaryFormat);
      const result = await chat.sendMessage(synthesisPrompt);
      const finalAnalysis = result.response.text();
    
      // Parse and structure the final results
      const structuredResult = this.parseConversationalAnalysis(
        finalAnalysis,
        context.claudeContext,
      );
    
      // Clean up session
      this.activeSessions.delete(sessionId);
      this.sessionContexts.delete(sessionId);
    
      return structuredResult;
    }

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/haasonsaas/deep-code-reasoning-mcp'

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