Skip to main content
Glama

get_layers

Retrieve all layers in the current QGIS project to access and manage spatial data for analysis and visualization.

Instructions

Retrieve all layers in the current project.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • MCP tool handler for 'get_layers': proxies the command to the underlying QGIS socket server via get_qgis_connection().
    @mcp.tool() def get_layers(ctx: Context) -> str: """Retrieve all layers in the current project.""" qgis = get_qgis_connection() result = qgis.send_command("get_layers") return json.dumps(result, indent=2)
  • Core implementation of get_layers command in QGIS plugin: iterates over project layers, collects detailed info including type-specific details, visibility, etc.
    def get_layers(self, **kwargs): """Get all layers in the project""" project = QgsProject.instance() layers = [] for layer_id, layer in project.mapLayers().items(): layer_info = { "id": layer_id, "name": layer.name(), "type": self._get_layer_type(layer), "visible": project.layerTreeRoot().findLayer(layer_id).isVisible() } # Add type-specific information if layer.type() == QgsMapLayer.VectorLayer: layer_info.update({ "feature_count": layer.featureCount(), "geometry_type": layer.geometryType() }) elif layer.type() == QgsMapLayer.RasterLayer: layer_info.update({ "width": layer.width(), "height": layer.height() }) layers.append(layer_info) return layers
  • Registration of the 'get_layers' handler in the QGIS socket server's command handlers dictionary.
    handlers = { "ping": self.ping, "get_qgis_info": self.get_qgis_info, "load_project": self.load_project, "get_project_info": self.get_project_info, "execute_code": self.execute_code, "add_vector_layer": self.add_vector_layer, "add_raster_layer": self.add_raster_layer, "get_layers": self.get_layers, "remove_layer": self.remove_layer, "zoom_to_layer": self.zoom_to_layer, "get_layer_features": self.get_layer_features, "execute_processing": self.execute_processing, "save_project": self.save_project, "render_map": self.render_map, "create_new_project": self.create_new_project, }
  • Helper function used by get_layers to determine and format layer type string.
    def _get_layer_type(self, layer): """Helper to get layer type as string""" if layer.type() == QgsMapLayer.VectorLayer: return f"vector_{layer.geometryType()}" elif layer.type() == QgsMapLayer.RasterLayer: return "raster" else: return str(layer.type())

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/syauqi-uqi/qgis_mcp_modify1'

If you have feedback or need assistance with the MCP directory API, please join our Discord server