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
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/qgis_mcp/qgis_mcp_server.py:201-206 (handler)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
- qgis_mcp_plugin/qgis_mcp_plugin.py:133-149 (registration)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())