UNPKG

mcp-quiz-server

Version:

🧠 AI-Powered Quiz Management via Model Context Protocol (MCP) - Create, manage, and take quizzes directly from VS Code, Claude, and other AI agents.

87 lines • 2.94 kB
export class QuizService { static getInstance() { if (!QuizService.instance) { QuizService.instance = new QuizService(); } return QuizService.instance; } async getAllQuizzes() { try { const response = await fetch('/quiz/all'); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (Array.isArray(data)) { return data; } else if (data.quizzes && Array.isArray(data.quizzes)) { return data.quizzes; } else { console.error('Unexpected API response format:', data); throw new Error('Invalid response format from server'); } } catch (error) { console.error('Failed to fetch quizzes:', error); throw new Error('Failed to load quizzes'); } } async getQuizById(id) { try { const response = await fetch(`/quiz/${id}`); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } const data = await response.json(); if (data.quiz) { return data.quiz; } else if (data.id) { return data; } else { console.error('Unexpected API response format for quiz:', data); throw new Error('Invalid response format from server'); } } catch (error) { console.error(`Failed to fetch quiz ${id}:`, error); throw new Error('Failed to load quiz'); } } async submitQuiz(quizId, answers) { try { const response = await fetch('/quiz/submit', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ quizId, answers }), }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error('Failed to submit quiz:', error); throw new Error('Failed to submit quiz'); } } async searchQuizzes(term) { try { const response = await fetch(`/quiz/search/${encodeURIComponent(term)}`); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error('Failed to search quizzes:', error); throw new Error('Failed to search quizzes'); } } } //# sourceMappingURL=QuizService.js.map