Skip to main content
Glama

add_vector_layer

Add vector data layers to QGIS projects from file paths, enabling spatial analysis and visualization through direct integration with GIS software.

Instructions

Add a vector layer to the project.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
providerNoogr
nameNo

Implementation Reference

  • Core handler function that creates a QgsVectorLayer from the given path, validates it, adds it to the QGIS project, 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()
        }
  • Registers the add_vector_layer method as a handler for socket commands in the QgisMCPServer's execute_command method.
    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,
    }
  • MCP tool handler decorated with @mcp.tool(). Proxies the call to the QGIS plugin server via socket using get_qgis_connection().send_command, providing input schema via type hints and docstring.
    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)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/syauqi-uqi/qgis_mcp_modify1'

If you have feedback or need assistance with the MCP directory API, please join our Discord server