Gives BC teachers and curriculum designers structured access to the entire K-12 British Columbia curriculum through 12 tools that query Big Ideas, Curricular Competencies, Content standards, and Core Competencies. Crawls curriculum.gov.bc.ca into a SQLite database and exposes operations like bc_get_course_curriculum, bc_get_grade_progression, bc_get_competency_connections, and bc_search_cross_curricular. Runs as a hosted HTTP endpoint on Fly.io or locally via stdio. Reach for this when building lesson plans, analyzing how concepts build across grades, finding cross-subject connections, or grounding curriculum questions in official BC Ministry of Education data without manually navigating the JavaScript-heavy government site.
An MCP (Model Context Protocol) server that gives BC teachers structured access to the entire BC Ministry of Education K–12 curriculum. Connect with one line of config — no installs, no accounts, no technical setup.
Author: Paul de Groot — Vancouver, BC
This server crawls curriculum.gov.bc.ca and makes the full BC K–12 curriculum queryable through 12 MCP tools. Teachers and curriculum designers can ask natural-language questions about Big Ideas, Curricular Competencies, Content standards, grade progressions, cross-subject connections, and more — grounded in the actual published curriculum data.
Add this to your MCP config:
{
"mcpServers": {
"bc-curriculum": {
"type": "http",
"url": "https://bc-curriculum-mcp.fly.dev/mcp"
}
}
}
Or via Claude Code CLI:
claude mcp add bc-curriculum --transport http --url https://bc-curriculum-mcp.fly.dev/mcp
npx bc-curriculum-mcp-server
This runs the server in stdio mode — compatible with any MCP client. You'll need a local bc-curriculum.sqlite database (clone the repo, install Playwright, and run the crawler — see For Developers below).
npm install -g bc-curriculum-mcp-server
bc-curriculum-mcp
Once connected, ask things like:
| Tool | What it does |
|---|---|
bc_search_curriculum | Full-text search across all curriculum data |
bc_get_course_curriculum | Get Big Ideas, Competencies, and Content for a course |
bc_list_courses | List all available courses (filter by subject/grade) |
bc_get_grade_progression | Trace how curriculum builds across grade levels |
bc_get_competency_connections | Find competencies shared across subjects |
bc_get_core_competencies | Get Communication, Thinking, Personal/Social competencies |
bc_get_fppl | Get First Peoples Principles of Learning |
bc_get_assessment_resources | Get assessment practices and guidance |
bc_get_crawl_status | Check data freshness and completeness |
bc_search_cross_curricular | Find curriculum connections shared between two or more subjects at a grade |
bc_get_curriculum_changes | Show what changed in curriculum since a given date |
bc_get_course_history | View crawl history and change timeline for a course |
┌──────────────────────┐ ┌─────────────────────────┐
│ Your Machine │ │ Fly.io (free tier) │
│ │ │ │
│ Playwright crawler │──────▶│ Express + SQLite │
│ builds SQLite DB │ SFTP │ read-only MCP server │
│ │ │ 256MB RAM │
└──────────────────────┘ └─────────────────────────┘
│
▼
Claude Desktop / Cowork / VS Codee / Antigravity
connects via MCP over HTTPS
The crawler runs locally using Playwright + headless Chromium to render the JavaScript-heavy curriculum.gov.bc.ca pages. It produces a SQLite database that gets uploaded to Fly.io. The deployed server is lightweight and read-only — no browser, no crawler, just serves pre-built data over MCP.
git clone https://github.com/pdg6/bc-curriculum-mcp-server.git
cd bc-curriculum-mcp-server
npm install
npx playwright install chromium
npm run build
# Quick test — just ADST
npm run crawl -- --subject adst
# Full K–12 crawl (~60-90 minutes)
npm run crawl:all
# Re-crawl everything (overwrites existing data)
npm run crawl:all -- --force
# stdio transport (for local MCP clients)
npm start
# HTTP transport (for remote connections)
TRANSPORT=http npm start
The BC curriculum is organized in a three-column structure for every course:
Each element can have elaborations — expandable details that clarify scope and provide examples. This server captures all three columns plus elaborations for every course across all 9 subjects and all grades K–12.
The Core Competencies (Communication, Thinking, Personal & Social) and First Peoples Principles of Learning are cross-cutting frameworks that apply across all subjects and are stored separately.
All curriculum data is sourced from curriculum.gov.bc.ca, the official BC Ministry of Education curriculum website. The crawler respects the site with 1.5-second delays between requests.
MIT — see LICENSE.
The curriculum content itself is published by the BC Ministry of Education. This project provides structured access to that publicly available data.