Skip to main content
Glama
ajwann

Charlotte Open Data MCP Server

by ajwann

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_address_profileA

Everything that serves or governs a location, in one call.

Returns city council district and representative, county commissioner, CMPD patrol division, first-due fire station, trash/recycling/yard-waste days, zoning, FEMA flood zone, historic district, ZIP code, and tax parcel ID.

lookup_addressB

Find an address in Mecklenburg County's official master address list.

Returns matches with coordinates, tax parcel ID, municipality, and ZIP code.

get_trash_and_recycling_scheduleB

Garbage, recycling, and yard-waste collection days for an address in Charlotte.

get_crime_nearA

CMPD police incident reports near a location: counts by offense and the latest reports.

Answers "is there much crime near 123 Main St?" or "any car break-ins near me lately?".

summarize_crimeA

Citywide CMPD incident counts grouped by offense, division, year, or neighborhood.

Use group_by='year' with an offense filter for trends, e.g. robberies per year since 2017.

get_traffic_crashes_nearA

Reported traffic crashes near a location, with counts by severity.

Useful for "is this intersection dangerous?" or traffic-calming requests.

get_311_requests_nearA

311 service requests reported near a location, with counts by request type.

Shows whether a problem (pothole, missed pickup, dumping, streetlight) was already reported.

get_code_enforcement_casesB

Housing and neighborhood code enforcement cases at or near an address.

Covers nuisance (junk, overgrown lots), minimum housing, zoning, graffiti, and parking violations. Useful for renters, buyers, and neighbors.

get_street_closuresA

Street and lane closures and detours published by CDOT, citywide or near a location.

get_capital_projects_nearB

City capital projects (roads, sidewalks, parks, facilities) near a location.

Includes phase, schedule, budget, and the project manager's contact information.

get_pending_rezoningsB

Rezoning petitions currently in process, citywide or near a location.

Shows the petitioner, existing and requested zoning, acreage, and a link to the petition.

find_nearby_placesA

Nearest public places of one type, sorted by straight-line distance.

Categories include libraries, public schools, parks, greenways, fire and police stations, post offices, pharmacies, grocery stores, medical facilities, child care, EV chargers, park-and-ride lots, light rail stations, bus stops, YMCAs, places of worship, and public Wi-Fi. Bus stop IDs can be used with CATS real-time arrival services.

get_bus_routeA

CATS bus routes with scheduled frequency (minutes between buses) by time of day.

For stops near an address use find_nearby_places with category 'bus_stop'.

get_city_budgetB

City of Charlotte budget totals for a fiscal year by department, fund, or expense type.

get_city_salary_statsA

Pay statistics for City of Charlotte employees: head count and annual pay rates.

Aggregated by department or job title for one quarter (the latest by default); individual employees are not listed.

search_datasetsA

Search the Charlotte Open Data Portal catalog (about 380 datasets) by keyword.

Use this to find data the purpose-built tools don't cover. Pass a result's layer_url to describe_dataset, query_dataset, or summarize_dataset.

describe_datasetA

Show a dataset layer's description, record count, and fields.

Call this before query_dataset or summarize_dataset to learn field names and types.

query_datasetB

Fetch records from any portal dataset layer with a SQL filter, optionally near a place.

summarize_datasetA

Count or aggregate any portal dataset server-side, grouped by up to three fields.

Answers questions like "how many 311 requests of each type were made in ZIP 28205?". Rows are sorted by the statistic, largest first, in a column named stat_value.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 19 tools

Disambiguation4/5

Most tools map to distinct data domains (311, crime, crashes, budget, etc.), but get_address_profile duplicates several specialized capabilities—especially trash/recycling schedule—and the generic query_dataset/summarize_dataset can answer questions also covered by purpose-built tools. Descriptions provide guidance (e.g., search_datasets says to use purpose-built tools first), so misselection risk is moderate but present.

Naming Consistency5/5

All 19 tools use snake_case with a verb-first pattern (get_, lookup_, summarize_, find_, search_, describe_, query_), and resource names are clear and predictable. Minor verb variety (get vs lookup vs find) is semantically appropriate and does not break consistency.

Tool Count4/5

19 tools is on the higher side but justified by the breadth of Charlotte open data (address, transit, safety, budget, etc.) plus a generic dataset access layer. Each tool targets a distinct data type, though the composite address profile and generic trio create some redundancy.

Completeness4/5

The surface covers major city data domains and the generic search/describe/query/summarize tools allow access to any of ~380 portal datasets, so agents can answer most questions without dead ends. Minor gaps include real-time transit arrivals and a dedicated bus stop tool (handled indirectly via find_nearby_places), but overall coverage is strong.

Maintenance

ActivityMaintained
ResponsivenessNo issues