Planetary-scale answers, unlocked.
A Hands-On Guide for Working with Large-Scale Spatial Data. Learn more.
Authors
A Model Context Protocol (MCP) server is a program that gives an AI agent tools it can call and data it can read. Anthropic released MCP as an open standard on 25 November 2024. With a spatial MCP server, an agent can find a map table, read its columns, and run a spatial query that returns a measured number.
We tested that with one question for Claude Code, Anthropic's coding agent: how many buildings does Overture Maps record inside San Francisco? On 9 November 2026, with no tools, Claude Code gave no number, and through the Wherobots MCP server it counted 162,538 buildings in 233 seconds. That count covers buildings in Overture's open map data whose center falls inside the city's land boundary. The city's own file lists 177,023 footprints.
An MCP server is one side of a connection defined by the Model Context Protocol specification. The specification names three roles. A host is the AI application a person uses, such as Claude Code, Cursor or ChatGPT. A client is the part of the host that holds the connection to one server. A server is the program that offers the tools and data.
Anthropic described MCP at launch as a standard for "connecting AI assistants to the systems where data lives." It shipped the specification and servers for Google Drive, Slack, GitHub, Git, Postgres and Puppeteer. It also shipped software development kits (SDKs), code libraries for building servers and clients. The specification says MCP took inspiration from the Language Server Protocol, Microsoft's standard that lets one code editor support many programming languages. MCP applies the same idea to AI applications and the tools they use.
Before MCP, each AI application needed its own code for each service it used. With MCP, a team writes one server for its service, and every host that supports MCP can use it.
A server offers three kinds of features:
Messages follow JSON-RPC 2.0. Each request is written in JSON (JavaScript Object Notation, a text format for data) and names a method and its inputs. The client asks for the tool list with tools/list.
tools/list
Each tool comes back with a name, a description in words and a JSON Schema, a formal list of the inputs it accepts. To run a tool, the client sends tools/call with the tool's name and arguments, the inputs for that call. The server returns the result.
tools/call
The transports section of the specification defines two standard ways to carry those messages:
https://api.cloud.wherobots.com/mcp/
Remote servers need to know who is calling. The MCP authorization section builds on OAuth, the web standard for signing in to one service from another (the OAuth 2.0 standard from the Internet Engineering Task Force). The Wherobots server accepts OAuth sign-in in the browser. For scripts and editors without OAuth support, it accepts an API key, a secret string that identifies your account, in an x-api-key header.
x-api-key
The specification says there should always be a human able to deny a tool call. Claude Code asks before each tool call unless you approve that tool in advance.
An application programming interface (API) is the set of requests one service accepts, in that service's own format. MCP is one format for every service, and it adds the descriptions a language model needs to choose a call.
Many MCP servers sit in front of an existing API. The Wherobots MCP server and the Wherobots command line tool both send requests to Wherobots Cloud. The command line tool covers the full API, such as starting job runs. The MCP server covers what an agent needs to explore data and run spatial SQL.
The Wherobots docs describe its SQL as read-only. On 9 November 2026, though, the server also listed submit_write_query and submit_destructive_query to our account. Those tools create, change or delete tables, so approve them only when a task needs them.
submit_write_query
submit_destructive_query
Language models learn from text, documents, databases, and the internet. They learn something about places from that text. Rohin Manvi and colleagues published GeoLLM at the International Conference on Learning Representations (ICLR) in 2024. They showed that prompts built from map data can draw estimates of population density and wealth from a model.
Wes Gurnee and Max Tegmark published Language Models Represent Space and Time in 2023. They found that a place's latitude and longitude can be read from the numbers a model computes for that place's name.
Those are estimates, and a spatial question often needs a count or a distance. How many buildings stand in a flood zone? Which roads stay open within 5 km of a fire? Answers like these come from joining shapes in a known coordinate system, the reference that fixes where each shape lies. The data changes with each new release.
Training text rarely holds counts like these for a given place and date. Context engineering, the practice of choosing what information a model receives for a task, works on this gap. A context engine for physical world data computes relations like these at the time of the question.
A spatial MCP server lets an agent send that computation to a database. The agent writes the query, and a geospatial database runs it and returns the number.
The question. We asked Claude Code: "How many buildings in Overture Maps lie inside the city of San Francisco, and what is their total footprint area in square kilometers?" Overture Maps is an open map dataset from the Overture Maps Foundation, and Wherobots hosts it in the Havasu catalog.
The claim and what would support it. The claim is that a spatial MCP server lets an agent return a measured number it cannot give from memory. If it holds, the agent with no tools gives no measured number, and the agent with the server returns one that a rerun and an outside source confirm. If the agent without tools gave a number close to the measured one, the claim would be weaker.
Run 1, no tools. We turned off every tool, including web search. Claude Code answered in 16 seconds that it had no way to run a query. It gave no number, and it wrote a SQL query for us to run. It noted that the answer depends on what counts as "inside" and on which boundary is used.
Run 2, with the Wherobots MCP server. Claude Code made 13 calls to the server in 233 seconds:
describe_table
get_query_results
This is the query we ran again from a separate session. It keeps the agent's join and filters, and it looks up the boundary by name in place of the code number the agent used:
WITH sf AS ( SELECT geometry AS g FROM wherobots_open_data.overture_maps_foundation.divisions_division_area WHERE country = 'US' AND region = 'US-CA' AND subtype = 'county' AND names.primary = 'San Francisco' AND is_land = true ), b AS ( SELECT geometry FROM wherobots_open_data.overture_maps_foundation.buildings_building WHERE bbox.xmin <= -122.3277 AND bbox.xmax >= -122.5297 AND bbox.ymin <= 37.8638 AND bbox.ymax >= 37.7082 ) SELECT COUNT(*) AS buildings, ROUND(SUM(ST_AreaSpheroid(b.geometry)) / 1e6, 2) AS footprint_km2, ROUND(MAX(ST_AreaSpheroid(sf.g)) / 1e6, 2) AS land_km2 FROM b JOIN sf ON ST_Within(ST_Centroid(b.geometry), sf.g)
A bounding box is the smallest rectangle around a shape. The bbox filter keeps buildings whose bounding boxes overlap the city's bounding box, so the query reads a small part of the table. ST_Within(ST_Centroid(...)) counts a building only when its center falls inside the land boundary. ST_AreaSpheroid measures each outline's area on the curved Earth from its longitude and latitude.
bbox
ST_Within(ST_Centroid(...))
ST_AreaSpheroid
The result. The agent reported 162,538 buildings with 31.93 km² of footprints, the ground area inside the mapped building outlines. Counting every building with any part inside the boundary gives 162,666, or 128 more.
The checks. We reran the query from a separate session, on a runtime that was already running. In 34 seconds it returned 162,538 buildings, 31.93 km² of footprints and a land area of 122.13 km². The US Census Bureau's 2024 Gazetteer gives San Francisco County 120.91 km² of land and 600.62 km² in total. Overture's land boundary is 1.0% larger, and its full boundary 0.13% larger.
The city's own building footprints dataset lists 177,023 footprints. That is 9% more than Overture's count, because the city splits buildings at property lines. The spatial intelligence article found the same two counts. So the agent's count repeats on Overture's data, and the city's data gives a different count.
Verdict. The claim held. With no tools, the agent gave no number. With the MCP server, it found the building and boundary tables, used a boundary that matches the Census figure within 1%, and returned a count that our rerun reproduced.
What the test leaves out. It is one question, one agent and one day. A building count measures what Overture maps: buildings missing from its sources are missing from the count.
About 72 of the 233 seconds went to starting the runtime. The count query finished about 144 seconds in, and the answer came at 233 seconds, after more waits and checks. The Wherobots docs note that large operations, such as planet-wide analysis or areas reachable within a set driving time, may time out through the MCP server.
You need a Wherobots account. For the API key route, you need a Wherobots API key stored in an environment variable named WHEROBOTS_API_KEY. An environment variable holds a value that programs on your computer can read, so the key stays out of the config file. Also keep the key out of version control, the system that stores your code's history.
WHEROBOTS_API_KEY
From your project folder, run:
claude mcp add --transport http wherobots https://api.cloud.wherobots.com/mcp/ --scope project \ --header 'x-api-key: ${WHEROBOTS_API_KEY}'
The single quotes keep the placeholder as text, and Claude Code reads the key from your environment when it connects. The command writes this .mcp.json file, which you can also create by hand:
.mcp.json
{ "mcpServers": { "wherobots": { "type": "http", "url": "https://api.cloud.wherobots.com/mcp/", "headers": { "x-api-key": "${WHEROBOTS_API_KEY}" } } } }
Start claude in the folder and approve the server when asked. Claude Code asks once for each server in a project's .mcp.json, as its MCP documentation explains. Then ask: "List the catalogs in my Wherobots organization." The answer should include wherobots_open_data.
claude
wherobots_open_data
To sign in with your browser, run claude mcp add --transport http wherobots https://api.cloud.wherobots.com/mcp/ --scope project with no header. Add --scope user in place of --scope project to use the server in every project. We timed the API key setup twice on 9 November 2026, with Claude Code version 2.1.319. From the claude mcp add command to the agent's first answer took 14 and 20 seconds.
claude mcp add --transport http wherobots https://api.cloud.wherobots.com/mcp/ --scope project
--scope user
--scope project
claude mcp add
Open Cursor Settings, then Tools & MCPs, then Add Custom MCP. Cursor opens .cursor/mcp.json in your project. Paste this and save:
.cursor/mcp.json
{ "mcpServers": { "wherobots": { "url": "https://api.cloud.wherobots.com/mcp/", "headers": { "x-api-key": "${env:WHEROBOTS_API_KEY}" } } } }
Cursor reads environment variables with ${env:NAME}, as its MCP documentation explains. The top key must be mcpServers, and Cursor rejects a "type": "http" field, according to the Wherobots editor setup guide. Reload the window. The server should show a green dot in Tools & MCPs. To sign in with your browser, leave out the headers block.
${env:NAME}
mcpServers
"type": "http"
headers
list_catalogs
submit_read_query
search_documentation
MCP builds on a line of research on language models that call tools. Timo Schick and colleagues trained a model to decide when to call a calculator, a search engine or a calendar in Toolformer (2023). Shunyu Yao and colleagues interleaved reasoning steps with actions in ReAct (ICLR 2023). Shishir Patil and colleagues trained a model to write calls to machine learning APIs from Hugging Face, TorchHub and TensorHub in Gorilla (2023). Yujia Qin and colleagues collected more than 16,000 real APIs in ToolLLM (2023).
Each of these projects wrote its own code to connect a model to its tools. MCP made that connection one shared standard.
Xinyi Hou and colleagues mapped the MCP ecosystem and its security risks in Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions (2025). They describe 16 threat scenarios from four sources of threat: malicious developers, outside attackers, malicious users and security flaws. Hosts reduce the risk with approval prompts. Servers reduce it with sign-in and narrow permissions. On the client side, that means approving read tools and leaving write and delete tools off.
The building table in our run holds 2.53 billion rows, too large to send to an agent. The server returns one row of results, and the work happens in a distributed engine, which splits a query across many computers.
Wherobots was founded by the creators of Apache Sedona, an open source project that began as GeoSpark. Jia Yu, Jinxuan Wu and Mohamed Sarwat described it in GeoSpark at the 2015 conference of ACM SIGSPATIAL, the Association for Computing Machinery's peer-reviewed group on geographic information systems. Yu, Zhang and Sarwat extended the design in Spatial data management in Apache Spark: the GeoSpark perspective and beyond (GeoInformatica, 2019). Through the MCP server, an agent's spatial question runs on WherobotsDB, a distributed engine for spatial queries.
Two limits remain at scale. A runtime that has to start adds a minute or more to the first answer. The server limits how much data one response can return. Its instructions tell the agent to ask for totals, filters and fewer columns, and large results come back as a file link. Longer pipelines belong in job runs, as in the geospatial intelligence pipelines built with the Wherobots MCP server.
Connect your AI agent to Overture Maps and other open data through the Wherobots MCP server. Start a free trial of Wherobots Cloud, then follow the Wherobots MCP server setup guide.
An MCP server is a program that offers tools and data to AI applications through the Model Context Protocol (MCP), an open standard that Anthropic released on 25 November 2024. An AI agent, such as Claude Code or Cursor, connects to the server and asks it for a list of tools. When a question needs one, the agent sends a call with arguments and gets back a result to use in its answer.
The host is the AI application you use, and it holds one MCP client, its connection to one server, for each server. The client and server exchange JSON-RPC 2.0 messages, a standard way to write requests and replies as text. A local server runs as a program on your computer and exchanges messages through the text channels a program reads from and writes to. A remote server answers HTTPS requests. The client asks for the tool list with tools/list and runs a tool with tools/call.
An application programming interface (API) is the set of requests one service accepts, and each API has its own format. MCP is one shared format that any AI agent can use to find and call tools. An MCP server often sits in front of an API. It describes each operation in words and with a formal list of the inputs it accepts, so an agent can choose the right call without code written for that API.
The protocol is open and free to use, and anyone can write a server. A service behind a server may charge for what it does. The Wherobots MCP server bills only when it runs a query. Each query runs on a runtime, the cloud compute for Structured Query Language (SQL) queries. You pay for that runtime, according to the Wherobots MCP server documentation.
Yes. ChatGPT can connect to remote MCP servers as connectors on paid plans. The Wherobots guide to setting up Wherobots in an AI assistant lists ChatGPT Plus, Pro, Business and Enterprise, alongside Claude, Claude Code, Codex and OpenCode.
Anthropic released servers for Google Drive, Slack, GitHub, Git, Postgres and Puppeteer with the protocol in 2024. Companies now run their own, such as the Wherobots MCP server for spatial data. The Wherobots server lists catalogs, describes tables, searches documentation and runs spatial SQL on maps, buildings and satellite data.
Run claude mcp add --transport http wherobots https://api.cloud.wherobots.com/mcp/ and sign in with your browser when Claude Code first uses the server. To use an API key, add --header 'x-api-key: ${WHEROBOTS_API_KEY}' with the key in that environment variable. In our two timed runs, setup to the first answer took 14 and 20 seconds.
claude mcp add --transport http wherobots https://api.cloud.wherobots.com/mcp/
--header 'x-api-key: ${WHEROBOTS_API_KEY}'
Open Cursor Settings, then Tools & MCPs, then Add Custom MCP. Cursor opens .cursor/mcp.json in your project. Paste an mcpServers entry with the server’s URL, save the file, and reload the window. The Wherobots server then appears in the list with a green dot when it is connected.
In our test on 9 November 2026, it could not give a count. Asked how many buildings Overture Maps records in San Francisco, Claude Code with no tools gave no number and offered a query it could not run. With the Wherobots MCP server it ran that count as a spatial query and returned 162,538 buildings.
The protocol leaves most safety choices to hosts and servers. Its specification says a person should be able to deny any tool call, and remote servers can require OAuth sign-in. Xinyi Hou and colleagues describe 16 threat scenarios in a 2025 survey, from malicious server developers to outside attackers. Allow only the tools an agent needs, and keep keys in environment variables.
What is a Kelvin Wave? Speed, El Niño and 2026 Data
A Kelvin wave is a long, low ocean wave that carries warm water east along the equator in an El Niño. In the 30 days to 10 November 2026, the sea at San Diego stood a record 41.2 cm above NOAA's tide prediction.
What Is an ETL Pipeline? Steps, Examples and Spatial ETL
An ETL (extract, transform, load) pipeline moves data from sources into storage. Learn the steps with examples. Then see a spatial mistake that passed the usual checks: rounding coordinates emptied 27% of Denver's building outlines.
What is Spatial Intelligence? Definition, AI, Earth Scale
Spatial intelligence: AI that understands 3D space. Open map data holds a height for 96% of San Francisco's buildings and 0.13% of Nairobi's.
share this article
Awesome that you’d like to share our articles. Where would you like to share it to: