ArcGIS Location Services MCP Server
Provides tools for geocoding, reverse geocoding, finding nearby places, getting directions, elevation data, and accessing basemap tiles through ArcGIS Location Services.
Provides integration with ArcGIS Location Services by Esri, enabling geospatial data operations such as geocoding, directions, and elevation queries.
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., "@ArcGIS Location Services MCP Server geocode the address 1 Infinite Loop, Cupertino, CA"
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.
ArcGIS Location Services MCP Server
MCP Server for ArcGIS Location Services.
Tools
geocodeSearch for an address, place, or point of interest
Inputs:
singleLine(string): Complete address in a single stringaddress(string): Place name or partial addresslocation(string, optional): Nearby point in "longitude,latitude" formatcategory(string, optional): POI category to search for
Returns: Matching locations with addresses, coordinates, and match scores
reverse_geocodeConvert geographic coordinates to an address
Inputs:
location(string): Location as "longitude,latitude"outFields(string, optional): Fields to include in response
Returns: Address information, location type, and address components
find_nearby_placesFind nearby places and points of interest
Inputs:
x(number): Longitude of center pointy(number): Latitude of center pointpageSize(number, optional): Number of results to returncategories(string, optional): Category filterradius(number, optional): Search radius in metersincludeDetails(boolean, optional): Whether to include detailed place informationdetailsLimit(number, optional): Maximum number of places to get details for
Returns: List of places with names, addresses, categories, and optional details
get_directionsGet detailed turn-by-turn directions between locations
Input:
stops(string): Semicolon-separated list of "longitude,latitude" pairs
Returns: Route summary with distance, time, and turn-by-turn directions
get_elevationGet elevation data for locations on land or water
Inputs:
lonandlat(numbers, optional): Coordinates for a single pointcoordinates(string, optional): JSON array of [lon, lat] pairs for multiple pointsrelativeTo(string, optional): Reference point for elevation measurement
Returns: Elevation data with reference datum and spatial reference
get_basemap_tileAccess static basemap tiles service with different styles
Inputs:
version(string, optional): API versionstyle_base(string, optional): Base style categorystyle_name(string, optional): Map style namerow,level,column(numbers, optional): Tile coordinates
Returns: Basemap tile information and status
Related MCP server: mcp-opencages
Setup
Installing via Smithery
To install arcgis-location-services-mcp for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @puran1218/arcgis-location-services-mcp --client claudeAPI Key
Get an ArcGIS Developer API key by creating an account at ArcGIS Location Platform and generating an API key.
Usage with Claude Desktop
Add the following to your claude_desktop_config.json in Claude for Desktop:
{
"mcpServers": {
"arcgis-location-services": {
"command": "uv",
"args": [
"--directory",
"C:\\ABSOLUTE\\PATH\\TO\\ArcGIS-Location-Services-MCP-Server",
"run",
"main.py"
],
"env": {
"ARCGIS_LOCATION_SERVICE_API_KEY": "<YOUR_API_KEY>"
}
}
}
}License
This MCP server is provided as-is. Usage of ArcGIS Location Services is subject to Esri's terms of service.
Available Tools
6 toolsfind_nearby_placesB
Find nearby places and points of interest with optional detailed information.
Args:
x: Longitude of the center point (e.g., -122.4194)
y: Latitude of the center point (e.g., 37.7749)
pageSize: Number of results to return (default: 20)
categories: Optional category filter (e.g., "restaurant", "hotel", "coffee")
radius: Search radius in meters (default: 5000)
includeDetails: Whether to include full details for each place (default: False)
detailsLimit: Maximum number of places to get details for when includeDetails=True (default: 3)
Inputs: x (required), y (required), radius, pageSize, +3 more.
geocodeB
Search for an address, place or point of interest.
Args:
singleLine: Complete address in a single string (e.g., "1600 Pennsylvania Ave NW, DC")
address: Place name or address (e.g., "Starbucks" or "380 New York St")
location: Optional point to search near, as "longitude,latitude" (e.g., "-122.4194,37.7749")
category: Optional POI category to search for (e.g., "gas station")
outFields: Fields to return in the response (default: all fields)
Inputs: address, category, location, outFields, +1 more.
get_basemap_tileB
Access static basemap tiles service with different styles.
Args:
version: API version (default: v1)
style_base: The base style category (default: arcgis)
style_name: Map style name (e.g., navigation, streets, satellite)
row: Tile row coordinate
level: Zoom level
column: Tile column coordinate
Inputs: row, level, column, version, +2 more.
get_directionsA
Get detailed turn-by-turn directions between locations.
Args:
stops: Two or more locations as a semicolon-separated list of "longitude,latitude" pairs
(e.g., "-122.68782,45.51238;-122.690176,45.522054")
Inputs: stops (required).
get_elevationA
Get elevation for locations on land or water.
Args:
lon: Longitude of a single point (e.g., -117.195)
lat: Latitude of a single point (e.g., 34.065)
coordinates: JSON array of [lon, lat] pairs for multiple points (e.g., "[[-117.182, 34.0555],[-117.185, 34.057]]")
relativeTo: Reference point for elevation measurement (e.g., "meanSeaLevel", "ellipsoid")
Inputs: lat, lon, relativeTo, coordinates.
reverse_geocodeA
Convert geographic coordinates to an address.
Args:
location: Location as "longitude,latitude" (e.g., "-79.3871,43.6426")
outFields: Fields to include in the response (default: all fields)
Inputs: location (required), outFields.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a distinct purpose: basemap tiles, nearby places, geocoding, reverse geocoding, directions, and elevation. No overlap in functionality.
All tool names follow a consistent verb_noun pattern in snake_case, such as get_basemap_tile, find_nearby_places, geocode, reverse_geocode, get_directions, get_elevation. The naming is clear and predictable.
With 6 tools, the server covers essential location services without being sparse or overwhelming. Each tool serves a specific function, and the count is well-scoped for the domain.
The tool set includes core GIS operations: tile access, POI search, geocoding, reverse geocoding, directions, and elevation. Minor gaps exist, such as missing batch geocoding or spatial queries, but the surface is reasonably complete for a basic location services server.
Maintenance
Related MCP Connectors
Geocode, reverse-geocode, autocomplete, route and search places.
Geocoding, reverse geocoding, and places search for LatLng.
Hosted MCP for live place search, geocoding & turn-by-turn routes. No Maps API key to manage.
Geocode and reverse geocode addresses, road distances and multi-stop routes. $0.001 per lookup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables geocoding and reverse geocoding from OpenStreetMap data using the free Nominatim API.106 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables forward and reverse geocoding using the OpenCage API, allowing conversion between addresses and coordinates.330 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables geocoding, reverse geocoding, elevation profiles, static map PNGs, and coordinate reprojection using MapTiler's OpenStreetMap data.145 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables geocoding, reverse geocoding, place search, nearby discovery, routing, and distance calculations using Mappls/MapMyIndia location data for India.51 npmMIT