by ergut
MCP server to interact with LogSeq via its Local HTTP API - enabling AI assistants like Claude to seamlessly read, write, and manage your LogSeq graph.
# Add to your Claude Code skills
git clone https://github.com/ergut/mcp-logseqLast scanned: 5/30/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-30T15:12:40.063Z",
"npmAuditRan": true,
"pipAuditRan": true
}mcp-logseq is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by ergut. MCP server to interact with LogSeq via its Local HTTP API - enabling AI assistants like Claude to seamlessly read, write, and manage your LogSeq graph. It has 301 GitHub stars.
Yes. mcp-logseq passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/ergut/mcp-logseq" and add it to your Claude Code skills directory (see the Installation section above).
mcp-logseq is primarily written in Python. It is open-source under ergut on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh mcp-logseq against similar tools.
No comments yet. Be the first to share your thoughts!
Transform your LogSeq knowledge base into an AI-powered workspace! This MCP server enables Claude to seamlessly interact with your LogSeq graphs.
📊 Intelligent Knowledge Management
"Analyze all my project notes from the past month and create a status summary"
"Find pages mentioning 'machine learning' and create a study roadmap"
"Search for incomplete tasks across all my pages"
📝 Automated Content Creation
"Create a new page called 'Today's Standup' with my meeting notes"
"Add today's progress update to my existing project timeline page"
"Create a weekly review page from my recent notes"
🔍 Smart Research & Analysis
"Compare my notes on React vs Vue and highlight key differences"
"Find all references to 'customer feedback' and summarize themes"
"Create a knowledge map connecting related topics across pages"
🧠 Semantic Search (optional, requires vector setup)
"Find everything I wrote about burnout, even if I didn't use that word"
"What notes relate to my thoughts on deep work?"
"Search across my Dutch and English notes for ideas about productivity"
🤝 Meeting & Documentation Workflow
"Read my meeting notes and create individual task pages for each action item"
"Get my journal entries from this week and create a summary page"
"Search for 'Q4 planning' and organize all related content into a new overview page"
claude mcp add mcp-logseq \
--env LOGSEQ_API_TOKEN=your_token_here \
--env LOGSEQ_API_URL=http://localhost:12315 \
-- uv run --with mcp-logseq mcp-logseq
Add to your config file (Settings → Developer → Edit Config):
{
"mcpServers": {
"mcp-logseq": {
"command": "uv",
"args": ["run", "--with", "mcp-logseq", "mcp-logseq"],
"env": {
"LOGSEQ_API_TOKEN": "your_token_here",
"LOGSEQ_API_URL": "http://localhost:12315"
}
}
}
}
"Please help me organize my LogSeq notes. Show me what pages I have."
Semantic search over your Logseq graph using local AI embeddings — find notes by meaning, not just keywords. Searches across all your pages using vector similarity and full-text search combined, with cross-language support.
Powered by Ollama (local embeddings) and LanceDB (embedded vector DB). No data leaves your machine.
→ Full setup guide: VECTOR_SEARCH.md
The server provides 16 tools with intelligent markdown parsing, plus 3 optional vector search tools:
| Tool | Purpose | Example Use |
|---|---|---|
list_pages |
Browse your graph | "Show me all my pages" |
get_page_content |
Read page content | "Get my project notes" |
create_page |
Add new pages with structured blocks | "Create a meeting notes page with agenda items" |
update_page |
Modify pages (append/replace modes) | "Update my task list" |
delete_page |
Remove pages | "Delete the old draft page" |
delete_block |
Remove a block by UUID | "Delete this specific block" |
update_block |
Edit block content by UUID | "Update this specific block text" |
search |
Find content across graph | "Search for 'productivity tips'" |
query |
Execute Logseq DSL queries | "Find all TODO tasks tagged #project" |
find_pages_by_property |
Search pages by property | "Find all pages with status = active" |
get_pages_from_namespace |
List pages in a namespace | "Show all pages under Customer/" |
get_pages_tree_from_namespace |
Hierarchical namespace view | "Show Projects/ as a tree" |
rename_page |
Rename with reference updates | "Rename 'Old Name' to 'New Name'" |
get_page_backlinks |
Find pages linking to a page | "What links to this page?" |
insert_nested_block |
Insert child/sibling blocks | "Add a child block under this task" |
set_block_properties |
Set DB-mode class properties on a block | "Set the status of this block to active" (DB-mode only) |
vector_search ⚗️ |
Semantic search by meaning | "Find notes about shadow work or Jung" |
sync_vector_db ⚗️ |
Sync vector DB with graph files | "Update the search index" |
vector_db_status ⚗️ |
Show vector DB health and staleness | "Is my search index up to date?" |
⚗️ Requires vector search setup — see VECTOR_SEARCH.md
The create_page and update_page tools now automatically convert markdown into Logseq's native block structure:
Markdown Input:
---
tags: [project, active]
priority: high
---
# Project Overview
Introduction paragraph here.
## Tasks
- Task 1
- Subtask A
- Subtask B
- Task 2
## Code Example
```python
def hello():
print("Hello Logseq!")
```
Result: Creates properly nested blocks with:
tags, priority)#, ##, ###)- [ ] → TODO, - [x] → DONE)Update Modes:
append (default): Add new content after existing blocksreplace: Clear page and replace with new contentcreate_page fails with a clear error if a page with the same title already exists, instead of letting Logseq silently create numbered duplicates (Page(1), Page 2, ...). This makes retries after a timeout safe: if a previous create_page call timed out but actually committed, the retry tells you the page exists rather than fragmenting your content across ghost pages.
For large writes, prefer this pattern over one giant create_page call:
create_page with just the title and properties)update_page (mode: append)get_page_content to verify the resultIf you hit the "already exists" error mid-ingest, use get_page_content to see what landed, then continue with update_page instead of re-creating.
LOGSEQ_API_TOKEN (required): Your LogSeq API tokenLOGSEQ_API_URL (optional): Server URL (default: http://localhost:12315)LOGSEQ_API_CONNECT_TIMEOUT (optional): HTTP connect timeout in seconds (default: 3)LOGSEQ_API_READ_TIMEOUT (optional): HTTP read timeout in seconds (default: 6)LOGSEQ_DB_MODE (optional): Set to true to enable DB-mode property support. Only for Logseq DB-mode graphs (beta). Markdown/file-based graph users should leave this unset.LOGSEQ_EXCLUDE_TAGS (optional): Comma-separated tags — pages with these tags are hidden from all tools. See Privacy & Access Control below.LOGSEQ_INCLUDE_NAMESPACES (optional): Comma-separated namespace allow-list (e.g. work,projects). When set, only pages in these namespaces and their sub-pages are accessible — everything else, including top-level pages without a namespace, is hidden from listings/search and denied on direct access. See Privacy & Access Control below.LOGSEQ_EXCLUDE_NAMESPACES (optional): Comma-separated namespace deny-list (e.g. finance,work/secret). These namespaces are always blocked, taking priority over the include list. See Privacy & Access Control below.LOGSEQ_CONFIG_FILE (optional): Path to a shared JSON config file holding the graph path, ACL defaults, and the vector block. Env vars (LOGSEQ_EXCLUDE_TAGS, LOGSEQ_INCLUDE_NAMESPACES, LOGSEQ_EXCLUDE_NAMESPACES) override the matching keys in this file.MCP_HTTP_AUTH_TOKEN (required for --transport http): Bearer token clients must send as Authorization: Bearer <token>. The server refuses to start in HTTP mode without it. See Serving over HTTP.Pages tagged with excluded tags are completely hidden from AI — they won't appear in listings, searches, or queries, and attempting to read them directly returns an access-denied error.
Quick setup via env var:
LOGSEQ_EXCLUDE_TAGS=private,secret