Gis MCP vs Mapsmith
A side-by-side look at the Gis MCP and Mapsmith MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Gis MCP for location services work as a local process; choose Mapsmith for location services as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Gis MCP when
- You need dedicated capabilities in the Location Services domain.
- You prefer a local stdio subprocess transport.
- You want tools like
read_file_gpd, append_gpd, merge_gpd.
Choose Mapsmith when
- You need dedicated capabilities in the Location Services domain.
- You prefer a local stdio subprocess transport.
- You want tools like
describe_dataset, buffer_layer, clip_layer.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Location Services | Location Services |
| Quality signal | 63/100 · Good | 53/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 198 | 2 |
| Directory activity | 1 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 87 | 28 |
| Full listing | View Gis MCP | View Mapsmith |
Tools & capabilities
Gis MCP tools 87
read_file_gpdReads a geospatial file and returns stats and a data preview.append_gpdReads two shapefiles directly, concatenates them vertically.merge_gpdMerges two shapefiles based on common attribute columns, This function performs a database-style join, not a spatial join. Args: left_shapefile_path: Path to the left shapefile. The geometry from this file is preserved. right_shapefile_path: Path to the right shapefile to merge. output_path: Path to save the merged output shapefile. how: Type of merge. One of 'left', 'right', 'outer', 'inner'. Defaults to 'inner'. on: Column name to join on. Must be found in both shapefiles. left_on: Column name to join on in the left shapefile. right_on: Column name to join on in the right shapefile. suffixes: Suffix to apply to overlapping column names.overlay_gpdOverlay two GeoDataFrames using geopandas.overlay. Args: gdf1_path: Path to the first geospatial file. gdf2_path: Path to the second geospatial file. how: Overlay method ('intersection', 'union', 'identity', 'symmetric_difference', 'difference'). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.dissolve_gpdDissolve geometries by attribute using geopandas.dissolve. Args: gdf_path: Path to the geospatial file. by: Column to dissolve by (optional). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.explode_gpdSplit multi-part geometries into single parts using geopandas.explode. Args: gdf_path: Path to the geospatial file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.clip_vectorClip vector geometries using geopandas.clip. Args: gdf_path: Path to the input geospatial file. clip_path: Path to the clipping geometry file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.sjoin_gpdSpatial join between two GeoDataFrames using geopandas.sjoin. Args: left_path: Path to the left geospatial file. right_path: Path to the right geospatial file. how: Type of join ('left', 'right', 'inner'). predicate: Spatial predicate ('intersects', 'within', 'contains', etc.). output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.sjoin_nearest_gpdNearest neighbor spatial join using geopandas.sjoin_nearest. Args: left_path: Path to the left geospatial file. right_path: Path to the right geospatial file. how: Type of join ('left', 'right'). max_distance: Optional maximum search distance. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.point_in_polygonCheck if points are inside polygons using spatial join (predicate='within'). Args: points_path: Path to the point geospatial file. polygons_path: Path to the polygon geospatial file. output_path: Optional path to save the result. Returns: Dictionary with status, message, and output info.write_file_gpdExport a GeoDataFrame to a file (Shapefile, GeoJSON, GPKG, etc.). Args: gdf_path: Path to the input geospatial file. output_path: Path to save the exported file. driver: Optional OGR driver name (e.g., 'ESRI Shapefile', 'GeoJSON', 'GPKG'). Returns: Dictionary with status and message.bufferCreate a buffer around a geometry.- +75 more on the listing page
Mapsmith tools 28
describe_datasetCRS, schema/bands, extent, nodata and statistics of any vector or raster datasetbuffer_layerMetric buffer with automatic UTM estimation for geographic CRSclip_layerClip a layer with a mask layeroverlay_layersSet-theoretic overlay (intersection/union/difference/…); dropped lower-dimension pieces are declared in the manifestdissolve_layerMerge features per key; the aggregation is recorded in the manifest and the group count verifiednearest_joinNearest neighbour with the distance in meters, UTM-measured on geographic CRS (decision recorded)explode_layerMulti-part to single-part, with the part count verified in closed formmeasure_areaArea in m², always: ground on the ellipsoid, or planar converted with the CRS's own declared linear unit (survey feet are not metres). Invalid rings repaired *before* measuring, and a plane that is not equal-area here comes back with the ratio against the ground areamerge_layersAppend layers (schema union); null-filled columns are named in the manifest, the count verified against the sumsimplify_layerDouglas-Peucker with the drift measured: area/length before and after recorded in the manifestcentroid_layerGeometric centroids computed in a metric CRS, never on degrees (decision recorded)convert_formatConvert between GeoParquet/GeoPackage/GeoJSON by output extension, re-read and verified (count and CRS). Two conversions are refused with the reason rather than performed: shapefile output, which truncates field names to 10 characters silently, and GeoJSON for a non-WGS84 layer- +16 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Gis MCP
{
"mcpServers": {
"mahdin75-gis-mcp": {
"command": "uvx",
"args": [
"gis-mcp"
]
}
}
}
Mapsmith
{
"mcpServers": {
"mapsmith": {
"command": "uvx",
"args": [
"mapsmith"
]
}
}
}
Frequently asked questions
Gis MCP is categorized under Location Services and uses a local stdio subprocess. Mapsmith belongs to Location Services and uses a local stdio subprocess. Pick Gis MCP for location services work and Mapsmith for location services.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Gis MCP has no declared pricing — check the project's own site. Mapsmith has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add mahdin75-gis-mcp and mapsmith as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Gis MCP has a quality signal of 63/100 (Good) with 1 views, 0 installs and 198 GitHub stars. Mapsmith has 53/100 (Good) with 0 views, 0 installs and 2 GitHub stars.