SCHOOL101
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SCHOOL101Show my Canvas courses and recent assignments"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SCHOOL101 - Global MCP for Education
A unified Model Context Protocol (MCP) server that consolidates global educational platforms, enabling AI agents to seamlessly integrate with Canvas LMS, K-12 standards databases, assessment tools, and educational data analytics.
Deploy once. Integrate everywhere. Transform education through standardized AI orchestration.
๐ฏ Overview
SCHOOL101 solves the fragmentation problem in educational technology by providing a single, standardized MCP interface to dozens of EdTech platforms. Instead of building bespoke integrations for each tool, AI agents (Claude, GitHub Copilot, etc.) now query a unified gateway.
What It Does
๐ Canvas LMS Integration: Read courses, assignments, submissions; write grades with safeguards
๐ K-12 Standards Alignment: Query academic standards, align content with learning outcomes
๐งฎ Math Problem Solving: Step-by-step math tutoring with persistent progress
๐ Education Data Analytics: Analyze student progress, identify learning gaps, generate insights
๐ฌ Microsoft Learn Access: Search and fetch official Microsoft documentation
โฟ Accessibility & Special Ed: Differentiate content for diverse learning needs
๐ฏ Assessment Generation: Create standards-aligned quizzes and rubrics
๐ฅ Classroom Analytics: Cohort analysis, equity gap identification, intervention targeting
Related MCP server: RL-MCP
๐ Quick Start
Prerequisites
Node.js 18+
npm or yarn
Canvas API token (optional, for Canvas features)
Installation
# Clone the repository
git clone https://github.com/yourusername/school101-mcp.git
cd school101-mcp
# Install dependencies
npm install
# Create .env file
cp .env.example .envConfiguration (.env)
# Canvas LMS (optional)
CANVAS_API_TOKEN=your_canvas_token_here
CANVAS_INSTANCE_URL=https://yourschool.instructure.com
# Database
DATABASE_URL=postgresql://user:password@localhost:5432/school101
REDIS_URL=redis://localhost:6379
# API Keys
MICROSOFT_LEARN_API_KEY=your_key_here
SEMANTIC_SCHOLAR_API_KEY=your_key_here
WOLFRAM_API_KEY=your_key_here
# Server Configuration
PORT=3000
MCP_TRANSPORT=stdio # or 'http' or 'sse'
ENVIRONMENT=developmentStart the Server
# Development
npm run dev
# Production
npm run build
npm start๐ Integrated Educational Services
1. Canvas LMS (Instructure)
// List student courses
await client.tools.call('canvas_get_courses', {
api_token: process.env.CANVAS_API_TOKEN,
canvas_url: process.env.CANVAS_INSTANCE_URL,
include_enrollments: true
})
// Get assignments
await client.tools.call('canvas_get_assignments', {
api_token: token,
canvas_url: url,
course_id: '12345'
})
// Submit assignment (requires explicit confirm_write=true)
await client.tools.call('canvas_submit_assignment', {
api_token: token,
canvas_url: url,
course_id: '12345',
assignment_id: '67890',
submission_content: 'Student submission',
confirm_write: true // DESTRUCTIVE: requires approval
})2. K-12 Academic Standards
// Search Common Core standards
await client.tools.call('k12_standards_search', {
subject: 'mathematics',
grade_level: '5',
query: 'fractions and decimals',
standards_framework: 'common_core'
})
// Align content with standards
await client.tools.call('k12_align_content', {
content_title: 'Introduction to Fractions',
content_type: 'lesson',
standard_ids: ['CCSS.MATH.3.NF.A.1', 'CCSS.MATH.3.NF.A.2'],
grade_level: '3'
})3. Math Problem Solving
// Solve with step-by-step breakdown
await client.tools.call('math_solve_step_by_step', {
problem: 'Solve for x: 2x + 5 = 13',
problem_type: 'algebra',
show_work: true,
difficulty_level: 'intermediate'
})
// Generate practice problems
await client.tools.call('math_practice_generate', {
topic: 'quadratic_equations',
quantity: 10,
difficulty: 'hard',
student_id: 'STU_12345'
})4. Student Progress Tracking
// Track individual student progress
await client.tools.call('student_progress_track', {
student_id: 'STU_12345',
time_period: 'semester',
metrics: [
'assignment_completion',
'grade_trend',
'learning_gaps',
'mastery_level'
]
})
// Analyze entire cohort
await client.tools.call('cohort_analytics', {
course_id: 'COURSE_789',
cohort_type: 'grade_level',
analysis_type: [
'performance_distribution',
'engagement_patterns',
'equity_gaps',
'intervention_targets'
]
})5. Curriculum & Lesson Planning
// Search open educational resources
await client.tools.call('curriculum_search', {
query: 'photosynthesis',
subject: 'science',
grade_level: '6',
resource_type: 'lesson',
include_standards: true
})
// Generate complete lesson plan
await client.tools.call('lesson_plan_generate', {
topic: 'The Water Cycle',
grade_level: '5',
duration_minutes: 45,
standards: ['NGSS.5-ESS2-1'],
learning_styles: ['visual', 'kinesthetic']
})6. Assessment & Grading
// Generate standards-aligned assessment
await client.tools.call('assessment_generate', {
topic: 'mitochondria_function',
question_count: 15,
question_types: ['multiple_choice', 'short_answer'],
difficulty_curve: true,
bloom_level: 'analyze'
})
// Create grading rubric
await client.tools.call('rubric_create', {
rubric_title: 'Essay Writing Rubric',
criteria: [
{
criterion: 'Thesis Clarity',
levels: ['Beginning', 'Developing', 'Proficient', 'Advanced'],
points: [0, 5, 10, 15]
}
],
total_points: 100
})7. Special Education & Accessibility
// Differentiate content for learners with ADHD
await client.tools.call('differentiate_content', {
content: 'Long paragraph about photosynthesis...',
adaptations: [
'simplify_language',
'break_into_chunks',
'add_visuals'
],
learning_profile: 'ADHD'
})8. Microsoft Learn Integration
// Search Microsoft Learn
await client.tools.call('microsoft_learn_search', {
query: 'async/await in JavaScript',
language: 'javascript',
difficulty: 'intermediate'
})
// Fetch complete module
await client.tools.call('microsoft_learn_fetch_module', {
module_id: 'learn-module-12345',
include_exercises: true,
include_quiz: true
})๐๏ธ Architecture
System Overview
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ AI Agents โ
โ (Claude, Copilot, Custom Applications) โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
MCP Protocol (JSON-RPC)
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SCHOOL101 MCP Server (Node.js) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโ โ
โ โ Tool Layer โResource Layerโ Prompt Layer โ โ
โ โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Canvas โK-12 โ Math โ Assessment โ Analytics โ โ
โ โ Router โStandardsโ Solverโ Generator โEngine โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Authentication โAuthorization โRequest Validation โ โ
โ โ Row-Level Security โRate Limiting โAudit Logging โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโ
โ โ โ โ
โผ โผ โผ โผ
Canvas K-12 Standards Education Data Microsoft Learn
LMS API Knowledge Graph Analytics APIs Documentation
(REST) (GraphQL/REST) (PostgreSQL) (REST)Request Flow with Safety
User Query
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Authentication Check โ โโ User-bound OAuth 2.0
โ (User-specific token) โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผโโโโโผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Tool Analysis โ
โ Destructive? (write) โ
โโโโโโโโโโฌโโโโโโโโโโโโโโโโโ
โ
โผโโโโโผโโโโโโโโโโโโโโโโโโโโ
โ โ
(read-safe) (destructive)
โ โ
โผ โผ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Execute Tool โ โ Require confirm_write=true โ
โ Immediately โ โ AND human verification UI โ
โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ โ
โโโโโโโโโโโโโโฌโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโ
โ Log Audit Trail โ
โ Update Metrics โ
โโโโโโโโโโฌโโโโโโโโโโ
โ
โผ
Return Result๐ Security & Privacy
User-Bound Permissions
Every tool operation uses the authenticated user's credentials, never a global admin token.
// โ
CORRECT: User-bound OAuth
const result = await canvas.courses.list(user.oauth_token);
// โ WRONG: Global admin key
const result = await canvas.courses.list(process.env.GLOBAL_ADMIN_TOKEN);Destructive Operations Require Confirmation
// State-mutating operations must include explicit human approval
await client.tools.call('canvas_submit_assignment', {
// ... parameters ...
confirm_write: true // Required; triggers UI verification
})Row-Level Security (RLS)
Database policies ensure students can only access their own data.
-- Example PostgreSQL RLS policy
CREATE POLICY "Students see only own data"
ON student_records
USING (student_id = auth.uid());API Key Rotation
Canvas tokens rotate monthly via Postgres scheduler
All API keys encrypted in transit (HTTPS) and at rest
Audit logging for all API access
๐ Database Schema
PostgreSQL Tables
-- Students and profiles
CREATE TABLE students (
id UUID PRIMARY KEY,
canvas_id VARCHAR(50),
name VARCHAR(255),
learning_profile JSONB,
accessibility_needs TEXT[],
created_at TIMESTAMP DEFAULT NOW()
);
-- Academic progress tracking
CREATE TABLE student_progress (
id UUID PRIMARY KEY,
student_id UUID REFERENCES students(id),
assignment_id VARCHAR(50),
score DECIMAL(5,2),
completion_date TIMESTAMP,
time_spent_minutes INTEGER,
learning_gaps TEXT[]
);
-- Learning standards alignment
CREATE TABLE standards_alignments (
id UUID PRIMARY KEY,
content_id VARCHAR(50),
standard_id VARCHAR(50),
alignment_strength DECIMAL(3,2),
subject VARCHAR(100),
grade_level VARCHAR(10)
);
-- Audit log
CREATE TABLE audit_log (
id UUID PRIMARY KEY,
user_id UUID,
action VARCHAR(255),
resource VARCHAR(255),
changes JSONB,
created_at TIMESTAMP DEFAULT NOW()
);โ๏ธ Cloudflare Deployment
Option 1: Cloudflare Workers (Recommended for Serverless)
# Install Wrangler CLI
npm install -g wrangler
# Create wrangler.toml
cat > wrangler.toml << 'EOF'
name = "school101-mcp"
type = "javascript"
account_id = "your_account_id"
workers_dev = true
route = "school101.example.com/*"
zone_id = "your_zone_id"
[env.production]
name = "school101-mcp-prod"
routes = [
{ pattern = "api.yourdomain.com/*", zone_id = "your_zone_id" }
]
[[kv_namespaces]]
binding = "CACHE"
id = "your_kv_namespace_id"
[build]
command = "npm run build"
cwd = "./"
main = "dist/index.js"
EOF
# Deploy
npm run deploy:cloudflareOption 2: Cloudflare Pages with Functions
# Create functions directory
mkdir -p functions
# Create MCP endpoint function
cat > functions/mcp.js << 'EOF'
export async function onRequest(context) {
const { request, env } = context;
if (request.method === 'POST') {
const body = await request.json();
// Handle MCP JSON-RPC request
const result = await handleMCPRequest(body, env);
return new Response(JSON.stringify(result), {
headers: { 'Content-Type': 'application/json' }
});
}
return new Response('SCHOOL101 MCP Server', { status: 200 });
}
async function handleMCPRequest(request, env) {
// Route to appropriate handler
return { jsonrpc: '2.0', result: null };
}
EOF
# Deploy
wrangler pages deployEnvironment Variables on Cloudflare
wrangler secret put CANVAS_API_TOKEN
wrangler secret put DATABASE_URL
wrangler secret put REDIS_URL
wrangler secret put MICROSOFT_LEARN_API_KEY๐งช Testing
# Run all tests
npm test
# Test specific integration
npm test -- canvas.test.ts
# Watch mode
npm test -- --watch
# Coverage report
npm test -- --coverageExample Test
import { initializeSchool101MCP } from '../school101-mcp-server';
describe('Canvas Integration', () => {
it('should retrieve courses for authenticated user', async () => {
const mcp = initializeSchool101MCP();
const result = await mcp.handleRequest('canvas_get_courses', {
api_token: process.env.TEST_CANVAS_TOKEN,
canvas_url: process.env.TEST_CANVAS_URL
});
expect(result.success).toBe(true);
expect(result.courses).toHaveLength(3);
});
});๐ Documentation
Tool Documentation
Each tool includes:
Description: What the tool does
Parameters: Required and optional inputs (with types)
Returns: Output schema and examples
Permissions: Required user roles
Rate Limits: API quotas
Cost: If applicable
Resource Documentation
Student Profile: Cached student data structure
Classroom Context: Course metadata, rosters, standards
Standards Database: K-12 learning outcomes knowledge graph
Prompt Templates
Pre-built prompts for common workflows:
create_lesson_plan: Generate comprehensive lessonanalyze_student_progress: Data-driven student insightsidentify_learning_gaps: Cohort gap analysis with interventions
๐ Use Cases
1. AI School Tutor
// Claude acts as personalized tutor
const tutor = new AITutor(school101MCP);
// Student: "Help me understand photosynthesis"
const response = await tutor.chat(studentMessage);
// Tutor searches Khan Academy, generates diagrams,
// creates flashcards, tracks progress2. Teacher Administrative Assistant
// Teacher: "Grade these 30 essays and identify patterns"
const grader = new TeacherAssistant(school101MCP);
// Analyzes submissions, applies rubric,
// identifies common misconceptions, suggests interventions3. Parent Engagement Dashboard
// Parent: "How is my child doing in math?"
const parentBot = new ParentAssistant(school101MCP);
// Retrieves Canvas grades, analyzes trends,
// provides specific growth areas and resources4. District Data Intelligence
// Administrator: "Which schools need reading support?"
const analyst = new DataAnalyst(school101MCP);
// Queries student cohort metrics across district,
// identifies equity gaps, recommends resource allocation๐ฃ๏ธ Development Roadmap
Phase 1: Foundation (Current)
โ Canvas LMS core integration (read/write with safeguards)
โ K-12 standards knowledge graph
โ Math problem solver
โ Basic student progress tracking
โ Assessment generator
Target: August 2024
Phase 2: Expansion (Q3-Q4 2024)
๐ Google Classroom Integration
๐ Blackboard Integration
๐ Moodle LMS Support
๐ Gradescope Advanced Features
๐ Advanced Accessibility (WCAG AAA)
๐ Video Learning Content Search
๐ AI-Powered Feedback System
Target: December 2024
Phase 3: Intelligence (2025)
๐ Predictive Student Risk Alerts
๐ Personalized Learning Pathways
๐ Cross-Platform Student Profile Sync
๐ Multi-Language Support (20+ languages)
๐ Advanced Differential Learning
๐ Teacher Peer Collaboration Network
๐ Real-Time Classroom Analytics
Target: Mid-2025
Phase 4: Ecosystem (2025-2026)
๐ Parent Communication API
๐ Student Mental Health Integration
๐ Career Pathway Guidance
๐ School Finance Integration
๐ Attendance & Behavior Tracking
๐ Higher Ed Transfer Pathways
๐ Global Standards Library (50+ countries)
Target: EOY 2025
Phase 5: Specialized Domains (2026+)
๐ Special Education IEP Management
๐ English Language Learner (ELL) Support
๐ Gifted & Talented Programs
๐ Career & Technical Education (CTE)
๐ Higher Education Research Integration
๐ Nursing & Healthcare Education
๐ Corporate Learning Management
๐ค Contributing
We welcome contributions! Please see CONTRIBUTING.md.
Development Setup
git clone https://github.com/yourusername/school101-mcp.git
npm install
npm run devCode Standards
TypeScript strict mode
80% test coverage minimum
ESLint + Prettier formatting
Comprehensive docstrings
๐ Support & Community
Documentation: https://docs.school101.ai
GitHub Issues: https://github.com/yourusername/school101-mcp/issues
Community Discord: https://discord.gg/school101
Email: support@school101.ai
๐ License
MIT License - see LICENSE.md
๐ Acknowledgments
Built on the Model Context Protocol standard by Anthropic, integrating best practices from:
Canvas LMS ecosystem
Common Core Standards Initiative
Modern Learning Conservancy
Open Education Foundation
Making AI-powered education accessible, safe, and effective for everyone.
๐ SCHOOL101 โ Unify. Integrate. Transform.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/CA0071/WORLDCLASS-EDUCATIONAL-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server