MCP-EdTech / src /mcp_core /protocol.py
Engmhabib's picture
Upload 30 files
942216e verified
Raw History Blame Contribute Delete
5.3 kB
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
}
}