MCP server for LogSeq
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOGSEQ_API_URL | No | The URL of the LogSeq API | http://localhost:12315 |
| LOGSEQ_API_TOKEN | Yes | Your API token for LogSeq |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_pageA | Create a new page in Logseq with properly structured blocks. Fails if a page with the same title already exists (use update_page to modify existing pages). This makes retries safe: re-sending a create_page that timed out will not create numbered duplicates like "Page(1)". Markdown content is automatically parsed into Logseq's block hierarchy:
Example content: |
| update_pageA | Update a page in Logseq with new content and/or properties. Supports two modes:
Markdown is parsed into proper block hierarchy just like create_page. YAML frontmatter in content will be merged with explicit properties. |
| list_pagesA | Lists all pages in a LogSeq graph, each with its last-updated time (UTC). To find recently modified pages, use sort='updated' (most recent first) and/or updated_since. |
| get_page_contentB | Get the content of a specific page from LogSeq. |
| delete_pageB | Delete a page from LogSeq. |
| delete_blockB | Delete a block from LogSeq by its UUID. |
| update_blockB | Update the content of an existing LogSeq block by UUID. |
| get_blockA | Get a single block by its UUID. Returns the block content, properties, and child blocks (recursively). Useful for inspecting a specific block after finding its UUID via search or query. |
| searchC | Search for content across LogSeq pages, blocks, and files |
| queryB | Execute a Logseq DSL query to search pages and blocks. Supports property queries, tag queries, task queries, and logical combinations. Raw datalog ({:query ...} / [:find ...]) is not supported. See https://docs.logseq.com/#/page/queries for query syntax. |
| find_pages_by_propertyA | Find all pages that have a specific property, optionally filtered by value. Simpler alternative to the full query DSL. |
| get_pages_from_namespaceA | Get all pages within a namespace hierarchy (flat list). Use this to discover subpages of a parent page. |
| get_pages_tree_from_namespaceA | Get pages within a namespace as a hierarchical tree structure. Useful for understanding the full page hierarchy. |
| rename_pageA | Rename an existing page. All references throughout the graph will be automatically updated. |
| get_page_backlinksB | Get all pages and blocks that link to a specific page (backlinks/linked references). |
| insert_nested_blockA | Insert a new block as a child or sibling of an existing block, enabling nested hierarchical structures |
| set_block_propertiesA | Set properties on a block in Logseq DB-mode. Properties must be defined on the block's tag/class. Use property display names (e.g. 'Content status', not the internal ident). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Each tool targets a distinct resource and action: pages, blocks, search/query, namespaces, and properties. Overlaps like query vs find_pages_by_property are explicitly framed as simple alternatives, so an agent can choose correctly.
Mostly consistent verb_noun snake_case (list_pages, get_block, create_page), but 'query' and 'search' are bare verbs, a minor deviation from the pattern.
17 tools is slightly above the ideal 3-15 range for a cohesive set, though each covers a distinct operation. The count feels a bit heavy but not excessive for LogSeq's complexity.
Core CRUD for pages and blocks is covered, plus searching, querying, backlinks, and namespace navigation. Minor gaps remain (e.g., explicit block creation on a page, move/reorder operations), but agents can work around them.