Logseq MCP Tools

by apw124

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
LOGSEQ_TOKENYesYour Logseq API token from the Advanced settings
LOGSEQ_API_URLYesThe URL of the Logseq APIhttp://localhost:12315

Schema

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Tools

Functions exposed to the LLM to take actions

NameDescription
get_all_pages
Gets all pages from the Logseq graph. Journal pages can be identified by the "journal?" attribute set to true and will include a "journalDay" attribute in the format YYYYMMDD. Returns: list: A list of all pages in the Logseq graph.
get_page
Gets a specific page from the Logseq graph by name. For journal pages, use the format "mmm dth, yyyy" (e.g., "Apr 4th, 2025"). Note that journal pages are automatically created in Logseq with this date format. Journal pages have specific attributes: - "journal?": true - Indicates this is a journal page - "journalDay": YYYYMMDD - The date in numeric format (e.g., 20250404 for April 4, 2025) Args: name (str): The name of the page to retrieve. Returns: dict: Information about the requested page.
create_page
Creates a new page in the Logseq graph. For journal pages, use the format "mmm dth, yyyy" (e.g., "Apr 4th, 2025"). Journal pages are specially formatted in Logseq with automatic dating. When you create a journal page, Logseq automatically: - Sets "journal?": true - Sets "journalDay": YYYYMMDD (e.g., 20250404 for April 4, 2025) - Formats the page as a journal entry Args: name (str): The name of the new page. properties (dict, optional): Properties to set on the new page. Returns: dict: Information about the created page.
delete_page
Deletes a page from the Logseq graph. This operation removes the specified page and all its blocks. This action cannot be undone. For journal pages, use the format "mmm dth, yyyy" (e.g., "Apr 4th, 2025"). Args: name (str): The name of the page to delete. Returns: dict: Result of the deletion operation.
get_page_linked_references
Gets all linked references to a specific page in the Logseq graph. This returns blocks that contain links to the specified page using the Logseq double bracket notation: [[Page Name]]. For journal pages, use the format "mmm dth, yyyy" (e.g., "Apr 4th, 2025"). Args: page_name (str): The name of the page to find references to. Returns: list: A list of blocks that reference the specified page.
get_page_blocks
Gets all blocks from a specific page in the Logseq graph. For journal pages, use the format "mmm dth, yyyy" (e.g., "Apr 4th, 2025"). Returned blocks contain information about their hierarchical structure: - parent: The parent block's ID - level: The indentation level (1 for top-level, 2+ for indented blocks) - left: The block to the left (typically the parent for indented blocks) Blocks from journal pages will have: - "journal?": true - "journalDay": YYYYMMDD - The date in numeric format (e.g., 20250404) Args: page_name (str): The name of the page to retrieve blocks from. Returns: list: A list of blocks from the specified page.
get_block
Gets a specific block from the Logseq graph by its ID. The returned block contains information about its hierarchical structure: - parent: The parent block's ID - level: The indentation level (1 for top-level, 2+ for indented blocks) - left: The block to the left (typically the parent for indented blocks) If the block is from a journal page, it will include: - "journal?": true - "journalDay": YYYYMMDD - Date in numeric format Args: block_id (str): The ID of the block to retrieve. Returns: dict: Information about the requested block.
create_block
Creates a new block on a page in the Logseq graph. IMPORTANT NOTES: 1. All blocks are automatically formatted as bullet points in Logseq UI 2. To create links to other pages, use double brackets: [[Page Name]] When creating blocks on journal pages: - The block will inherit the "journal?" and "journalDay" attributes from the page - "journalDay" will be in YYYYMMDD format (e.g., 20250404 for April 4, 2025) Args: page_name (str): The name of the page to create the block on. content (str): The content of the new block. properties (dict, optional): Properties to set on the new block. Returns: dict: Information about the created block.
insert_block
Inserts a new block as a child of the specified parent block. This allows for creating hierarchical content by adding children to existing blocks. IMPORTANT NOTES: 1. All blocks are automatically formatted as bullet points in Logseq UI 2. To create links to other pages, use double brackets: [[Page Name]] 3. The new block will be inserted at the beginning or end of the parent's children depending on the 'before' parameter When inserting blocks into journal pages: - The block will inherit the "journal?" and "journalDay" attributes - "journalDay" will be in YYYYMMDD format (e.g., 20250404 for April 4, 2025) Args: parent_block_id (str): The ID of the parent block to insert under. content (str): The content of the new block. properties (dict, optional): Properties to set on the new block. before (bool, optional): Whether to insert at the beginning of children. Default is False (append at the end). Returns: dict: Information about the created block.
update_block
Updates an existing block in the Logseq graph. IMPORTANT NOTES: 1. All blocks are automatically formatted as bullet points in Logseq UI 2. To create links to other pages, use double brackets: [[Page Name]] When updating blocks on journal pages: - The "journal?" and "journalDay" attributes will be preserved - "journalDay" will remain in YYYYMMDD format (e.g., 20250404) Args: block_id (str): The ID of the block to update. content (str): The new content for the block. properties (dict, optional): Properties to update on the block. Returns: dict: Information about the updated block.
move_block
Moves a block to a new location in the graph. This allows for reorganizing the structure of blocks in the graph by moving a block (and all its children) to a different location. IMPORTANT NOTES: 1. The block will maintain its children when moved 2. The hierarchical position depends on the 'as_child' parameter: - If as_child=True: The block becomes a child of the target block - If as_child=False: The block becomes a sibling after the target block Args: block_id (str): The ID of the block to move. target_block_id (str): The ID of the target block to move to. as_child (bool, optional): Whether to make the block a child of the target. Default is False (insert as sibling). Returns: dict: Result of the move operation.
remove_block
Removes a block from the Logseq graph. This operation permanently removes the specified block and all its children. This action cannot be undone. To remove a block, you need its block ID, which can be obtained from: - get_page_blocks() function - get_block() function - search_blocks() function Args: block_id (str): The ID of the block to remove. Returns: dict: Result of the removal operation.
search_blocks
Searches for blocks matching a query in the Logseq graph. Examples of useful queries: - page:"Page Name" - find all blocks on a specific page - "search term" - find blocks containing the term - page:"Apr 4th, 2025" - find all blocks in a journal - [[Page Name]] - find references to a specific page Returned blocks from journal pages will include: - "journal?": true - "journalDay": YYYYMMDD - The date in numeric format Args: query (str): The search query. Returns: list: A list of blocks matching the search query.
ID: rp8sl0uwus