原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Bookmarks Lifecycle

作者:Fisher521版本 0.2.0i★ –i在你的电脑上运行
注册名称io.github.Fisher521/bookmarks-lifecycle

安装

概览

作者提供的说明(英文原文)

Bookmarks on a decision clock: 24 hours to decide, 30 days to watch, or keep. Never deletes.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "bookmarks-lifecycle": {
      "command": "npx",
      "args": [
        "-y",
        "bookmarks-lifecycle"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add bookmarks-lifecycle -- npx -y bookmarks-lifecycle

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "bookmarks-lifecycle": {
      "command": "npx",
      "args": [
        "-y",
        "bookmarks-lifecycle"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "bookmarks-lifecycle": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "bookmarks-lifecycle"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 Fisher521 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32691 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32691 个服务器的 22% 更新
  • 基础检查结果等于或优于此分类中其他 32691 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Bookmarks Lifecycle 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.2.0)于3个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Dialyne

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211前天更新
安装

Dialyne

作者:dialyne

Real phone calls in France for AI agents: dial +33 numbers, menus, hold, AI disclosure.

在云端运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

bookmarks-lifecycle

Give your saved bookmarks a lifecycle.

Saving is easy. Almost nothing you save ever gets decided about — it just accumulates. This is a local MCP server that puts every bookmark on a clock: 24 hours to decide, or 30 days to keep watching, or keep it for good. Nothing is ever deleted — a bookmark that times out without a decision just leaves your attention, not your disk, and every change (including ones an AI made) can be undone.

Aggregates via bookmarks-mcp. Writes only its own local state file, atomically. No accounts, no cloud, no network calls.

The model

Five states:

StateMeaningCounts down?
inboxAggregated, not yet up for a decisionno
pendingThe 24-hour layer — today's actual to-do listyes
watchingThe 30-day layer — "give it more time"yes
keptDecided: keep this for goodno
lapsedTimed out or let go — fully recoverable, never deletedno
aggregate → inbox

│ drip (up to N/day, oldest first) ▼ pending ──you decide──→ watching / kept / lapsed │ └──24h, no decision────────────→ lapsed ▲ watching ──30d, no decision───────────┘ └──you decide──→ kept

lapsed ──restore──→ pending (clock resets) any state ──undo (by history event)──→ whatever it was right before that event

From pending you can go to any of the three outcomes. From watching, a decision can only be keep — that matches the model above; to back out of a watch or a drop, use undo rather than re-deciding an item that's already moved on.

Bookmarks don't all land in pending the moment you aggregate them — a one-time import of 3,000 old bookmarks would otherwise all time out on the same day and the mechanism would mean nothing. They drip in at a daily rate instead (default 15/day, oldest first — by real save date when the source provides one). This is computed lazily whenever you call a tool, not by a background timer, and it does not accumulate across a long absence: however many days you've been away, one call promotes at most one day's quota. A 3,000-bookmark backlog at 15/day realistically takes months of daily visits to clear — that's an honest tradeoff of "no reminders, nothing runs unless you ask", not a claim that this replaces a habit-forming app.

Install

No account, no API key, no configuration — it works the moment it's installed.

Claude Code:

claude mcp add -s user bookmarks-lifecycle -- npx -y bookmarks-lifecycle

Claude Desktop / Cursor / any MCP client (mcpServers JSON):

{

"mcpServers": { "bookmarks-lifecycle": { "command": "npx", "args": ["-y", "bookmarks-lifecycle"] } } }

To run from source instead (for development), clone parse-bookmarks, bookmarks-mcp, and this repo as sibling directories, run npm install in bookmarks-mcp and then in bookmarks-lifecycle, and point your client at node /absolute/path/to/bookmarks-lifecycle/src/index.js.

Use `-s user`. Without it the scope defaults to local, which registers the server only for the directory you ran the command in — you'd have to be inside that folder for your assistant to see it. Your bookmarks have nothing to do with which code project you happen to be sitting in, so register it once for your whole account.

Config file locations (for the JSON form above):

  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • Cursor: ~/.cursor/mcp.json (or per-project .cursor/mcp.json)

Verifying it's connected: ask your assistant to call the stats tool, or check your client's MCP/server log — a successful initialize handshake and a tools/list containing intake, today, decide, list_layer, restore, undo, stats means it's up.

After changing any environment variable below, fully restart your MCP client's connection to this server (quit/reopen Claude Desktop, or restart the Cursor MCP process) — it reads them once at startup.

First run

If you're on macOS and want Safari bookmarks included, the app hosting this server (Claude Desktop, your terminal, Cursor) needs Full Disk Access (System Settings → Privacy & Security → Full Disk Access) — ~/Library/Safari is protected. Without it, intake's response will show "sourceStatus": "permission_denied" and a warnings entry explaining exactly that; it will NOT silently look like an empty result. Chromium browsers and Firefox need nothing extra.

Call intake first — nothing shows up in today until you do. Then today gives you the day's actual queue. If both intake and today come back completely empty and sourceStatus says "ok", that's an honest "you have no bookmarks in the sources this scanned" — check sourceStatus before assuming something's broken:

sourceStatusMeaning
no_sourcesNo supported browser was even detected on this machine
permission_deniedAt least one source failed to read (commonly Safari without Full Disk Access)
emptyEvery source scanned successfully and genuinely has 0 bookmarks
okScanned successfully and found something

`no_sources` even though you can see bookmarks in your browser? This detects Chromium browsers (Chrome, Edge, Brave, Arc, Vivaldi, Chromium) only in their standard per-OS install locations. If your browser uses a custom profile or data directory (a separate work profile, a portable install, a renamed user data folder, …), it won't be found automatically:

  1. Open chrome://version in that browser (edge://version, brave://version, etc. — the same page exists in every Chromium browser) and copy the value next to Profile Path.
  2. In your MCP client's config for this server, add an environment variable CHROMIUM_BOOKMARKS_PATH set to that path with /Bookmarks appended, e.g. "/Users/you/Library/Application Support/BraveSoftware/Brave-Browser/Custom/Bookmarks". Comma-separate multiple paths if you have more than one profile to include.
  3. Fully restart the MCP client's connection to this server (see Configuration below).

This doesn't apply to Safari — see the Full Disk Access note above instead.

Talking to it

You never call these tools yourself — your assistant does. You just talk. If you'd rather be walked through it, run the `clean_up_my_bookmarks` prompt once (in Claude Code: /mcp; in Claude Desktop: the prompts menu) and it will set you up and do one round with you.

Otherwise, plain sentences are enough:

Say something likeWhat happens
"Pull in my browser bookmarks"intake — scans your browsers, adds new URLs to the inbox
"What should I look at today?"today — the day's queue, oldest first, up to the daily quota
"Keep the first one, drop the last two"decide — after you've confirmed, not before
"Actually, undo that"undo — reverses any decision, including "keep"
"What did I let go of?"list_layer on lapsed — everything is still there
"Bring that one back"restore — returns it to the queue with a fresh clock
"How much is left?"stats — counts per layer and what's still waiting in inbox

Two things worth knowing on day one:

  • Nothing reminds you. There is no background process and no notification. The queue only moves when you ask — which also means it can never surprise you.
  • An empty result explains itself. Every response carries a nextStep telling your assistant what to suggest, so "0 items" never has to be guessed at: it will say whether you simply haven't scanned yet, whether today's batch is done, or whether a source failed to read.

Tools

ToolWhat it does
intakeScan bookmark sources, merge new ones into inbox, reconcile ones that moved or disappeared
todayThe pending layer right now, oldest first — your daily entry point
decideJudge one or more items: keep / watch / drop
list_layerSee any single layer, paginated (default 50/page), including lapsed ("what did I let go of")
restoreBring a lapsed item back to pending, clock reset
undoRevert an item to what it was right before one of its own history events — works for kept/watching too, not just lapsed
statsCounts per layer, today's decision count, how much is waiting in inbox

Every read tool (today/list_layer/stats) may still write to disk on the call you make: expiry and drip are computed lazily, so even "just looking" can move items between layers as a side effect. It only writes when something actually changed — a call that finds nothing due and nothing to drip touches nothing.

Plus two prompts:

PromptWhen
clean_up_my_bookmarksFirst time. Explains the decision-clock mechanism, runs intake, and does one small triage round with you.
daily_triageEvery day after that. today → a suggestion per item → waits for your confirmation → applies it.

Both intake and today also return a nextStep object (code + why) so your assistant knows what to suggest next instead of inferring it from an empty list. It is operational guidance only — never promotion.

Honesty about authorization

This server cannot verify that a tool call attributed to `"user"` actually came from you confirming something. Every parameter it receives — including actorClaim: "user" — comes from the AI, over the same channel as everything else. There is no separate, trusted channel this code can check. An earlier version of this README claimed "AI can't act without your say-so" as a server-enforced guarantee; that was tested and shown to be false — an AI that simply omits the field, or claims "user", goes through unchallenged. We're not going to repeat that claim.

What's actually true:

  • Whether an AI needs your click-through before it can call a mutating tool depends on your MCP client's own tool-approval settings — Claude Desktop and Cursor both have per-tool or per-session approval prompts. That's the real gate, and it lives in your client, not in this server.
  • actorClaim: "ai" is rejected unless you've explicitly set BOOKMARKS_LIFECYCLE_AUTO_DECIDE=true — but a caller can just omit the field (recorded as "mcp-client") or claim "user" instead, so don't treat this as a security boundary either.
  • What this server actually guarantees is reversibility. Every mutation — including ones made under autoDecide, including expiry, including drip — is undoable. restore reverses lapsed → pending. undo reverses *any* state change, including kept and watching, by history event, with a preview mode to check first. If an AI does something you didn't want, the fix is undo, not a promise that it couldn't have happened.
  • history records by: "user" | "ai" | "mcp-client" | "drip" | "expiry" | "system" on every change. The first two are claims, not verified identity — treat them as a hint for your own review, not evidence.

Configuration

All via environment variables in your MCP client config — none require touching this package's code. Restart your MCP client's connection after changing any of these.

VariableDefaultWhat
BOOKMARKS_LIFECYCLE_PENDING_HOURS24Hours in the pending layer before an undecided item lapses
BOOKMARKS_LIFECYCLE_WATCHING_DAYS30Days in the watching layer before an undecided item lapses
BOOKMARKS_LIFECYCLE_DRIP_PER_DAY15Max inbox items promoted to pending per day (never accumulates across a gap)

| BOOKMARKS_LIFECYCLE_AUTO_DECIDE | false | Whether decide/restore/undo calls claiming actorClaim: "ai" are allowed through (see [Honesty about authorization](#honesty-about-authoriz

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx