MCP-EdTech / src /mcp_core /protocol.py
Engmhabib's picture
Upload 30 files
942216e verified
from enum import Enum
from typing import Dict, List, Any, Optional, Union, Literal
from pydantic import BaseModel, Field
class InteractionType(str, Enum):
TEXT = "text"
QUESTION = "question"
ASSESSMENT = "assessment"
EXPLANATION = "explanation"
FEEDBACK = "feedback"
SUMMARY = "summary"
class ContentFormat(str, Enum):
TEXT = "text"
MARKDOWN = "markdown"
HTML = "html"
JSON = "json"
class EducationalLevel(str, Enum):
ELEMENTARY = "elementary"
MIDDLE_SCHOOL = "middle_school"
HIGH_SCHOOL = "high_school"
UNDERGRADUATE = "undergraduate"
GRADUATE = "graduate"
PROFESSIONAL = "professional"
class MCPRequest(BaseModel):
context_id: Optional[str] = Field(None)
interaction_type: InteractionType = Field(...)
content: Dict[str, Any] = Field(...)
format: ContentFormat = Field(ContentFormat.TEXT)
metadata: Dict[str, Any] = Field(default_factory=dict)
class MCPResponse(BaseModel):
context_id: str = Field(...)
interaction_type: InteractionType = Field(...)
content: Dict[str, Any] = Field(...)
format: ContentFormat = Field(...)
metadata: Dict[str, Any] = Field(default_factory=dict)
model_info: Dict[str, Any] = Field(default_factory=dict)
class TextRequest(MCPRequest):
interaction_type: Literal[InteractionType.TEXT] = Field(InteractionType.TEXT)
content: Dict[str, Any] = Field(...)
class TextResponse(MCPResponse):
interaction_type: Literal[InteractionType.TEXT] = Field(InteractionType.TEXT)
content: Dict[str, Any] = Field(...)
class QuestionRequest(MCPRequest):
interaction_type: Literal[InteractionType.QUESTION] = Field(InteractionType.QUESTION)
content: Dict[str, Any] = Field(...)
class QuestionResponse(MCPResponse):
interaction_type: Literal[InteractionType.QUESTION] = Field(InteractionType.QUESTION)
content: Dict[str, Any] = Field(...)
class AssessmentRequest(MCPRequest):
interaction_type: Literal[InteractionType.ASSESSMENT] = Field(InteractionType.ASSESSMENT)
content: Dict[str, Any] = Field(...)
class AssessmentResponse(MCPResponse):
interaction_type: Literal[InteractionType.ASSESSMENT] = Field(InteractionType.ASSESSMENT)
content: Dict[str, Any] = Field(...)
class ExplanationRequest(MCPRequest):
interaction_type: Literal[InteractionType.EXPLANATION] = Field(InteractionType.EXPLANATION)
content: Dict[str, Any] = Field(...)
class ExplanationResponse(MCPResponse):
interaction_type: Literal[InteractionType.EXPLANATION] = Field(InteractionType.EXPLANATION)
content: Dict[str, Any] = Field(...)
class FeedbackRequest(MCPRequest):
interaction_type: Literal[InteractionType.FEEDBACK] = Field(InteractionType.FEEDBACK)
content: Dict[str, Any] = Field(...)
class FeedbackResponse(MCPResponse):
interaction_type: Literal[InteractionType.FEEDBACK] = Field(InteractionType.FEEDBACK)
content: Dict[str, Any] = Field(...)
class SummaryRequest(MCPRequest):
interaction_type: Literal[InteractionType.SUMMARY] = Field(InteractionType.SUMMARY)
content: Dict[str, Any] = Field(...)
class SummaryResponse(MCPResponse):
interaction_type: Literal[InteractionType.SUMMARY] = Field(InteractionType.SUMMARY)
content: Dict[str, Any] = Field(...)
class LearningObjective(BaseModel):
id: str = Field(...)
description: str = Field(...)
taxonomy_level: str = Field(...)
subject_area: str = Field(...)
prerequisites: List[str] = Field(default_factory=list)
class StudentProfile(BaseModel):
id: str = Field(...)
name: str = Field(...)
educational_level: EducationalLevel = Field(...)
learning_style: str = Field(None)
interests: List[str] = Field(default_factory=list)
strengths: List[str] = Field(default_factory=list)
areas_for_improvement: List[str] = Field(default_factory=list)
completed_objectives: List[str] = Field(default_factory=list)
current_objectives: List[str] = Field(default_factory=list)
class ContentAdaptationRequest(MCPRequest):
interaction_type: Literal[InteractionType.TEXT] = Field(InteractionType.TEXT)
content: Dict[str, Any] = Field(...)
student_profile: StudentProfile = Field(...)
learning_objectives: List[LearningObjective] = Field(...)
class ContentAdaptationResponse(MCPResponse):
interaction_type: Literal[InteractionType.TEXT] = Field(InteractionType.TEXT)
content: Dict[str, Any] = Field(...)
adaptations_applied: List[str] = Field(...)
recommended_activities: List[Dict[str, Any]] = Field(default_factory=list)
MCP_VERSION = "1.0.0"
MCP_SPEC_URL = "https://example.com/mcp-specification"
MCP_CAPABILITIES = {
"version": MCP_VERSION,
"supported_interaction_types": [e.value for e in InteractionType],
"supported_content_formats": [e.value for e in ContentFormat],
"supported_educational_levels": [e.value for e in EducationalLevel],
"features": {
"context_management": True,
"state_persistence": True,
"content_adaptation": True,
"assessment": True,
"feedback": True,
"learning_path_generation": True
}
}