get_qgis_info
Retrieve essential QGIS software details and configuration data to verify installation status and prepare for GIS project workflows.
Instructions
Get QGIS information
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/qgis_mcp/qgis_mcp_server.py:153-158 (handler)Primary MCP tool handler for 'get_qgis_info'. Proxies the request to the QGIS socket server via send_command.@mcp.tool() def get_qgis_info(ctx: Context) -> str: """Get QGIS information""" qgis = get_qgis_connection() result = qgis.send_command("get_qgis_info") return json.dumps(result, indent=2)
- Core execution logic for 'get_qgis_info' in the QGIS plugin socket server. Returns QGIS version, profile folder, and active plugins count.def get_qgis_info(self, **kwargs): """Get basic QGIS information""" return { "qgis_version": Qgis.version(), "profile_folder": QgsApplication.qgisSettingsDirPath(), "plugins_count": len(active_plugins) }
- qgis_mcp_plugin/qgis_mcp_plugin.py:133-149 (registration)Registration of the 'get_qgis_info' handler (and others) in the QGIS plugin's command dispatcher.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 to manage persistent connection to the QGIS socket server, used by the MCP tool.def get_qgis_connection(): """Get or create a persistent Qgis connection""" global _qgis_connection # If we have an existing connection, check if it's still valid if _qgis_connection is not None: # Test if the connection is still alive with a simple ping try: # Just try to send a small message to check if the socket is still connected _qgis_connection.sock.sendall(b'') return _qgis_connection except Exception as e: # Connection is dead, close it and create a new one logger.warning(f"Existing connection is no longer valid: {str(e)}") try: _qgis_connection.disconnect() except Exception: pass _qgis_connection = None # Create a new connection if needed if _qgis_connection is None: _qgis_connection = QgisMCPServer(host="localhost", port=9876) if not _qgis_connection.connect(): logger.error("Failed to connect to Qgis") _qgis_connection = None raise Exception("Could not connect to Qgis. Make sure the Qgis plugin is running.") logger.info("Created new persistent connection to Qgis") return _qgis_connection