Georgia Civic Data

org.georgiacivicdata/georgia-civic-data · v0.1.0 · data-and-databases

Georgia Civic Data is healthy: it completed an MCP handshake in 1108 ms and exposes 13 tools.

Georgia education, Census, and immigration data: query, filter, aggregate, and link datasets.

Endpoint: https://mcp.georgiacivicdata.org/mcp/ (streamable-http)

Repository · Website · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count13
Latency1108 ms
Last checked (UTC)2026-10-16T19:35:42.704Z

Health history

Checked (UTC)StatusLatencyError
2026-10-16T19:35:42.704ZHealthy1108
2026-10-15T13:05:10.400ZHealthy2467

Tools (13)

list_datasetsEnumerate every approved Georgia dataset (topic) and the shared dimensions. Each topic entry is a LEAN summary — name/keys, year coverage (year_min/year_max + year_gaps), detail levels + default detail, a has_demographic flag (false = no demographic axis, so there is no all-students demographic row
search_datasetsKeyword search over the catalog metadata (topic names, descriptions, tags, AND column names/descriptions) — the discovery entry point when you don't know the exact topic name. Returns lean topic summaries per hit with a relevance score and which fields matched, plus a `dimension_matches` list when t
describe_datasetFull schema for one topic: every column (name/type/role/unit/value range/null-meaning), the exact `filters` list with enum values (read this before query_dataset — it is the authoritative set of filter keys), the FK→dimension join shape (`foreign_keys`), example queries, usage, limitations, null sem
query_datasetQuery one topic's gold facts with dimension labels joined in (the district/school/county/demographic names come back on every row). `filters` is a dict of column → value or list-of-values: FK codes (district_code, school_code, county_fips, demographic) and any categorical column — see describe_datas
distinct_valuesList the distinct values of ONE filterable column of a topic — the fast way to learn valid filter values before query_dataset, especially for FREE categoricals and FK codes (district_code/school_code/county_fips/demographic) that carry no enum in describe_dataset (a wrong guess otherwise returns an
aggregateCompute a grouped aggregate over one topic — the aggregation-first path. `agg` is one of avg/sum/min/max/count/weighted_rate; `metric` is a metric column (DEFAULTS to the topic key_metric; ignored for count); `group_by` is a list of grain columns (year, FK codes like district_code or county_fips, or
resolve_entityResolve a place or demographic NAME or CODE to its stable keys + labels — the right way to turn 'Atlanta Public Schools' / 'Fulton' / a raw code into the district_code / school_code / county_fips / demographic to filter by (a wrong code guess otherwise returns an empty query_dataset page). `kind` is
describe_dimensionSchema for one dimension (districts / schools / counties / demographics): the (possibly composite) primary key, the attribute columns a join attaches, the cross-dataset `link_keys` (e.g. districts.district_census_id → Census via the crosswalk — a 5-digit school-district code, NOT a county FIPS), and
get_dimensionPaginated read of a dimension table — the label lookups (district names, school names, county names, demographic labels). Rows are ordered by the dimension's primary key so paging is stable. Use describe_dimension for the schema and link keys. Small page defaults; `truncated` + a `bulk_export` point
get_contractReturn the authoritative ODCS v3.2 data contract for a topic (kind='topic') or a dimension (kind='dimension') so you can consume the machine-readable schema without cloning the repo. fmt='yaml' (default) returns the document verbatim as text; fmt='json' returns it parsed. Only approved topics and lo
lookup_school_zoneWhich Georgia public school attendance zones (elementary, middle, high) contain a place, or (attendance_rules=true) how attendance zones work in Georgia. Give exactly one of: lat + lon; an address (geocoded by the U.S. Census Geocoder); a 2020 census tract_geoid (returns every zone covering the trac
link_tablesList the tables link_query can read (curated gold paths only) and the join keys that bridge facts → dimensions → Census geography. Call this BEFORE writing a link_query. Two-tier to stay context-cheap: with NO arguments it returns a LEAN index — every table's name, grain, detail levels, default `rea
link_queryRun a cross-dataset / cross-topic analytical SQL query that the per-topic query_dataset filters can't express — e.g. join education, Census, or immigration facts to a dimension (or another dataset) on shared geography (immigration and Census county topics share county_fips directly). READ-ONLY, SAND