census-geocoding-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@census-geocoding-mcpgeocode 1600 Pennsylvania Ave NW, Washington DC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
πΊοΈ Census Geocoding MCP
An MCP (Model Context Protocol) server that gives AI assistants full access to the U.S. Census Bureau Geocoding Services API. Geocode addresses, reverse-geocode coordinates, and retrieve Census geographies β all without an API key.
β¨ Features
π No API key required β the Census Geocoding API is completely free and public
π Single-record geocoding β one-line or parsed addresses (stateside + Puerto Rico)
ποΈ Geography lookup β resolve addresses or coordinates to Census tracts, blocks, counties, congressional districts, and more
π¦ Batch processing β up to 10,000 records per request, as CSV or structured arrays
π Puerto Rico support β dedicated endpoints with Urbanization and Municipio fields
ποΈ Benchmark & vintage control β target specific MAF/TIGER database versions and Census geography vintages
π¦ TypeScript β fully typed, ESM, Node.js β₯ 18
Related MCP server: chuk-mcp-geocoder
π§° Tools (12 total)
π Discovery
Tool | Description |
| List all available MAF/TIGER locator database versions |
| List vintages (Census geography versions) for a given benchmark |
π Single-Record Geocoding (Locations)
Tool | Description |
| Geocode a full address on one line |
| Geocode a US (stateside) address with separate fields |
| Geocode a Puerto Rico address (supports Urbanization & Municipio) |
πΊοΈ Single-Record Geography Lookup
Tool | Description |
| Geocode a one-line address + return Census geographies |
| Geocode a parsed address + return Census geographies |
| Geocode a PR address + return Census geographies |
| Look up Census geographies for a lon/lat coordinate pair |
π¦ Batch Processing
Tool | Description |
| Batch geocode up to 10,000 addresses (coordinates only) |
| Batch geocode up to 10,000 addresses + Census geographies |
| Batch geography lookup for up to 10,000 coordinate pairs |
π Quick Start
Prerequisites
Node.js β₯ 18.0.0
Install & Build
git clone https://github.com/your-username/census-geocoding-mcp.git
cd census-geocoding-mcp
npm install
npm run buildAdd to Claude Desktop
Edit your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"census-geocoding": {
"command": "node",
"args": ["/absolute/path/to/census-geocoding-mcp/dist/index.js"]
}
}
}Restart Claude Desktop β the 12 geocoding tools will be available immediately.
π οΈ Tool Reference
list_benchmarks
Lists all available benchmarks (MAF/TIGER locator database versions).
No parameters required.list_vintages
Lists all vintages available for a given benchmark.
Parameter | Type | Required | Description |
| string | β | Benchmark name or ID (e.g. |
geocode_oneline_address
Geocode a complete address provided as a single string.
Parameter | Type | Required | Description |
| string | β | Full address, e.g. |
| string | β | Default: |
Returns: matched address, interpolated coordinates, Tigerline ID, address range components.
geocode_parsed_address
Geocode a US stateside address with fields parsed separately. Requires at minimum street + zip OR street + city + state.
Parameter | Type | Required | Description |
| string | β | House number and street name |
| string | β | City name |
| string | β | 2-letter state abbreviation |
| string | β | 5-digit ZIP code |
| string | β | Default: |
geocode_pr_address
Geocode a Puerto Rico address with optional Urbanization and Municipio.
Parameter | Type | Required | Description |
| string | β | House number and street name |
| string | β | Urbanization name |
| string | β | City name |
| string | β | Municipio name |
| string | β | ZIP code (begins with 006, 007, or 009) |
| string | β | Default: |
find_geographies_oneline / find_geographies_parsed / find_geographies_pr
Same parameters as their geocode_* counterparts, plus:
Parameter | Type | Required | Description |
| string | β | Default: |
| string | β | Comma-delimited layer names/IDs, or |
Geography layers returned include: States, Counties, Census Tracts, Census Blocks, Congressional Districts, County Subdivisions, Incorporated Places, State Legislative Districts, Urban Areas, Combined Statistical Areas, and more.
find_geographies_coordinates
Reverse geocode a coordinate pair to Census geographies.
Parameter | Type | Required | Description |
| number | β | Longitude (X) in decimal degrees, range |
| number | β | Latitude (Y) in decimal degrees, range |
| string | β | Default: |
| string | β | Default: |
| string | β | Comma-delimited layer names/IDs, or |
batch_geocode_locations
Batch geocode up to 10,000 addresses. Accepts either raw CSV or a structured array.
Parameter | Type | Required | Description |
| string | β | Raw CSV: |
| array | β | Array of |
| string | β | Default: |
csv_contenttakes precedence if both are provided. At least one must be supplied.
Returns CSV columns: Record ID, Input Address, Match Indicator, Match Type, Output Address, Coordinates, Tigerline ID, Tigerline Side.
batch_geocode_geographies
Like batch_geocode_locations but also returns Census geography codes.
Additional parameter:
Parameter | Type | Required | Description |
| string | β | Default: |
Returns CSV columns: all location columns + State Code, County Code, Tract Code, Block Code.
batch_geolookup_coordinates
Batch geography lookup for coordinate pairs.
Parameter | Type | Required | Description |
| string | β | Raw CSV: |
| array | β | Array of |
| string | β | Default: |
| string | β | Default: |
π‘ Example Prompts
Once connected to Claude Desktop, try prompts like:
"What Census tract and block is 1600 Pennsylvania Avenue NW, Washington DC in?"
"Geocode these 500 addresses and give me their lat/lon coordinates" (paste a CSV)
"What congressional district is at longitude -87.6298, latitude 41.8781?"
"List all available Census geocoding benchmarks"
"Geocode this Puerto Rico address: 123 Calle Luna, Urb El ParaΓso, San Juan, PR 00926"
βοΈ Development
# Watch mode (recompile on save)
npm run dev
# One-time build
npm run build
# Run the server directly
npm startπ Notes & Limits
Batch limit: 10,000 records per file β enforced client-side before the request is sent; exceeding it raises a clear error immediately
Batch size limit: CSV content is additionally capped at 5 MB (UTF-8 bytes) β this catches oversized inputs that could pass the row count check via very long lines
No authentication required β all endpoints are public
Single-record responses are JSON; batch responses are CSV text
Default benchmark:
Public_AR_Current(current MAF/TIGER database)Default vintage:
Current_Current(required for all geography endpoints)Request timeout: all API calls time out after 30 seconds; the server raises an abort error rather than hanging indefinitely
Input length validation: all string parameters have maximum lengths enforced before any network request is made (
address200 chars,street/city/urb/municipio100,state/zip10,benchmark/vintage50,layers500)Coordinate validation:
longitudemust be in[-180, 180]andlatitudein[-90, 90]; out-of-range values are rejected before the request is sentCSV field escaping: address fields passed to batch endpoints are escaped per RFC 4180 (embedded quotes doubled, fields containing commas or newlines quoted) to prevent malformed CSV
The underlying API is provided by the U.S. Census Bureau and subject to their terms of service
π References
βοΈ License
This project is licensed under the MIT License.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hesscl/census-geocoding-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server