Connect Claude Desktop, Cursor, or any MCP client to the UrbanKit parcel atlas. Six tools, one endpoint, no API key — address to APN, FIPS lookup, county REST endpoint discovery.
https://urbankitstudio.com/api/mcpJSON-RPC 2.0 over HTTP. MCP spec 2025-06-18.
6 tools covering geocoding, atlas discovery, and county endpoint lookup.
Open claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/; Windows: %APPDATA%\Claude\) and add or merge in this block:
{
"mcpServers": {
"urbankit-atlas": {
"url": "https://urbankitstudio.com/api/mcp"
}
}
}Restart Claude Desktop. In a fresh conversation ask: "What urbankit-atlas tools do you have?" — Claude will list the six tools it discovered. Try "Find the parcel number for 100 N Lake St in Aurora IL."
The server speaks plain JSON-RPC, so you can hit it with curl to verify connectivity before configuring a client:
curl -X POST https://urbankitstudio.com/api/mcp \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize"}'The response includes serverInfo, protocolVersion, and a short instructions string Claude reads before deciding which tool to call.
Each tool below is a function the AI can call. Click "Example call" to see the JSON-RPC payload — useful for testing without a client.
Resolve a U.S. street address to its county parcel record end-to-end. Returns the geocoded match, the county FIPS, and — if the county is indexed — the REST endpoint, searchable fields, and a deep link.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "find_parcel_by_address",
"arguments": {
"address": "100 N Lake St Aurora IL"
}
}
}Resolve a U.S. address to lat/lon, state FIPS, and county FIPS via the U.S. Census Geocoder. Use when you only need the geographic resolution.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "geocode_address",
"arguments": {
"address": "1600 Pennsylvania Ave NW Washington DC"
}
}
}List the states the UrbanKit atlas covers, with county counts. Discovery surface.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_indexed_states",
"arguments": {}
}
}List the indexed counties for a state, with their REST endpoint URLs and searchable field names.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_counties_in_state",
"arguments": {
"state_slug": "illinois"
}
}
}Look up a county in the atlas by 5-digit FIPS code (state + county). Use after geocode_address to chain into atlas tools.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "find_county_by_fips",
"arguments": {
"fips": "17089"
}
}
}Fetch the canonical record for one specific county — endpoint URL, all searchable fields, sample query, and contact info.
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_county_endpoint",
"arguments": {
"state_slug": "illinois",
"county_slug": "kane-county"
}
}
}find_parcel_by_address.list_indexed_states.get_county_endpoint with state and county slugs.find_county_by_fips.geocode_address.MCP is an open standard for connecting AI assistants like Claude Desktop, Cursor, and ChatGPT to external tools and data sources. Anthropic published the spec in late 2024; Claude Desktop, Cursor, and the OpenAI Apps SDK all added MCP support within a year. An MCP server exposes tools (functions the AI can call) over JSON-RPC. When you configure your AI client to talk to a server, the AI discovers the available tools via tools/list and calls them as needed.
It exposes the UrbanKit parcel atlas (117 indexed U.S. counties across 39 states, growing) and the U.S. Census Geocoder as six callable tools. Ask Claude something like "what's the parcel number for 100 N Lake St in Aurora IL?" and it can call find_parcel_by_address directly — no copy-pasting, no screen-scraping, no manual website navigation.
No. The server is public read-only and surfaces exactly the same county REST endpoints the website surfaces. There is no usage cap on the server side. Your AI client (Claude Desktop, Cursor, etc.) pays the LLM-token cost on its own subscription. Our cost is the Vercel function invocation, which is negligible.
Two things. First, the AI calls tools directly and stitches the results into its reasoning — no "open this link, then open this other link" dance. Second, the response is structured JSON, not HTML — so the AI can chain results into follow-up questions like "now query the Kane County REST endpoint for properties owned by Smith." The website is for humans; the MCP server is for agents.
Any MCP-spec-compliant client. Claude Desktop is the canonical one (config snippet below). Cursor, Continue, and other IDE-integrated AI tools have MCP support. The OpenAI Apps SDK added remote MCP support in 2025. Any client speaking JSON-RPC 2.0 over Streamable HTTP per the 2025-06-18 spec will work.
The MCP server source is a single Vercel Edge Function in the urbankitstudio repo on GitHub. The atlas data files (one JSON per state) are served from the same domain and are themselves the source of truth — no hidden database. You can copy this server, point it at a different atlas, and run your own.
The endpoint is fronted by Vercel + Cloudflare. The expensive operation — loading atlas JSON — is cached at the edge with TTL 300 seconds. The county REST endpoints are not proxied through this server; if a tool's response says "see this REST endpoint URL," your client queries the county directly. So the MCP server itself has minimal moving parts to overwhelm.
Browser version of find_parcel_by_address — for humans without a Claude subscription.
The full index of indexed counties — the same data the MCP server surfaces, browsable by state.
BrowseQuery any county's ArcGIS REST endpoint from the browser — the underlying capability the MCP tools deep-link into.
Open tool