Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -126,9 +126,9 @@ Add to `.mcp.json`:
| `import_stac_asset` | Import a STAC asset as a local dataset |
| `search_stac` | Search local STAC with bbox/datetime/CQL2 filters |
| `indoor_api` | Allowlisted Indoor GIS endpoint access (buildings/floors/spaces/navigation/analytics/sensors/booking/geofences/simulations). Mutations require `confirm=true`. |
| `map_api` | Allowlisted map endpoint access (publish/unpublish/stats/embed config, raster metadata/JSON analysis/export ops including contour/viewshed/profile/KDE, OGC feature edit ops). Mutations require `confirm=true`. |
| `map_api` | Allowlisted map endpoint access (publish/unpublish/stats/embed config, raster metadata/JSON analysis/export ops including contour/viewshed/profile/KDE/slope/aspect, geodesic area/length, raster classification via k-means/ISODATA/max-likelihood/random-forest, OGC feature edit ops). Mutations require `confirm=true`. |

Use `list_operations` for the live vector-processing catalog. Raster operations do not currently have a live catalog endpoint, so `run_raster_process` documents the current backend families directly: terrain, hydrology, distance/cost, spectral/change, classification, and raster-vector conversion. For dataset-name-based raster JSON routes, `map_api` now also exposes contour, viewshed, profile, and KDE.
Use `list_operations` for the live vector-processing catalog. Raster operations do not currently have a live catalog endpoint, so `run_raster_process` documents the current backend families directly: terrain, hydrology, distance/cost, spectral/change, classification, and raster-vector conversion. For dataset-name-based raster JSON routes, `map_api` now also exposes contour, viewshed, profile, KDE, slope, and aspect. Geodesic area/length and raster classification (k-means, ISODATA, maximum-likelihood, random-forest) are also available via `map_api`.

## Example Workflows

Expand Down
8 changes: 8 additions & 0 deletions mcp/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,14 @@ var mapOperations = map[string]apiOperation{
"raster_viewshed": {Method: "POST", Path: "/raster/{name}/viewshed"},
"raster_profile": {Method: "POST", Path: "/raster/{name}/profile"},
"raster_kde": {Method: "POST", Path: "/api/raster/kde"},
"raster_slope": {Method: "POST", Path: "/raster/{name}/slope"},
"raster_aspect": {Method: "POST", Path: "/raster/{name}/aspect"},
"geodesic_area": {Method: "POST", Path: "/api/geodesic/area"},
"geodesic_length": {Method: "POST", Path: "/api/geodesic/length"},
"classify_kmeans": {Method: "POST", Path: "/api/raster/classify/kmeans"},
"classify_isodata": {Method: "POST", Path: "/api/raster/classify/isodata"},
"classify_ml": {Method: "POST", Path: "/api/raster/classify/ml"},
"classify_rf": {Method: "POST", Path: "/api/raster/classify/rf"},
"create_feature": {Method: "POST", Path: "/collections/{collection_id}/items", Mutating: true},
"update_feature": {Method: "PUT", Path: "/collections/{collection_id}/items/{feature_id}", Mutating: true},
"delete_feature": {Method: "DELETE", Path: "/collections/{collection_id}/items/{feature_id}", Mutating: true},
Expand Down
5 changes: 4 additions & 1 deletion mcp/tools.go
Original file line number Diff line number Diff line change
Expand Up @@ -617,7 +617,7 @@ func AllTools() []Tool {
},
{
Name: "map_api",
Description: "Access map-focused operations (publishing, raster metadata, OGC feature edits) through a strict allowlist. Mutating operations require confirm=true.",
Description: "Access map-focused operations (publishing, raster metadata, slope/aspect, geodesic area/length, raster classification, OGC feature edits) through a strict allowlist. Mutating operations require confirm=true.",
InputSchema: InputSchema{
Type: "object",
Properties: map[string]PropertySchema{
Expand All @@ -629,6 +629,9 @@ func AllTools() []Tool {
"update_map_embed_config", "get_public_map",
"get_raster_info", "get_raster_stats", "get_raster_histogram", "get_raster_dimensions", "get_raster_values",
"raster_zonal_stats", "export_raster_band", "raster_contour", "raster_viewshed", "raster_profile", "raster_kde",
"raster_slope", "raster_aspect",
"geodesic_area", "geodesic_length",
"classify_kmeans", "classify_isodata", "classify_ml", "classify_rf",
"create_feature", "update_feature", "delete_feature",
},
},
Expand Down
Loading