get_project_info
Retrieve current project details from QGIS, including layers, settings, and metadata, to understand and work with existing GIS projects.
Instructions
Get current project information
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/qgis_mcp/qgis_mcp_server.py:175-179 (handler)MCP tool handler for 'get_project_info' that sends the command to the QGIS plugin via socket connection and returns JSON response.def get_project_info(ctx: Context) -> str: """Get current project information""" qgis = get_qgis_connection() result = qgis.send_command("get_project_info") return json.dumps(result, indent=2)
- Primary handler executing the logic to retrieve detailed project information from QGIS, including file details, CRS, and up to 10 layers with basic info.def get_project_info(self, **kwargs): """Get information about the current QGIS project""" project = QgsProject.instance() # Get basic project information info = { "filename": project.fileName(), "title": project.title(), "layer_count": len(project.mapLayers()), "crs": project.crs().authid(), "layers": [] } # Add basic layer information (limit to 10 layers for performance) layers = list(project.mapLayers().values()) for i, layer in enumerate(layers): if i >= 10: # Limit to 10 layers break layer_info = { "id": layer.id(), "name": layer.name(), "type": self._get_layer_type(layer), "visible": layer.isValid() and project.layerTreeRoot().findLayer(layer.id()).isVisible() } info["layers"].append(layer_info) return info
- qgis_mcp_plugin/qgis_mcp_plugin.py:133-149 (registration)Registration of command handlers in the QGIS plugin's execute_command method, mapping 'get_project_info' to its handler.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_project_info to determine and format layer types.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())