使用说明
MCP Logseq
使用SQLite数据库查询和HTTP API与Logseq进行编程交互。
概述
此项目提供以下脚本和工具:
- 创建和管理任务 通过Logseq HTTP API
- 查询图形数据库 使用DataScript/DataLog
- 自动化工作流程 使用Logseq
专为Logseq的现代SQLite支持架构而构建。
快速开始
先决条件
-
Logseq安装 -需要在以下位置安装Logseq开发程序
/Users/slim/slimslenderslacks/logseq- 提供nbb-logseq运行时(v1.2.173-feat-db-v31)
- 提供Logseq源代码依赖关系
- 提供better squelite3原生模块
-
Node.js -版本20.10.0或更高
安装
cd ~/slimslenderslacks/mcp-logseq
# Install dependencies
npm install
这将安装better-sqlite3(原生SQLite绑定)。所有其他依赖项都来自Logseq安装。
运行脚本
从项目根目录开始,使用 run-script.sh 包装:
# Query all tasks (defaults to 'mcp' graph)
./run-script.sh list_all_tasks.cljs
# Query tasks from a specific graph
./run-script.sh list_all_tasks.cljs Demo
./run-script.sh list_all_tasks.cljs mcp
# List tasks by status
./run-script.sh list_tasks_by_status.cljs mcp
# Create a task (API-based, doesn't need graph param)
./run-script.sh create_task_clean.cljs \
"Feb 5th, 2026" \
"My new task" \
"Todo" \
"High"
# Mark task as complete
./run-script.sh complete_task.cljs <uuid>
# Update task status
./run-script.sh update_task_status.cljs <uuid> "Doing"
# List available scripts
./run-script.sh
图形参数:
- 数据库查询脚本接受可选的图形名称作为第一个参数
- 图形名称默认为
"mcp"如果未指定 - 图表位于
~/logseq/graphs/<graph-name>/db.sqlite - 示例:
mcp,Demo,my-graph
注: 包装器脚本在以下位置使用Logseq安装 /Users/slim/slimslenderslacks/logseq 对于依赖关系。
项目结构
mcp-logseq/
├── scripts/ # ClojureScript scripts
│ ├── complete_task.cljs
│ ├── create_task_clean.cljs
│ ├── update_task_status.cljs
│ ├── get_task_info.cljs
│ ├── list_page_blocks.cljs
│ ├── list_page_tasks_api.cljs
│ ├── list_done_tasks_v2.cljs
│ ├── list_all_tasks.cljs
│ ├── query_status_tasks.cljs
│ ├── find_tasks.cljs
│ ├── find_block_by_title.cljs
│ ├── list_journals.cljs
│ ├── list_date_pages.cljs
│ ├── list_recent_pages.cljs
│ └── db_import.cljs
├── docs/ # Documentation
│ ├── SUMMARY.md # Comprehensive reference
│ ├── ESSENTIAL_FILES.md
│ └── ...
└── README.md # This file
脚本概述
任务管理(HTTP API)
创建任务
create_task_clean.cljs-创建标题清晰的任务(没有可见的#Task)
更新任务
complete_task.cljs-将任务标记为“完成”update_task_status.cljs-更新到任何状态(待办、正在做、已完成等)
查询任务
get_task_info.cljs-获取详细的任务信息list_page_blocks.cljs-列出页面上的所有块list_page_tasks_api.cljs-在页面上列出任务
数据库查询(DataScript)
任务查询
list_done_tasks_v2.cljs-使用时间戳查询已完成的任务list_all_tasks.cljs-查询所有任务query_status_tasks.cljs-按状态查询find_tasks.cljs-按条件查找任务
阻止和页面查询
find_block_by_title.cljs-按标题查找块list_journals.cljs-列出日记页面list_date_pages.cljs-列出日期页面list_recent_pages.cljs-列出最近的页面
HTTP API配置
脚本连接到Logseq的HTTP API:
API URL: "http://localhost:12315/api"
Authorization: "Bearer whatever"
严重: 始终使用限定的属性名称:
- ✓
"logseq.property/status" - ✓
"logseq.property/priority" - ✗
"status"(创建插件属性)
数据库配置
查询脚本连接到SQLite数据库:
~/.logseq/graphs/<graph-name>
例子:
(require '[logseq.db.common.sqlite-cli :as sqlite-cli])
(def conn (sqlite-cli/open-db! "~/.logseq/graphs/my_graph"))
(def db @conn)
示例工作流
创建并完成任务
# 1. Create task
nbb-logseq -cp scripts scripts/create_task_clean.cljs \
"Feb 5th, 2026" \
"Implement authentication" \
"Todo" \
"High"
# Returns: UUID: 6985659e-59b1-47e7-8661-ee790462f263
# 2. Check task details
nbb-logseq -cp scripts scripts/get_task_info.cljs \
"6985659e-59b1-47e7-8661-ee790462f263"
# 3. Update to Doing
nbb-logseq -cp scripts scripts/update_task_status.cljs \
"6985659e-59b1-47e7-8661-ee790462f263" \
"Doing"
# 4. Mark complete
nbb-logseq -cp scripts scripts/complete_task.cljs \
"6985659e-59b1-47e7-8661-ee790462f263"
查询任务
# List all done tasks
nbb-logseq -cp scripts scripts/list_done_tasks_v2.cljs
# List all tasks on today's journal
nbb-logseq -cp scripts scripts/list_page_tasks_api.cljs "Feb 5th, 2026"
# Find all high-priority tasks
nbb-logseq -cp scripts scripts/find_tasks.cljs
文档
看 docs/ 目录:
- 总结.md -API文档、数据模型、示例的综合参考
- ESSENTIAL_FILES.md -所有脚本的快速参考
- FILE_CLEANUP_PLAN.md -文件清理历史记录
关键概念
任务结构
正确的Logseq任务需要:
- 任务标签 (实体151)-通过无形方式添加
addBlockTag - 状态属性 -引用状态实体(77=待办,78=正在进行,80=已完成)
- 优先财产 -参考优先级实体(83=低,84=中,85=高)
数据模型
Logseq将数据存储为 基准 (实体属性值交易):
[256 :block/uuid #uuid "..." 262]
[256 :block/title "Task content" 262]
[256 :block/tags 151 262] ; Task class
[256 :logseq.property/status 80 262] ; Done
[256 :logseq.property/priority 85 262] ; High
最佳实践
- 使用HTTP API进行修改 当Logseq正在运行时
- 使用合格的属性名称 (
logseq.property/status不status) - 从不使用
updateBlock对于任务 -使用upsertBlockProperty相反 - 不可见地添加标签 随着
addBlockTag对于干净的标题
发展
依赖模型
该项目使用 父Logseq安装 对于运行时和源依赖关系:
优势:
- ✓ 无代码重复(节省111MB+)
- ✓ 始终使用最新的Logseq源
- ✓ 单一事实来源
- ✓ 易于维护
- ✓ 使用Logseq的精确nbb-Logseq构建(使用feat-db-v31)
它是如何工作的:
run-script.sh使用Logseq的nbb-Logseq运行时(v1.2.173-feat-db-v31)- 将Logseq源目录添加到类路径
- 脚本访问:
logseq.db.common.sqlite-cli,datascript.core等等。
为什么不使用npm的@logseq/nbb logseq?
- Logseq使用自定义构建(
1.2.173-feat-db-v31)未发布到npm - 此版本包括SQLite访问所需的数据库功能(feat-db-v31)
- 标准npm版本(1.2.173)缺少这些功能
所需的Logseq安装结构:
/Users/slim/slimslenderslacks/logseq/
├── deps/
│ ├── cli/src
│ ├── common/src
│ ├── db/src
│ ├── graph-parser/
│ │ ├── src
│ │ └── node_modules/.bin/nbb-logseq (v1.2.173-feat-db-v31)
│ └── outliner/src
└── src/
添加新脚本
- 在中创建脚本
scripts/目录 - 添加shebang:
#!/usr/bin/env nbb - 包含命名空间和要求
- 使可执行文件:
chmod +x scripts/your_script.cljs - 测试:
./run-script.sh your_script.cljs
测试
根据演示数据库测试脚本或创建测试图。
资源
- API日志文件: https://plugins-doc.logseq.com/
- 数据脚本 : https://github.com/tonsky/datascript
- nbb logseq: https://github.com/logseq/nbb-logseq
Docker支持
看 医生.md 有关在Docker中构建和运行mcp-logseq的说明。
快速启动:
# Build image
docker build -t mcp-logseq .
# Run script
./docker-run.sh list_all_tasks.cljs mcp
许可证
麻省理工学院
贡献
欢迎投稿!请确保:
- 脚本使用HTTP API进行修改
- 数据库查询是只读的
- 文档已更新
- 脚本已测试
