Koskamo

BC Curriculum MCP

An MCP server that provides structured access to the entire BC Ministry of Education K–12 curriculum. It allows teachers and curriculum designers to query Big Ideas, Competencies, Content standards, grade progressions, and cross-subject connections through natural language questions.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

BC Curriculum MCP logo, by Paul de GrootCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-06Published by Paul de Groot
MCP endpoint (Streamable HTTP)
https://bc-curriculum-mcp.fly.dev/mcp
Vendor documentation

What its tools do

8 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

8 of 8 have a description · 8 of 8 declare behavior hints · 7 of 7 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for Big Ideas and competencies for specific subjects and grades
  • Trace how curriculum concepts build across grade levels
  • Find cross-curricular connections between subjects
  • View curriculum changes and crawl history

Source and maintenance

Community listingRegistry 1.1.1
Maintenance checked

Protocol and capabilities

Server
bc-curriculum-mcp-server 1.1.1
MCP protocol negotiated in check
2025-11-25
Tools
8 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Tools

8 advertised

search_curriculum — Search BC Curriculum
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search BC curriculum (K-12) for standards, competencies, content items, and assessment resources using full-text search. Returns structured results with source metadata. Args: - query (string): Natural language search query (e.g., 'empathetic design thinking', 'coding and computational thinking') - subject (string, optional): Filter by subject slug (e.g., 'adst', 'science') - grade (integer, optional): Filter by grade level (0=K, 1-12) - content_type (string, optional): Filter by content type ('big_idea', 'competency', 'content_item', 'elaboration', 'assessment', 'all') - limit (integer, optional): Max results (default 10, max 50) Returns: Matching curriculum elements with source type, course, subject, and grade metadata.

search_curriculum input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "query"
  ],
  "properties": {
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum results to return (default 10)"
    },
    "query": {
      "type": "string",
      "maxLength": 500,
      "minLength": 2,
      "description": "Natural language search query (e.g., 'empathetic design thinking')"
    },
    "subject": {
      "enum": [
        "adst",
        "arts-education",
        "career-education",
        "english-language-arts",
        "languages",
        "mathematics",
        "physical-health-education",
        "science",
        "social-studies"
      ],
      "type": "string",
      "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
    },
    "content_type": {
      "enum": [
        "big_idea",
        "competency",
        "content_item",
        "elaboration",
        "assessment",
        "instructional_sample",
        "all"
      ],
      "type": "string",
      "default": "all",
      "description": "Type of curriculum content to filter by"
    }
  },
  "additionalProperties": false
}
search_curriculum annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_course_curriculum — Get Course Curriculum
Advertised by the server during the last successful anonymous check.
Advertised read-only

Get the complete BC curriculum for a specific course: Big Ideas, Curricular Competencies (grouped by domain), and Content/KDU items with elaborations. Returns the full three-column structure used by BC Ministry of Education. Args: - subject (string): Subject slug (e.g., 'adst', 'science') - grade (integer): Grade level (0=K, 1-12) - course (string, optional): Course slug (e.g., 'technology-explorations'). If omitted, returns all courses for that subject+grade. Returns: Complete three-column curriculum structure per course, including elaborations.

get_course_curriculum input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "subject",
    "grade"
  ],
  "properties": {
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "course": {
      "type": "string",
      "description": "Course slug (e.g., 'technology-explorations'). If omitted, returns all courses for subject+grade."
    },
    "subject": {
      "enum": [
        "adst",
        "arts-education",
        "career-education",
        "english-language-arts",
        "languages",
        "mathematics",
        "physical-health-education",
        "science",
        "social-studies"
      ],
      "type": "string",
      "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
    }
  },
  "additionalProperties": false
}
get_course_curriculum annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_grade_progression — Get Grade Progression
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show how Big Ideas, Competencies, and Content progress across grade levels for a BC subject. Useful for understanding scaffolding, prerequisites, and learning trajectories. When a query is provided, filters to only matching items at each grade — showing a focused vertical thread rather than a full data dump. Args: - subject (string): Subject slug - grade_from (integer): Starting grade (0=K, 1-12) - grade_to (integer): Ending grade (0=K, 1-12) - focus (string, optional): Which element to trace ('big_ideas', 'competencies', 'content', 'all'). Default 'all'. - query (string, optional): Focus on a specific concept (e.g., 'evidence', 'multiplication'). Only matching items shown at each grade. Returns: Grade-by-grade breakdown of curriculum elements showing progression, optionally filtered to a concept thread.

get_grade_progression input schema
{
  "type": "object",
  "properties": {}
}
get_grade_progression annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_competency_connections — Get Competency Connections
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find curricular competencies that appear across multiple subjects or courses. Useful for interdisciplinary curriculum design and identifying transferable skills. Args: - competency_text (string): A competency description to find connections for - scope (string, optional): Where to search ('same_subject', 'cross_subject', 'all'). Default 'all'. Returns: Related competencies from other courses/subjects with similarity ranking.

get_competency_connections input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "competency_text"
  ],
  "properties": {
    "scope": {
      "enum": [
        "same_subject",
        "cross_subject",
        "all"
      ],
      "type": "string",
      "default": "all",
      "description": "Where to search for related competencies"
    },
    "competency_text": {
      "type": "string",
      "minLength": 3,
      "description": "A competency description to find connections for"
    }
  },
  "additionalProperties": false
}
get_competency_connections annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_courses — List BC Courses
Advertised by the server during the last successful anonymous check.
Advertised read-only

List all available courses in the BC curriculum database (K-12). Use this to discover what courses are available before querying specific curriculum data. Args: - subject (string, optional): Filter by subject slug - grade (integer, optional): Filter by grade level (0=K, 1-12) Returns: List of courses with subject, grade, name, and URL.

list_courses input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "subject": {
      "enum": [
        "adst",
        "arts-education",
        "career-education",
        "english-language-arts",
        "languages",
        "mathematics",
        "physical-health-education",
        "science",
        "social-studies"
      ],
      "type": "string",
      "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
    }
  },
  "additionalProperties": false
}
list_courses annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_cross_curricular — Search Cross-Curricular Connections
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find curriculum elements shared between two or more subjects at the same grade level. Identifies overlapping competencies, big ideas, and content across subjects. Essential for interdisciplinary planning. Args: - subjects (string[]): Two or more subject slugs to compare (e.g., ['science', 'adst']) - grade (integer): Grade level (0=K, 1-12) - focus (string, optional): Which element to compare ('big_ideas', 'competencies', 'content', 'all'). Default 'all'. - query (string, optional): Narrow to a specific concept (e.g., 'evidence', 'design thinking') - limit (integer, optional): Max connections to return (default 20, max 50) Returns: Groups of curriculum items connected by shared language across subjects.

search_cross_curricular input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "subjects",
    "grade"
  ],
  "properties": {
    "focus": {
      "enum": [
        "big_ideas",
        "competencies",
        "content",
        "all"
      ],
      "type": "string",
      "default": "all",
      "description": "Which curriculum element to compare across subjects"
    },
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum connections to return (default 20)"
    },
    "query": {
      "type": "string",
      "maxLength": 500,
      "minLength": 2,
      "description": "Optional: narrow to a specific concept (e.g., 'evidence', 'design thinking')"
    },
    "subjects": {
      "type": "array",
      "items": {
        "enum": [
          "adst",
          "arts-education",
          "career-education",
          "english-language-arts",
          "languages",
          "mathematics",
          "physical-health-education",
          "science",
          "social-studies"
        ],
        "type": "string",
        "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
      },
      "maxItems": 9,
      "minItems": 2,
      "description": "Two or more subject slugs to compare (e.g., ['science', 'adst'])"
    }
  },
  "additionalProperties": false
}
search_cross_curricular annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_curriculum_changes — Get Curriculum Changes
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show what changed in BC curriculum since a given date. Detects added, removed, and modified Big Ideas, Competencies, and Content items across crawl runs. Requires at least two crawls to have change data. Args: - since (string, optional): ISO date (e.g., '2026-01-15'). Default: last 30 days. - subject (string, optional): Filter by subject slug - grade (integer, optional): Filter by grade level - change_type (string, optional): Filter by change type ('added', 'removed', 'modified', 'all'). Default 'all'. - limit (integer, optional): Max entries to return (default 50, max 100) Returns: Course-level summary of which courses changed, plus item-level detail of what specifically was added/removed/modified.

get_curriculum_changes input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "limit": {
      "type": "integer",
      "default": 50,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum changelog entries to return (default 50)"
    },
    "since": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "ISO date string — show changes detected after this date (e.g., '2026-01-15'). Defaults to last 30 days."
    },
    "subject": {
      "enum": [
        "adst",
        "arts-education",
        "career-education",
        "english-language-arts",
        "languages",
        "mathematics",
        "physical-health-education",
        "science",
        "social-studies"
      ],
      "type": "string",
      "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
    },
    "change_type": {
      "enum": [
        "added",
        "removed",
        "modified",
        "all"
      ],
      "type": "string",
      "default": "all",
      "description": "Filter by type of change"
    }
  },
  "additionalProperties": false
}
get_curriculum_changes annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_course_history — Get Course History
Advertised by the server during the last successful anonymous check.
Advertised read-only

Show the crawl history and change timeline for a specific course. Includes each crawl snapshot (date, item counts, content hash) and a changelog of all detected modifications. Args: - subject (string): Subject slug (e.g., 'science') - grade (integer): Grade level (0=K, 1-12) - course (string, optional): Course slug (e.g., 'chemistry'). If omitted, shows history for all courses at subject+grade. Returns: Timeline of crawl snapshots and detected changes per course.

get_course_history input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "subject",
    "grade"
  ],
  "properties": {
    "grade": {
      "type": "integer",
      "maximum": 12,
      "minimum": 0,
      "description": "Grade level (0=Kindergarten, 1-12)"
    },
    "course": {
      "type": "string",
      "description": "Course slug (e.g., 'chemistry'). If omitted, shows history for all courses at subject+grade."
    },
    "subject": {
      "enum": [
        "adst",
        "arts-education",
        "career-education",
        "english-language-arts",
        "languages",
        "mathematics",
        "physical-health-education",
        "science",
        "social-studies"
      ],
      "type": "string",
      "description": "BC curriculum subject slug (e.g., 'adst', 'science')"
    }
  },
  "additionalProperties": false
}
get_course_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-06: 1 of 1 checks answered
  2. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
582 ms
95th percentile latency
582 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 582 ms · metadata changed · 8 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http bc-curriculum-mcp-fly https://bc-curriculum-mcp.fly.dev/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add bc-curriculum-mcp-fly --url https://bc-curriculum-mcp.fly.dev/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable bc-curriculum-mcp-fly in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "bc-curriculum-mcp-fly": {
      "url": "https://bc-curriculum-mcp.fly.dev/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "bc-curriculum-mcp-fly": {
      "type": "streamableHttp",
      "url": "https://bc-curriculum-mcp.fly.dev/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start bc-curriculum-mcp-fly and inspect its tools.
VS Code configuration
{
  "servers": {
    "bc-curriculum-mcp-fly": {
      "type": "http",
      "url": "https://bc-curriculum-mcp.fly.dev/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http bc-curriculum-mcp-fly https://bc-curriculum-mcp.fly.dev/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://bc-curriculum-mcp.fly.dev/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "bc-curriculum-mcp-fly": {
      "serverUrl": "https://bc-curriculum-mcp.fly.dev/mcp"
    }
  }
}

Let your agent find its tools

Find servers like BC Curriculum MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.