Koskamo

Georgia Homeroom MCP

An MCP server providing access to Georgia K-12 academic standards, Georgia Milestones (GMAS) blueprints, and achievement level descriptors for educators and administrators.

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.

Georgia Homeroom MCP logo, by Georgia Civic DataVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by Georgia Civic Data
You need:You’ll need an AI assistant on a plan that supports custom connectorsCustom connectors require a Claude Pro or Max planThere’s no sign-in or password to set up
MCP endpoint (Streamable HTTP)
https://mcp.georgiahomeroom.org/mcp
Vendor documentation

What you can do with it

  • Plan lessons grounded in exact standards cited by code
  • Prepare for Georgia Milestones by reviewing blueprints and weightings
  • Look up standards by code including legacy MGSE/ELAGSE translations
  • Check curriculum alignment and audit coverage against state standards

Source and maintenance

Vendor evidenceRegistry 0.2.0

Protocol and capabilities

Server
Georgia Homeroom 0.2.0
MCP protocol
2025-06-18
Tools
11 advertised
Resources
0 advertised
Resource templates
0 advertised
Prompts
0 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "subscribe": false,
    "listChanged": false
  },
  "experimental": {}
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Search and browse the Georgia Standards of Excellence (GSE) for English language arts (ELA), math, science, and social studies, plus the Georgia Milestones (GMAS) test blueprints and achievement-level descriptors. Built for teachers and school administrators. Georgia Homeroom is independent and is not affiliated with the Georgia Department of Education. Tools: - search_standards: topic search, with optional grade, subject, strand, and course filters. - lookup_standards_by_code: look up specific codes (e.g. 5.NR.1, 5.NR.1.2, 3.L.GC.1, S8P1, SS8H1.a). Older MGSE/ELAGSE codes are translated to current codes when possible, with suggestions otherwise. - search_mastery_descriptors: search the descriptions of what students can do at each achievement level (Beginning, Developing, Proficient, Distinguished). - list_assessments, get_assessment_blueprint, standards_for_claim: the test view: what each Milestones test covers, points per reporting category (claim), the Depth of Knowledge (DOK) split, and the standards in each category. - browse_standards: walk the curriculum one level at a time (subject, course, strand or domain, standard). - get_subject_grade_tree: every standard for one subject and grade in a single call. High-school grades are organized by course: without a course it returns the list of courses, and with one it returns that course's standards. - get_vertical_progression: one strand year over year. - get_standard_details: full detail for one standard or container. - describe_vocabulary: the exact subject, grade, course, and strand values the filters accept. Subjects: 'ela', 'math', 'science', 'social_studies'. Grades: 'K' or '01'..'12' ('5' and 'KG' also work). Key terms. The GSE are Georgia's K-12 learning standards. GMAS (the Georgia Milestones Assessment System) is the state test: 14 End-of-Grade (EOG) tests in grades 3-8 and 4 End-of-Course (EOC) tests for high-school courses. A blueprint groups a test's points into claims (broad reporting categories) and targets (groups within a claim); each claim or target covers one or more standards. ALDs (achievement-level descriptors) describe what a student can do at each of four levels (Beginning, Developing, Proficient, Distinguished) for one standard. Background: since the 2023-24 school year, a student's EOC score counts for at least 10% of the final grade in that course, and Milestones results are used in the College and Career Ready Performance Index (CCRPI), Georgia's school accountability measure. Reading the results: - `approx_points` belongs to a blueprint claim or target, never to an individual standard. It is the weight of the whole claim or target, repeated on every standard that target covers. Do not apportion, sum, or estimate per-standard points, and report ranges like '7-8' as ranges, not midpoints or exact figures. - Within one claim, `approx_points` varies across targets, and a blueprint often merges one points cell across several targets. Rows sharing a merged cell repeat one value and share a `points_group` id (also flagged `points_shared`, with `points_shared_with`); that pool counts once. Rows with different `points_group` ids are separate pools. Never total a claim by adding up its rows: use the `claim_total_points` the tool returns. - Never sum a blueprint's per-claim points past its stated `total_points`; the per-claim figures are approximate. A claim total above the whole test's total is always a double-counted merged cell. - The four ALD levels are cumulative: a Proficient student can also do everything described at Beginning and Developing. Paraphrase the descriptor text rather than inventing your own, and never relabel one level's descriptor as another. - A `qualifier` on a coverage row is a footnote from the blueprint PDF marking a cross-reference rather than a primary target: `'+'` = high-school algebra cross-strand modeling, `'* GUM'` = ELA grammar/usage chart pointer, `'*'` = other. - A sub-code (e.g. '5.NR.3.3') with no descriptors or coverage of its own inherits its parent standard's, shown under the sub-code. - When a response carries `dropped_strand`, the strand filter matched nothing and the results span the whole subject, not the strand you asked for.

Tools

11 advertised

search_standards — Search Standards
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the Georgia Standards of Excellence by topic, with optional filters. Returns matching standards as `items` (each: `code`, `subject`, `grades`, `strand_code`, `strand_name`, `hs_course`, `statement`, plus optional `notes` and `path`). When enrichment is on, the response also carries `alds` (achievement-level descriptions per standard), `assessment_coverage` (Milestones claim, target, approx_points, sub_codes, qualifier), and `assessment_metadata` keyed by assessment_id (Depth of Knowledge split, item-type design); the server instructions explain how to read points, qualifiers, and levels. If `dropped_strand` is set, the strand filter matched nothing and the results span the whole subject. `truncated` means more matches may exist than `limit` allowed. Enrichment is automatic for small result sets (8 standards or fewer) and off for larger ones unless `include_enrichment` is true. If the query itself contains a standard code (e.g. 'what is 5.NR.1?'), the search becomes a direct code lookup and the other filters are ignored; lookup_standards_by_code is the direct route for known codes. Limitation: matches the words of the standards, in English.

search_standards input schema
{
  "type": "object",
  "title": "search_standardsArguments",
  "required": [
    "query"
  ],
  "properties": {
    "grade": {
      "anyOf": [
        {
          "enum": [
            "K",
            "KG",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade",
      "default": null,
      "description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Do not combine with grade_set."
    },
    "limit": {
      "anyOf": [
        {
          "type": "integer",
          "maximum": 100,
          "minimum": 1
        },
        {
          "type": "null"
        }
      ],
      "title": "Limit",
      "default": null,
      "description": "Most rows to return, 1 to 100. Default: 40 when narrowed by grade, grade_set, or course; 20 otherwise."
    },
    "query": {
      "type": "string",
      "title": "Query",
      "maxLength": 500,
      "description": "Topic words to search for, e.g. 'adding fractions with unlike denominators'."
    },
    "course": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Course",
      "default": null,
      "description": "Optional high-school course, e.g. 'algebra i', 'biology', 'us history' (describe_vocabulary lists them)."
    },
    "subjects": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "enum": [
              "ela",
              "math",
              "science",
              "social_studies"
            ],
            "type": "string"
          },
          "maxItems": 4
        },
        {
          "type": "null"
        }
      ],
      "title": "Subjects",
      "default": null,
      "description": "Limit to these subjects."
    },
    "grade_set": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "enum": [
              "K",
              "KG",
              "01",
              "02",
              "03",
              "04",
              "05",
              "06",
              "07",
              "08",
              "09",
              "10",
              "11",
              "12",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string"
          },
          "maxItems": 13
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade Set",
      "default": null,
      "description": "Several grades at once, e.g. ['03', '04', '05']. Do not combine with grade."
    },
    "strand_code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Strand Code",
      "default": null,
      "description": "Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject."
    },
    "include_enrichment": {
      "anyOf": [
        {
          "type": "boolean"
        },
        {
          "type": "null"
        }
      ],
      "title": "Include Enrichment",
      "default": null,
      "description": "true attaches achievement levels and Milestones coverage to every result; false never does; omit for automatic."
    }
  }
}
search_standards output schema
{
  "type": "object",
  "title": "search_standardsDictOutput",
  "additionalProperties": true
}
search_standards annotations
{
  "title": "Search Standards",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
lookup_standards_by_code — Look Up Standards by Code
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up Georgia standards by their codes (e.g. ['5.NR.1', '3.T.C.1', 'S8P1', 'SS8H1.a']). Returns the matching standards (each with `code`, `statement`, optional `notes` and `path`), plus per-code `alds` (achievement-level descriptions), `assessment_coverage` (Milestones claim, target, approx_points, qualifier), and `assessment_metadata` keyed by assessment_id; the server instructions explain how to read points, qualifiers, and levels. A sub-code (e.g. '5.NR.3.3') with no descriptors of its own shows its parent standard's. Older codes from earlier materials (MGSE, ELAGSE, CCGPS) are translated to the current code when the mapping is unambiguous, including renamed math strands (fractions moved from `NF` to the current `5.NR.3` cluster), and reported in `normalized_codes`. Codes that still don't match appear in `unknown_codes` with likely `suggestions`.

lookup_standards_by_code input schema
{
  "type": "object",
  "title": "lookup_standards_by_codeArguments",
  "required": [
    "codes"
  ],
  "properties": {
    "codes": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 40
      },
      "title": "Codes",
      "maxItems": 50,
      "minItems": 1,
      "description": "One or more standard codes, e.g. ['5.NR.1', 'S8P1']."
    }
  }
}
lookup_standards_by_code output schema
{
  "type": "object",
  "title": "lookup_standards_by_codeDictOutput",
  "additionalProperties": true
}
lookup_standards_by_code annotations
{
  "title": "Look Up Standards by Code",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search_mastery_descriptors — Search Achievement Level Descriptions
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search the Georgia Milestones achievement-level descriptors: the official descriptions of what a student can do at each of four levels (Beginning, Developing, Proficient, Distinguished) for a standard. Use it for 'what does mastery look like' questions (e.g. 'what does a proficient 3rd grader do with fractions?'); it matches the descriptor text, not the standards' own wording. Returns `hits` with `item_code`, `level`, `descriptor_text`, `subject`, `grades`, and `statement` (the standard the descriptor belongs to), best match first. Limitation: descriptors exist only for the subjects and grades the Milestones tests cover, so many standards have none.

search_mastery_descriptors input schema
{
  "type": "object",
  "title": "search_mastery_descriptorsArguments",
  "required": [
    "query"
  ],
  "properties": {
    "grade": {
      "anyOf": [
        {
          "enum": [
            "K",
            "KG",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade",
      "default": null,
      "description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work."
    },
    "level": {
      "anyOf": [
        {
          "enum": [
            "Beginning",
            "Developing",
            "Proficient",
            "Distinguished"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Level",
      "default": null,
      "description": "Only this achievement level."
    },
    "limit": {
      "type": "integer",
      "title": "Limit",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Most hits to return, 1 to 50."
    },
    "query": {
      "type": "string",
      "title": "Query",
      "maxLength": 500,
      "description": "Words to search for in the descriptor text, e.g. 'fractions'."
    },
    "subjects": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "enum": [
              "ela",
              "math",
              "science",
              "social_studies"
            ],
            "type": "string"
          },
          "maxItems": 4
        },
        {
          "type": "null"
        }
      ],
      "title": "Subjects",
      "default": null,
      "description": "Limit to these subjects."
    },
    "grade_set": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "enum": [
              "K",
              "KG",
              "01",
              "02",
              "03",
              "04",
              "05",
              "06",
              "07",
              "08",
              "09",
              "10",
              "11",
              "12",
              "1",
              "2",
              "3",
              "4",
              "5",
              "6",
              "7",
              "8",
              "9"
            ],
            "type": "string"
          },
          "maxItems": 13
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade Set",
      "default": null,
      "description": "Several grades at once, e.g. ['03', '04']."
    }
  }
}
search_mastery_descriptors output schema
{
  "type": "object",
  "title": "search_mastery_descriptorsDictOutput",
  "additionalProperties": true
}
search_mastery_descriptors annotations
{
  "title": "Search Achievement Level Descriptions",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_assessments — List Georgia Milestones Tests
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every Georgia Milestones test with a blueprint: 14 End-of-Grade tests (ELA and math for each of grades 3-8; science and social studies in grade 8 only) and 4 End-of-Course tests (Algebra I, Biology, Literature II, US History). Returns `assessments` with `assessment_id`, `subject`, `grade` (null for End-of-Course), `hs_course` (null for End-of-Grade), and a readable `title`. Use the ids with get_assessment_blueprint and standards_for_claim.

list_assessments input schema
{
  "type": "object",
  "title": "list_assessmentsArguments",
  "properties": {}
}
list_assessments output schema
{
  "type": "object",
  "title": "list_assessmentsDictOutput",
  "additionalProperties": true
}
list_assessments annotations
{
  "title": "List Georgia Milestones Tests",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_assessment_blueprint — Get Georgia Milestones Test Blueprint
Advertised by the server during the last successful anonymous check.
Advertised read-only

The full blueprint for one Georgia Milestones test, for pacing and coverage planning. Identify the test by `assessment_id` (e.g. 'gmas_g05_math'), by `course` for an End-of-Course test (e.g. 'biology', 'algebra i', 'us history'), or by `grade` + `subject` for an End-of-Grade test (e.g. grade='5', subject='math'). Returns `title`, `total_points`, `dok_distribution` (Depth of Knowledge split), `design` (item-type table), `claim_summary` (points per claim), and `claims`: each claim and target with its `approx_points` and the `standards` it covers. READING THE POINTS. Do not add up `approx_points` down `claims`: the blueprint often draws one merged points cell across several target rows, and each of those rows repeats the pooled value (the naive sum reads 98-114 on the 60-point ELA tests and 82 on the 58-point grade 5 math test). Pooled rows share a `points_group` id and are flagged `points_shared: true`, with co-covered codes in `points_shared_with` and a ready-to-quote `approx_points_note`. The correct numbers are precomputed: `claim_summary` (one total per claim) and `total_claim_points` (the whole test). `total_points` comes from the design table and is null for the ELA blueprints (their PDFs have no Total row), so use `total_claim_points` there. If no single test matches, the result is an error that lists the available tests.

get_assessment_blueprint input schema
{
  "type": "object",
  "title": "get_assessment_blueprintArguments",
  "properties": {
    "grade": {
      "anyOf": [
        {
          "enum": [
            "K",
            "KG",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade",
      "default": null,
      "description": "Grade of an End-of-Grade test (3 through 8). Use with subject."
    },
    "course": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Course",
      "default": null,
      "description": "End-of-Course test course: 'algebra i', 'biology', 'literature ii', or 'us history'."
    },
    "subject": {
      "anyOf": [
        {
          "enum": [
            "ela",
            "math",
            "science",
            "social_studies"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject",
      "default": null,
      "description": "Subject of an End-of-Grade test. Use with grade."
    },
    "assessment_id": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Assessment Id",
      "default": null,
      "description": "Test id from list_assessments, e.g. 'gmas_g05_math'."
    }
  }
}
get_assessment_blueprint output schema
{
  "type": "object",
  "title": "get_assessment_blueprintDictOutput",
  "additionalProperties": true
}
get_assessment_blueprint annotations
{
  "title": "Get Georgia Milestones Test Blueprint",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
standards_for_claim — List Standards in a Blueprint Category
Advertised by the server during the last successful anonymous check.
Advertised read-only

List every standard a Georgia Milestones test assesses under one blueprint claim (a reporting category such as 'Numerical Reasoning'), with point weights. This is the reverse of the per-standard coverage view. Pass an `assessment_id` (from list_assessments) and a `claim_code` (the category heading, e.g. 'Numerical Reasoning', or for ELA '<strand>.<domain>' like 'Texts.Interpreting Texts'); optionally narrow to one `target_text`. Matching ignores case and surrounding spaces. Returns `standards` with `code`, `statement`, `claim_name`, `target_text`, `approx_points`, `sub_codes`, and `qualifier`. READING THE POINTS. `approx_points` is the weight of a claim or target, never of one standard, and a blueprint often draws one merged points cell across several targets. Rows sharing a merged cell repeat that value and share a `points_group` id; each is flagged `points_shared: true`, names its co-covered codes in `points_shared_with`, and carries a ready-to-quote `approx_points_note`. Rows with different `points_group` ids are separate pools. So do not add up `approx_points` down the rows: use the precomputed `claim_total_points`, bounded by `assessment_total_points` / `design_total_points`. Worked example: grade 5 math Numerical Reasoning has 5 rows reading 14/14/14/10/10 (62 if summed), but 5.NR.1+5.NR.4 share one 14-point pool and 5.NR.2+5.NR.5 share one 10-point pool, so the claim is 38 points on a 58-point test. An unknown claim or assessment_id is an error that lists the valid values.

standards_for_claim input schema
{
  "type": "object",
  "title": "standards_for_claimArguments",
  "required": [
    "assessment_id",
    "claim_code"
  ],
  "properties": {
    "claim_code": {
      "type": "string",
      "title": "Claim Code",
      "maxLength": 200,
      "description": "Claim (reporting category) heading, e.g. 'Numerical Reasoning'."
    },
    "target_text": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 500
        },
        {
          "type": "null"
        }
      ],
      "title": "Target Text",
      "default": null,
      "description": "Optional target within the claim, as written in the blueprint."
    },
    "assessment_id": {
      "type": "string",
      "title": "Assessment Id",
      "maxLength": 100,
      "description": "Test id from list_assessments, e.g. 'gmas_g05_math'."
    }
  }
}
standards_for_claim output schema
{
  "type": "object",
  "title": "standards_for_claimDictOutput",
  "additionalProperties": true
}
standards_for_claim annotations
{
  "title": "List Standards in a Blueprint Category",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
browse_standards — Browse Standards
Advertised by the server during the last successful anonymous check.
Advertised read-only

Walk the Georgia standards hierarchy one level at a time. With no arguments, returns the four subjects. Pass `subject` (optionally with `grade`) for that subject's courses, or pass a row's `id` back as `parent` to open it. `grade` works only with `subject` (or a `subject:<subj>` parent) and is ignored when opening any other row. Math courses have a strand layer between course and standard. Each row has an `id` (pass it back as `parent`), `code`, `title`, `cf_item_type` (the row's level in the state's data: Course, Domain, Content Standard, and so on), `kind`, `has_children`, `child_count`, and `gmas` / `ald` flags (whether the Milestones blueprints or the achievement-level descriptors cover it).

browse_standards input schema
{
  "type": "object",
  "title": "browse_standardsArguments",
  "properties": {
    "grade": {
      "anyOf": [
        {
          "enum": [
            "K",
            "KG",
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10",
            "11",
            "12",
            "1",
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Grade",
      "default": null,
      "description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work. Requires subject."
    },
    "parent": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Parent",
      "default": null,
      "description": "A row `id` from an earlier call: a row identifier, 'subject:<subject>', or 'synth:math_strand:<course id>:<strand code>'."
    },
    "subject": {
      "anyOf": [
        {
          "enum": [
            "ela",
            "math",
            "science",
            "social_studies"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject",
      "default": null,
      "description": "Subject: 'ela', 'math', 'science', or 'social_studies'."
    }
  }
}
browse_standards output schema
{
  "type": "object",
  "title": "browse_standardsDictOutput",
  "additionalProperties": true
}
browse_standards annotations
{
  "title": "Browse Standards",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_subject_grade_tree — Get All Standards for a Grade
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return every standard for one subject and grade in a single call, as a nested tree: the one-call alternative to repeated browse_standards calls (e.g. 'list all the 4th grade ELA standards'). `subject` and `grade` are required. Each node has `id`, `code`, `title`, `cf_item_type`, `kind`, `strand_code`, `gmas` / `ald` coverage flags, and nested `children`. It carries no achievement-level or test text; follow up on specific codes with get_standard_details or lookup_standards_by_code. Retired rows and empty containers are left out. High school (grades 9-12) is organized by course, with up to 18 courses per grade. Without `course`, a high-school grade returns `courses` (each course's `id`, `code`, `title`, and `standard_count`) instead of the full tree; call again with `course` set to a title, code, or id from that list (or a name like 'algebra i') for that course's standards. `strand_code` narrows any tree to one strand. Returns `tree`, `node_count`, and `standard_count` (nodes that carry a code).

get_subject_grade_tree input schema
{
  "type": "object",
  "title": "get_subject_grade_treeArguments",
  "required": [
    "subject",
    "grade"
  ],
  "properties": {
    "grade": {
      "enum": [
        "K",
        "KG",
        "01",
        "02",
        "03",
        "04",
        "05",
        "06",
        "07",
        "08",
        "09",
        "10",
        "11",
        "12",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9"
      ],
      "type": "string",
      "title": "Grade",
      "description": "One grade: 'K' (or 'KG') or '01' through '12'. '1' through '9' also work."
    },
    "course": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 200
        },
        {
          "type": "null"
        }
      ],
      "title": "Course",
      "default": null,
      "description": "High-school course: a title, code, or id from the `courses` list, or a name like 'algebra i' or 'biology'."
    },
    "subject": {
      "enum": [
        "ela",
        "math",
        "science",
        "social_studies"
      ],
      "type": "string",
      "title": "Subject",
      "description": "Subject: 'ela', 'math', 'science', or 'social_studies'."
    },
    "strand_code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Strand Code",
      "default": null,
      "description": "Optional strand, by code ('NR') or name ('Numerical Reasoning'). describe_vocabulary lists the strands for each subject."
    }
  }
}
get_subject_grade_tree output schema
{
  "type": "object",
  "title": "get_subject_grade_treeDictOutput",
  "additionalProperties": true
}
get_subject_grade_tree annotations
{
  "title": "Get All Standards for a Grade",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_vertical_progression — Trace a Strand Across Grades
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compare one strand year over year, for pacing, remediation, and differentiation. Pass a `code` (e.g. '5.NR.1') to line that standard up against the same code at every grade ('3.NR.1', '4.NR.1', ...), or pass `subject` + `strand_code` (name or code) for the whole strand. Returns `grades`, each with `grade`, `grade_label`, and `standards` (code, statement, and gmas/ald flags). If the strand can't be identified, the result is an error.

get_vertical_progression input schema
{
  "type": "object",
  "title": "get_vertical_progressionArguments",
  "properties": {
    "code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 40
        },
        {
          "type": "null"
        }
      ],
      "title": "Code",
      "default": null,
      "description": "A standard code to trace, e.g. '5.NR.1'."
    },
    "subject": {
      "anyOf": [
        {
          "enum": [
            "ela",
            "math",
            "science",
            "social_studies"
          ],
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Subject",
      "default": null,
      "description": "Subject: 'ela', 'math', 'science', or 'social_studies'. Use with strand_code."
    },
    "strand_code": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ],
      "title": "Strand Code",
      "default": null,
      "description": "Strand code ('NR') or name ('Numerical Reasoning'). Use with subject."
    }
  }
}
get_vertical_progression output schema
{
  "type": "object",
  "title": "get_vertical_progressionDictOutput",
  "additionalProperties": true
}
get_vertical_progression annotations
{
  "title": "Trace a Strand Across Grades",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_standard_details — Get Standard Details
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full detail for one standard or container, addressed by its code (e.g. '5.NR.3.3', 'S8P1') or by an `id` returned by browse_standards or get_subject_grade_tree. Returns `found`, `id`, `code` (null for containers), `statement`, `subject`, `grades`, `strand_code` / `strand_name`, `hs_course`, `cf_item_type`, `kind`, `path` (where it sits in the curriculum), `notes`, `parent`, `children` (with gmas/ald flags), `alds` (achievement-level descriptions; sub-codes show their parent's), `assessment_coverage` (Milestones claim, target, points, qualifier), and `assessment_metadata` keyed by assessment_id; the server instructions explain how to read points and levels. Containers (domains, clusters, courses) are reachable only by `id` and carry no descriptors or coverage. An unknown code or id is an error; for older MGSE/ELAGSE codes use lookup_standards_by_code, which translates them.

get_standard_details input schema
{
  "type": "object",
  "title": "get_standard_detailsArguments",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "title": "Id",
      "maxLength": 200,
      "description": "A standard code such as '5.NR.3.3', or a row `id` from browse_standards or get_subject_grade_tree."
    }
  }
}
get_standard_details output schema
{
  "type": "object",
  "title": "get_standard_detailsDictOutput",
  "additionalProperties": true
}
get_standard_details annotations
{
  "title": "Get Standard Details",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
describe_vocabulary — List Valid Filter Values
Advertised by the server during the last successful anonymous check.
Advertised read-only

List the exact values the other tools' filters accept, so a search doesn't come back empty because of a typo. Returns `subjects` (id and label), `grades` (value and label), `hs_courses` (the course names the `course` filter accepts, with their subject), `strands` by subject (code and name; either works as `strand_code`), the four `ald_levels` (achievement levels), and the `assessments` catalog of Milestones tests.

describe_vocabulary input schema
{
  "type": "object",
  "title": "describe_vocabularyArguments",
  "properties": {}
}
describe_vocabulary output schema
{
  "type": "object",
  "title": "describe_vocabularyDictOutput",
  "additionalProperties": true
}
describe_vocabulary annotations
{
  "title": "List Valid Filter Values",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

0 advertised

No prompt definitions available.

Resources

0 advertised

No resource definitions available.

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
1299 ms
95th percentile latency
1299 ms

Maintenance history

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

  • · probe · passed · 1299 ms · metadata changed · 11 tool(s), 0 resource(s), 0 resource template(s), 0 prompt(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 georgia-homeroom-mcp https://mcp.georgiahomeroom.org/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 georgia-homeroom-mcp --url https://mcp.georgiahomeroom.org/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable georgia-homeroom-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "georgia-homeroom-mcp": {
      "url": "https://mcp.georgiahomeroom.org/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "georgia-homeroom-mcp": {
      "type": "streamableHttp",
      "url": "https://mcp.georgiahomeroom.org/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start georgia-homeroom-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "georgia-homeroom-mcp": {
      "type": "http",
      "url": "https://mcp.georgiahomeroom.org/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 georgia-homeroom-mcp https://mcp.georgiahomeroom.org/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "georgia-homeroom-mcp": {
      "url": "https://mcp.georgiahomeroom.org/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": {
    "georgia-homeroom-mcp": {
      "serverUrl": "https://mcp.georgiahomeroom.org/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run Georgia Homeroom MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing