Skip to main content
Glama

delete_folder

Remove a folder from Mnemosyne MCP workspace. Use cascade option to delete all contents including subfolders and documents, or delete empty folders only.

Instructions

Delete a folder from the workspace. Set cascade=true to delete all contents (subfolders, documents, artifacts). Without cascade, deletion fails if the folder has children.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
graph_idYes
folder_idYes
cascadeNo

Implementation Reference

  • The main handler function for the 'delete_folder' MCP tool. It authenticates, connects to the workspace via HocusPocus, and performs the deletion transaction using WorkspaceWriter.delete_folder.
    @server.tool(
        name="delete_folder",
        title="Delete Folder",
        description=(
            "Delete a folder from the workspace. "
            "Set cascade=true to delete all contents (subfolders, documents, artifacts). "
            "Without cascade, deletion fails if the folder has children."
        ),
    )
    async def delete_folder_tool(
        graph_id: str,
        folder_id: str,
        cascade: bool = False,
        context: Context | None = None,
    ) -> dict:
        """Delete a folder via Y.js."""
        auth = MCPAuthContext.from_context(context)
        auth.require_auth()
    
        if not graph_id or not graph_id.strip():
            raise ValueError("graph_id is required and cannot be empty")
        if not folder_id or not folder_id.strip():
            raise ValueError("folder_id is required and cannot be empty")
    
        try:
            await hp_client.connect_workspace(graph_id.strip())
    
            # Delete folder via Y.js
            await hp_client.transact_workspace(
                graph_id.strip(),
                lambda doc: WorkspaceWriter(doc).delete_folder(folder_id.strip(), cascade=cascade),
            )
    
            snapshot = hp_client.get_workspace_snapshot(graph_id.strip())
    
            result = {
                "success": True,
                "deleted": True,
                "folder_id": folder_id.strip(),
                "graph_id": graph_id.strip(),
                "cascade": cascade,
                "workspace": snapshot,
            }
            return result
    
        except ValueError as ve:
            # Cascade error - folder has children
            raise RuntimeError(str(ve))
        except Exception as e:
            logger.error(
                "Failed to delete folder",
                extra_context={
                    "graph_id": graph_id,
                    "folder_id": folder_id,
                    "error": str(e),
                },
            )
            raise RuntimeError(f"Failed to delete folder: {e}")
  • The core helper method in WorkspaceWriter class that implements the folder deletion logic, including optional recursive cascade deletion of children.
    def delete_folder(self, folder_id: str, cascade: bool = False) -> bool:
        """Delete a folder from workspace navigation.
    
        Args:
            folder_id: The folder ID to delete
            cascade: If True, delete all children (subfolders, artifacts, documents).
                     If False, raises ValueError if folder has children.
    
        Returns:
            True if folder was deleted, False if not found.
    
        Raises:
            ValueError: If cascade=False and folder has children.
        """
        if folder_id not in self._folders:
            return False
    
        children = self._get_children_of(folder_id)
        if children and not cascade:
            raise ValueError(
                f"Folder has {len(children)} children. Use cascade=True to delete."
            )
    
        if cascade:
            self._delete_children_recursive(folder_id)
    
        del self._folders[folder_id]
        logger.debug(
            "Deleted folder from workspace",
            extra_context={"folder_id": folder_id, "cascade": cascade},
        )
        return True
  • Registration of the hocuspocus tools module, which includes the delete_folder tool, called during MCP server setup.
    register_hocuspocus_tools(mcp_server)

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/sophia-labs/mnemosyne-mcp'

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