1. Conduid
  2. Developer Tools
  3. Logseq API MCP
MCP server · Developer Tools

Logseq API MCP

A MCP server that uses Logseq API to extract and interact with Logseq notes.

Unclaimed MIT devtools
56Fair

Scored 4 days ago · breakdown

About Logseq API MCP

Logseq API MCP is an MCP server published by gustavo-meilus in the Developer Tools category: a MCP server that uses Logseq API to extract and interact with Logseq notes.

The repository has 30 stars and 9 forks, with the last commit 4 months ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/gustavo-meilus/logseq-api-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Tools (12)

find_pages_by_propertyFilter pages by property key and optional value

Parameters not published.

get_all_page_contentComplete page: properties, blocks, DB refs expanded

Parameters not published.

get_all_pagesEvery page with ID, UUID, journal flag, and namespace

Parameters not published.

get_block_contentBlock detail with properties and immediate children

Parameters not published.

get_linked_flashcardsQ&A flashcard pairs from a page and all linked pages

Parameters not published.

get_page_backlinksFull backlink analysis including block-level references

Parameters not published.

get_page_blocksHierarchical block tree with IDs, UUIDs, and child counts

Parameters not published.

get_page_linksPages linking to a target page

Parameters not published.

get_pages_from_namespaceAll pages under a Logseq namespace

Parameters not published.

get_pages_tree_from_namespaceNested tree of namespace pages

Parameters not published.

queryRaw Datalog / DSL queries against the graph

Parameters not published.

searchFull-text search across blocks, pages, and file names

Parameters not published.

Ask AI

✦

Ask AI about Logseq API MCP

Powered by Claude · Grounded in docs

I know everything about Logseq API MCP. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v1.0.2v1.0.2 — Live Context Tools + Claude Code CLI Integration · 27 May 2026What's New 5 New Live Context Tools Claude Code CLI now knows what you're looking at in Logseq — no companion plugin required. All new tools call Logseq's existing HTTP API at `:12315` which proxies plugin-level UI state directly. | Tool |…
v1.0.1v1.0.1 · 19 May 2026Removed Vector subsystem (`src/vector/`, `vector_search`, `vector_db_status`, `logseq-sync` CLI, `[vector]` dep group) — retraction; the v1.0.0 implementation shipped without an embedder and was non-functional. See `MIGRATION.md`.…
v1.0.0v1.0.0 · 19 May 2026New Features 22 standard tools — 13 new tools added on top of the original 9: `delete_block`, `delete_page`, `update_block`, `update_page`, `insert_nested_block`, `rename_page`, `set_block_properties` (DB-mode), `search`, `query`,…

README

logseq-api-mcp

Your AI assistant starts every session blind to your Logseq knowledge graph. logseq-api-mcp fixes that: 21 tools to read, write, query, and search your notes — auto-registered the moment you drop a Python file into src/tools/.

Python CI Coverage Tests Stars


Quick Start

Step 1 — Install

git clone https://github.com/gustavo-meilus/logseq-api-mcp.git
cd logseq-api-mcp
uv sync

Step 2 — Configure

cp .env.template .env
# open .env and set LOGSEQ_API_ENDPOINT and LOGSEQ_API_TOKEN

Getting your token: open Logseq, go to Settings → Features → Developer mode, enable HTTP APIs server, and copy the token shown. The default endpoint is http://127.0.0.1:12315/api.

Step 3 — Connect

// ~/.claude/claude_desktop_config.json
{
  "mcpServers": {
    "logseq-api": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/logseq-api-mcp", "python", "src/server.py"],
      "env": {
        "LOGSEQ_API_ENDPOINT": "http://127.0.0.1:12315/api",
        "LOGSEQ_API_TOKEN": "your_token_here"
      }
    }
  }
}

Restart Claude Desktop. All 21 tools are live.


Tools

Read (12 tools)

Tool What it does
get_all_pages Every page with ID, UUID, journal flag, and namespace
get_page_blocks Hierarchical block tree with IDs, UUIDs, and child counts
get_page_links Pages linking to a target page
get_page_backlinks Full backlink analysis including block-level references
get_block_content Block detail with properties and immediate children
get_all_page_content Complete page: properties, blocks, DB refs expanded
get_linked_flashcards Q&A flashcard pairs from a page and all linked pages
search Full-text search across blocks, pages, and file names
query Raw Datalog / DSL queries against the graph
find_pages_by_property Filter pages by property key and optional value
get_pages_from_namespace All pages under a Logseq namespace
get_pages_tree_from_namespace Nested tree of namespace pages

Write (10 tools)

Tool What it does
create_page Create a page with optional properties and format
delete_page Remove a page permanently
rename_page Rename a page and update all references
update_page Append or replace content on an existing page
append_block_in_page Add blocks at the end of a page
edit_block Replace a block's content by UUID
update_block Update block content by UUID
insert_nested_block Insert a child or sibling block relative to another block
delete_block Delete a block by UUID
set_block_properties Set structured properties on a block (DB-mode only)

Configuration

Variable Default Description
LOGSEQ_API_ENDPOINT http://127.0.0.1:12315/api Logseq HTTP API base URL
LOGSEQ_API_TOKEN (required) Bearer auth token
LOGSEQ_VERIFY_SSL true Set false to skip TLS verification
LOGSEQ_DB_MODE false Enable Logseq database-format API paths
LOGSEQ_EXCLUDE_TAGS (empty) Comma-separated tags — pages with any tag are hidden
LOGSEQ_LOG_LEVEL WARNING Log level: DEBUG, INFO, WARNING, ERROR

DB-Mode

Logseq's newer database format stores graph data in SQLite rather than markdown files. Set LOGSEQ_DB_MODE=true to unlock set_block_properties, UUID-reference resolution in get_all_page_content, and Datalog-powered queries in find_pages_by_property. Tools that do not apply in DB-mode return a clear error rather than silently failing.


Privacy

Any page tagged with a tag from LOGSEQ_EXCLUDE_TAGS disappears from every read operation. Enforcement runs at query time, so toggling the variable takes effect immediately.

Operation Behavior when page is excluded
get_all_pages Excluded pages absent from the listing
search Excluded pages and their blocks stripped from results
query Results post-filtered against excluded page names
find_pages_by_property Results post-filtered
get_page_backlinks Excluded source pages removed
get_all_page_content Returns ❌ Access denied for the excluded page

Adding a Tool

Create src/tools/my_tool.py. No imports, no registration, no config changes needed. The discovery system picks it up on the next server start.

from typing import List
from mcp.types import TextContent
from src.client.logseq_client import LogseqClient
from src.client.config import LogseqConfig, load_config
from src.logging_setup import get_logger

_log = get_logger(__name__)

async def _run(
    client: LogseqClient, config: LogseqConfig, param: str
) -> List[TextContent]:
    try:
        _log.debug("%s called", __name__)
        result = await client.some_api_method(param)
        return [TextContent(type="text", text=str(result))]
    except Exception as exc:
        _log.error("exception in %s: %s", __name__, exc, exc_info=True)
        return [TextContent(type="text", text=f"❌ Error: {exc}")]

async def my_tool(param: str) -> List[TextContent]:
    """One-line description — this becomes the MCP tool description."""
    cfg = load_config()
    return await _run(LogseqClient(cfg), cfg, param)

The _run(client, config, ...) pattern keeps the logic testable via FakeLogseqClient in tests/conftest.py. Function names starting with _ are not registered.


Development

uv sync --dev                                                        # all deps
uv run --group test pytest tests/ -v                                 # test suite (345 tests)
uv run --group test pytest tests/ --cov=src --cov-fail-under=85      # coverage gate
uv run ruff check --fix && uv run ruff format                        # lint + format
uv run mypy src/ --ignore-missing-imports                            # type check
uv run bandit -r src/                                                # security scan
uv run mcp dev src/server.py                                         # MCP inspector

Star History

Star History Chart


License

MIT — see LICENSE.


Made for the Logseq and MCP communities.

README fetched from the repository 5 days ago. The original is authoritative.

Questions

About Logseq API MCP

How do I install Logseq API MCP?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is Logseq API MCP safe to use with an AI agent?

Its trust score is 56 out of 100 (fair). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Logseq API MCP still maintained?

Yes — the latest release is v1.0.2 (27 May 2026), and the last commit was 4 months ago. The repository has 30 stars and 1 open issues.