add_vector_layer
Add vector data layers to QGIS projects from file paths to enable spatial analysis and visualization of geographic features.
Instructions
Add a vector layer to the project.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| provider | No | ogr | |
| name | No |
Implementation Reference
- Core handler function that creates a QgsVectorLayer using the provided path, name, and provider, validates it, adds the layer to the current QGIS project using QgsProject.instance().addMapLayer(layer), and returns layer information including ID, name, type, and feature count.def add_vector_layer(self, path, name=None, provider="ogr", **kwargs): """Add a vector layer to the project""" if not name: name = os.path.basename(path) # Create the layer layer = QgsVectorLayer(path, name, provider) if not layer.isValid(): raise Exception(f"Layer is not valid: {path}") # Add to project QgsProject.instance().addMapLayer(layer) return { "id": layer.id(), "name": layer.name(), "type": self._get_layer_type(layer), "feature_count": layer.featureCount() }
- qgis_mcp_plugin/qgis_mcp_plugin.py:133-149 (registration)Registration of socket command handlers in the QGIS plugin server. Maps the 'add_vector_layer' command string to the self.add_vector_layer method for execution.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, }
- src/qgis_mcp/qgis_mcp_server.py:181-189 (handler)MCP tool handler decorated with @mcp.tool(). Proxies the add_vector_layer command to the QGIS plugin server via socket using get_qgis_connection().send_command(), serializes the result as JSON.@mcp.tool() def add_vector_layer(ctx: Context, path: str, provider: str = "ogr", name: str = None) -> str: """Add a vector layer to the project.""" qgis = get_qgis_connection() params = {"path": path, "provider": provider} if name: params["name"] = name result = qgis.send_command("add_vector_layer", params) return json.dumps(result, indent=2)
- src/qgis_mcp/qgis_mcp_server.py:181-181 (registration)MCP tool registration via @mcp.tool() decorator on the add_vector_layer function, which defines the tool schema implicitly through its signature and docstring.@mcp.tool()