Skip to main content
Glama
ergut

MCP server for LogSeq

by ergut

delete_page

Remove pages from LogSeq to manage your knowledge graph by deleting unnecessary or outdated content.

Instructions

Delete a page from LogSeq.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
page_nameYesName of the page to delete

Implementation Reference

  • The run_tool method of DeletePageToolHandler executes the core logic of the delete_page tool by instantiating the LogSeq API client and calling its delete_page method with the provided page_name argument.
    def run_tool(self, args: dict) -> list[TextContent]:
        if "page_name" not in args:
            raise RuntimeError("page_name argument required")
    
        try:
            api = logseq.LogSeq(api_key=api_key)
            result = api.delete_page(args["page_name"])
            
            # Build detailed success message
            page_name = args["page_name"]
            success_msg = f"āœ… Successfully deleted page '{page_name}'"
            
            # Add any additional info from the API result if available
            if result and isinstance(result, dict):
                if result.get("success"):
                    success_msg += f"\nšŸ“‹ Status: {result.get('message', 'Deletion confirmed')}"
            
            success_msg += f"\nšŸ—‘ļø  Page '{page_name}' has been permanently removed from LogSeq"
            
            return [TextContent(
                type="text",
                text=success_msg
            )]
        except ValueError as e:
            # Handle validation errors (page not found) gracefully
            return [TextContent(
                type="text", 
                text=f"āŒ Error: {str(e)}"
            )]
        except Exception as e:
            logger.error(f"Failed to delete page: {str(e)}")
            return [TextContent(
                type="text",
                text=f"āŒ Failed to delete page '{args['page_name']}': {str(e)}"
            )]
  • The input schema definition for the delete_page tool, specifying that a 'page_name' string is required.
    def get_tool_description(self):
        return Tool(
            name=self.name,
            description="Delete a page from LogSeq.",
            inputSchema={
                "type": "object",
                "properties": {
                    "page_name": {
                        "type": "string",
                        "description": "Name of the page to delete"
                    }
                },
                "required": ["page_name"]
            }
        )
  • Registration of all tool handlers including DeletePageToolHandler in the MCP server setup.
    logger.info("Registering tool handlers...")
    add_tool_handler(tools.CreatePageToolHandler())
    add_tool_handler(tools.ListPagesToolHandler())
    add_tool_handler(tools.GetPageContentToolHandler())
    add_tool_handler(tools.DeletePageToolHandler())
    add_tool_handler(tools.UpdatePageToolHandler())
    add_tool_handler(tools.SearchToolHandler())
  • The LogSeq API helper method delete_page that performs the actual HTTP request to Logseq's deletePage RPC method after validating the page exists.
    def delete_page(self, page_name: str) -> Any:
        """Delete a LogSeq page by name."""
        url = self.get_base_url()
        logger.info(f"Deleting page '{page_name}'")
        
        try:
            # Pre-delete validation: verify page exists
            existing_pages = self.list_pages()
            page_names = [p.get("originalName") or p.get("name") for p in existing_pages if p.get("originalName") or p.get("name")]
            
            if page_name not in page_names:
                raise ValueError(f"Page '{page_name}' does not exist")
            
            response = requests.post(
                url,
                headers=self._get_headers(),
                json={
                    "method": "logseq.Editor.deletePage",
                    "args": [page_name]
                },
                verify=self.verify_ssl,
                timeout=self.timeout
            )
            response.raise_for_status()
            result = response.json()
            logger.info(f"Successfully deleted page '{page_name}'")
            return result
    
        except ValueError:
            # Re-raise validation errors as-is
            raise
        except Exception as e:
            logger.error(f"Error deleting page '{page_name}': {str(e)}")
            raise

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/ergut/mcp-logseq-server'

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