Parcel MCP Server

Parcel MCP Server

A read-only Model Context Protocol server over the nationwide parcel layer — eight structured tools an AI assistant or agent can call directly, authenticated with your existing API token.

The Parcel MCP Server exposes the nationwide parcel layer over the Model Context Protocol so an AI assistant or agent can query 157M+ U.S. parcels — ownership, assessed values, land use, acreage, building attributes, and geometry — without you writing any CQL, SQL, or client code.

It is the same serving layer behind the Web API: every MCP tool call becomes a WFS query against pro:parcel_us, so results match what the WMS/WFS endpoints return, on the same refresh cycle.

MCP access is included in the Pro plan at no additional cost, with a per-plan allowance of tool calls you can see alongside your other quotas on your account page. The Bearer token is the same one you already use for the /pro tile and WFS endpoints.

Endpoints

MethodPathPurpose
ANYhttps://api.landrecords.us/mcpStreamable HTTP transport — this is the endpoint to give your client
GEThttps://api.landrecords.us/mcp/sseLegacy SSE handshake (older clients)
POSThttps://api.landrecords.us/mcp/messages/Legacy SSE message channel
GEThttps://api.landrecords.us/mcp/healthUnauthenticated liveness check
GEThttps://api.landrecords.us/mcp/.well-known/oauth-authorization-serverOAuth 2.0 metadata
GET POSThttps://api.landrecords.us/mcp/authorize, /mcp/token, /mcp/loginOAuth authorization-code flow (see Connecting a client)

https://api.landrecords.us/mcp/ with a trailing slash is the same endpoint as /mcp — use whichever form your client's config prefers.

Every endpoint except /mcp/health and the OAuth flow itself requires an Authorization header holding the word Bearer, a space, and your API token:

Authorization: Bearer 3f2b1c9e-7a41-4d88-9b02-e5c6d7a81234

The transport is stateless, so that header goes on every request rather than a one-time login — see Setting the Authorization header for the exact form each client wants. CORS is open, so desktop and browser-based MCP clients can connect directly.

The server identifies itself as landrecords-parcel-mcp.

The eight tools

ToolWhat it does
parcel_schemaLists every queryable column with its type and a plain-language description
parcel_queryStructured where filter over any non-spatial column
parcel_countSame filter, returns only a count
parcel_by_idOne parcel by its lrid UUID
parcel_by_addressGeocodes a free-form address, returns the parcels around that point
parcel_near_pointParcels within a radius (meters) of a lon/lat
parcel_within_bboxParcels intersecting a WGS84 bounding box
parcel_within_polygonParcels intersecting a GeoJSON Polygon or MultiPolygon

All eight are read-only — there is no tool that can write, update, or delete anything. See Limits and safety for the row caps, column allow-list, and metering behavior.

Quick start

1. Confirm the server is reachable

curl https://api.landrecords.us/mcp/health
{ "status": "ok", "server": "landrecords-parcel-mcp" }

This endpoint takes no authentication — it only tells you the process is up, not that your token works.

2. Add the server to your client

For Claude Code — the whole header is a single quoted argument, and double quotes so the shell expands your token:

export LR_TOKEN=<your-api-token>

claude mcp add --transport http landrecords \
  https://api.landrecords.us/mcp \
  --header "Authorization: Bearer $LR_TOKEN"

For Claude Desktop and other clients that expect a local command, mcp-remote bridges to the hosted server — see Connecting a client for the config file, the OAuth flow, and per-client notes.

3. Ask a question

"Who owns 1600 Pennsylvania Ave NW, Washington DC, and what's it assessed at?"

The assistant calls parcel_by_address, reads back the geocode it matched, and reports the owner and value from the parcel that came back. A good first prompt for any new session is simply "call parcel_schema and tell me what columns are available" — that grounds the model in the real schema before it writes a filter.

Why MCP instead of calling the WFS directly

The Web API has always been available, but handing a language model a raw OGC service means handing it CQL syntax, layer names, projections, and a 50-column schema it has to guess at. MCP inverts that: the server advertises what tools exist, what arguments they take, and what each column means, and the model composes the query. There is no SQL to write, no CQL to escape, and no client library to build.

Use the Web API directly when you are rendering tiles, wiring a map, or running a fixed query from application code. Use MCP when a model or agent is deciding what to ask.

Next

  • Connecting a client — Claude Code, Claude Desktop, OAuth, raw JSON-RPC
  • Tool reference — arguments, filter operators, and response shapes for all eight tools
  • Examples — conversational recipes plus programmatic agents in Python and TypeScript
  • Limits and safety — row caps, quotas, error shapes, troubleshooting

On this page