create_new_project
Create and save new QGIS projects by specifying file paths, enabling direct project setup within the GIS environment.
Instructions
Create a new project a save it
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Implementation Reference
- src/qgis_mcp/qgis_mcp_server.py:167-172 (handler)MCP tool handler for 'create_new_project' that proxies the request to the QGIS plugin server via socket command.@mcp.tool() def create_new_project(ctx: Context, path: str) -> str: """Create a new project a save it""" qgis = get_qgis_connection() result = qgis.send_command("create_new_project", {"path": path}) return json.dumps(result, indent=2)
- Core QGIS handler implementing project creation: clears existing project, sets new filename, refreshes canvas, and saves the empty project.def create_new_project(self, path, **kwargs): """ Creates a new QGIS project and saves it at the specified path. If a project is already loaded, it clears it before creating the new one. :param project_path: Full path where the project will be saved (e.g., 'C:/path/to/project.qgz') """ project = QgsProject.instance() if project.fileName(): project.clear() project.setFileName(path) self.iface.mapCanvas().refresh() # Save the project if project.write(): return { "created": f"Project created and saved successfully at: {path}", "layer_count": len(project.mapLayers()) } else: raise Exception(f"Failed to save project to {path}")
- qgis_mcp_plugin/qgis_mcp_plugin.py:133-149 (registration)Registration of the create_new_project handler in the plugin's command handlers dictionary used by execute_command.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, }