mcp-arcgis
Provides tools for searching ArcGIS Online content and querying hosted feature layers, including item search, metadata retrieval, layer description, and feature querying with pagination and filtering.
Click on "Deploy 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., "@mcp-arcgissearch for feature services related to water"
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.
mcp-arcgis — ArcGIS Online (AGOL) MCP server
A FastMCP server for searching content and
querying hosted feature layers in ArcGIS Online. It talks to the AGOL Sharing
REST and Feature Service REST APIs directly with requests — no heavy arcgis
Python package required.
Read-only by design. It searches items and queries features; it never adds, updates, or deletes anything.
Tools
Connection / discovery
whoami— signed-in user + portal info (connectivity smoke test)search_items— search org/public content (query,item_type,sort_field)get_item— full portal metadata for an item idget_item_data— an item's/datapayload (a Web Map's operational layers, an app/dashboard config); trace which feature services a map useslist_layers— layers & tables of a feature service (ids, names, geometry types)describe_layer— fields, geometry type, extent, record count for one layer
Query
query_features— attribute/paged query →{count, exceededTransferLimit, features}count_features— count matching awhereclause (cheap sizing before a pull)aggregate_features— server-side group-by statistics (SUM/AVG/COUNT/MIN/MAX/STDDEV/VAR) viaoutStatistics; no rows pulleddistinct_values— distinct value combinations of one or more fields (discover categories/codes)spatial_query— query features by geometry (point/envelope/polygon), optionally buffered by adistance
Identify a layer to describe/query by either a feature-service item_id
(+ layer_index, default 0) or a direct service_url (a .../FeatureServer
root plus layer_index, or a full .../FeatureServer/0 layer URL).
Example
search_items(query="parcels", item_type="Feature Service")
list_layers(item_id="abcd1234…")
describe_layer(item_id="abcd1234…", layer_index=0)
count_features(item_id="abcd1234…", where="STATUS = 'Active'")
query_features(item_id="abcd1234…", where="ACRES > 5",
out_fields="OBJECTID,NAME,ACRES", order_by="ACRES DESC", limit=50)
# distinct values in a field, then a grouped rollup
distinct_values(item_id="abcd1234…", fields="STATUS")
aggregate_features(item_id="abcd1234…", group_by="STATUS", order_by="sum_ACRES DESC",
statistics=[{"statisticType":"count","onStatisticField":"OBJECTID",
"outStatisticFieldName":"n"},
{"statisticType":"sum","onStatisticField":"ACRES"}])
# everything within 500 m of a lat/long point
spatial_query(item_id="abcd1234…", geometry={"x":-79.38,"y":43.65},
geometry_type="esriGeometryPoint", distance=500, units="esriSRUnit_Meter")
# which feature services does a web map reference?
get_item_data(item_id="webmap-item-id…")Related MCP server: dspace-mcp
Auth
Set "auth" in config.json:
value | how it signs in |
| Named user: |
| API key from the env var named by |
| No sign-in; only public content/layers are reachable. |
url is your organization's portal (e.g. https://yourorg.maps.arcgis.com) or
https://www.arcgis.com. max_records caps how many features a single
query_features call returns (default 2000); page with offset for more.
No secrets live in config.json — only the name of an environment variable.
Setup
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
copy config.example.json config.json # edit url + username
copy .env.example .env # set ARCGIS_PASSWORD
.\.venv\Scripts\python.exe server.py # smoke test (Ctrl+C to stop)Register with an MCP client
See examples/mcp.json — point command at the venv's python.exe and args
at server.py, using absolute paths.
Use with Claude Desktop
Claude Desktop reads MCP servers from claude_desktop_config.json
(Settings → Developer → Edit Config). Add this server under mcpServers
with absolute paths to the venv Python and server.py, then fully quit and
reopen Claude Desktop.
License
MIT — see LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for searching Airweave collections with natural language queries.
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Hosted MCP server for finding authoritative primary data sources and official portals.
Official Microsoft MCP Server to query Microsoft Entra data using natural language
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceUnified MCP server for ArcGIS Online and Enterprise providing tools for user/group management, item management, geoprocessing, feature layer queries/editing, and server administration.2MIT
- AlicenseNot gradedqualityAmaintenanceA read-only MCP server that enables natural language querying of DSpace 7+ repositories via the REST API, allowing users to search, retrieve items, and analyze repository data.2MIT
- AlicenseAqualityAmaintenanceA read-only MCP server for the HCL BigFix root server REST API, enabling session relevance queries, client fast queries, and server/site/operator lookups through natural language.11MIT
- FlicenseNot gradedqualityBmaintenanceA read-only PostgreSQL MCP server that translates natural language queries into SQL, enforcing database routing, table/column whitelists, and safety checks. It offers schema inspection and query tools with optional output as SQL or results.-