Skip to main content
Glama

answer_question

Submit your answer (1-5) to the current MBTI test question and receive the next question or test progress. Requires complete session state.

Instructions

提交当前问题的答案(1-5分),并获取下一题或测试进度。需要传入完整的测试会话状态。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sessionYes测试会话状态,包含testType、answers数组和currentQuestionIndex
scoreYes对当前问题的回答(1=强烈不同意, 2=不同意, 3=中立, 4=同意, 5=强烈同意)

Implementation Reference

  • The core handler logic for the 'answer_question' tool. It processes the submitted score, updates the test session state, determines if the test is complete, and returns either the completion message or the next question.
    if (name === 'answer_question') {
      const session = args.session as TestSession;
      const score = args.score as number;
    
      const questions = session.testType === 'simplified'
        ? questionBank.simplified
        : questionBank.cognitive;
    
      const currentQuestion = questions[session.currentQuestionIndex];
    
      // Save answer
      const newAnswer: Answer = {
        questionId: currentQuestion.id,
        score,
      };
    
      const updatedSession: TestSession = {
        ...session,
        answers: [...session.answers, newAnswer],
        currentQuestionIndex: session.currentQuestionIndex + 1,
      };
    
      // Check if test is complete
      if (updatedSession.currentQuestionIndex >= questions.length) {
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify({
                message: '所有问题已回答完毕!',
                completed: true,
                progress: {
                  answered: updatedSession.answers.length,
                  total: questions.length,
                },
                session: updatedSession,
                nextStep: '请使用 calculate_mbti_result 工具计算你的MBTI类型',
              }, null, 2),
            },
          ],
        };
      }
    
      // Return next question
      const nextQuestion = questions[updatedSession.currentQuestionIndex];
      return {
        content: [
          {
            type: 'text',
            text: JSON.stringify({
              message: '答案已记录',
              progress: {
                answered: updatedSession.answers.length,
                total: questions.length,
              },
              nextQuestion: {
                index: updatedSession.currentQuestionIndex + 1,
                total: questions.length,
                question: nextQuestion,
              },
              session: updatedSession,
            }, null, 2),
          },
        ],
      };
    }
  • src/index.ts:43-77 (registration)
    Registration of the 'answer_question' tool in the ListTools response, including name, description, and input schema definition.
    {
      name: 'answer_question',
      description: '提交当前问题的答案(1-5分),并获取下一题或测试进度。需要传入完整的测试会话状态。',
      inputSchema: {
        type: 'object',
        properties: {
          session: {
            type: 'object',
            description: '测试会话状态,包含testType、answers数组和currentQuestionIndex',
            properties: {
              testType: { type: 'string' },
              answers: {
                type: 'array',
                items: {
                  type: 'object',
                  properties: {
                    questionId: { type: 'number' },
                    score: { type: 'number' },
                  },
                },
              },
              currentQuestionIndex: { type: 'number' },
            },
            required: ['testType', 'answers', 'currentQuestionIndex'],
          },
          score: {
            type: 'number',
            description: '对当前问题的回答(1=强烈不同意, 2=不同意, 3=中立, 4=同意, 5=强烈同意)',
            minimum: 1,
            maximum: 5,
          },
        },
        required: ['session', 'score'],
      },
    },
  • JSON schema definition for the input parameters of the 'answer_question' tool, specifying the structure of session and score.
    inputSchema: {
      type: 'object',
      properties: {
        session: {
          type: 'object',
          description: '测试会话状态,包含testType、answers数组和currentQuestionIndex',
          properties: {
            testType: { type: 'string' },
            answers: {
              type: 'array',
              items: {
                type: 'object',
                properties: {
                  questionId: { type: 'number' },
                  score: { type: 'number' },
                },
              },
            },
            currentQuestionIndex: { type: 'number' },
          },
          required: ['testType', 'answers', 'currentQuestionIndex'],
        },
        score: {
          type: 'number',
          description: '对当前问题的回答(1=强烈不同意, 2=不同意, 3=中立, 4=同意, 5=强烈同意)',
          minimum: 1,
          maximum: 5,
        },
      },
      required: ['session', 'score'],
    },
  • Type definitions supporting the tool, including TestSession, Answer, and QuestionBank used in the handler for type safety.
    export interface QuestionBank {
      simplified: Question[];
      cognitive: Question[];
    }
  • The questionBank data structure used by the handler to retrieve questions based on test type.
    export const questionBank: QuestionBank = {
      simplified: simplifiedQuestions,
      cognitive: cognitiveQuestions,
    };

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/wenyili/mbti-mcp'

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