mcpField
L
Linkwarden MCP

Linkwarden MCP

本地服务
github.com生产力19 周前更新

关于 Linkwarden MCP

Linkwarden MCP 将 MCP 客户端连接到 Linkwarden 书签库,支持以自然语言查找和整理内容。默认只读;写入和删除工具可分别按范围启用。

主要功能

  1. 01搜索书签、集合和标签
  2. 02读取已保存及归档的网页内容
  3. 03默认只读
  4. 04可选且受范围控制的写入工具
  5. 05单独按范围启用删除与合并工具
  6. 06书签分流与整理工作流

适用场景

  1. 01按主题查找已保存的书签
  2. 02查看某个集合或标签中的条目
  3. 03启用写入范围后保存或整理链接
  4. 04启用删除范围后清理链接或标签

MCP 相关

连接 Linkwarden HTTP API,并通过 stdio 提供书签、集合和标签操作。只有配置相应范围后,才会注册写入和删除工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"flumpiey-linkwarden": {
"command": "uvx",
"args": [
"linkwarden-mcp"
],
"env": {
"LINKWARDEN_API_URL": "<LINKWARDEN_API_URL>",
"LINKWARDEN_API_KEY": "<LINKWARDEN_API_KEY>",
"LINKWARDEN_MCP_WRITE_SCOPES": "<LINKWARDEN_MCP_WRITE_SCOPES>",
"LINKWARDEN_MCP_DELETE_SCOPES": "<LINKWARDEN_MCP_DELETE_SCOPES>"
}
}
}
}
启动命令uvx linkwarden-mcp
需要配置的环境变量
LINKWARDEN_API_URLLinkwarden instance base URL (no /api/v1 suffix)
LINKWARDEN_API_KEY密钥Access token from Linkwarden settings (Authorization: Bearer)
LINKWARDEN_MCP_WRITE_SCOPESComma-separated write scopes: links,collections,tags,raw. Empty = read-only.
LINKWARDEN_MCP_DELETE_SCOPESComma-separated delete scopes (never implied by write scopes)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypilinkwarden-mcp0.1.6

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Linkwarden

linkwarden-mcp

适用于可自托管 Linkwarden 的 MCP 服务:向 AI 咨询书签、集合和标签。

License: MIT Python MCP CI PyPI

什么是 Linkwarden?

Linkwarden 是一款可自托管的开源书签管理器。你可以在一个地方收集、整理、注释和保存网页,并创建完整页面存档,以便即使原始页面消失,内容仍可阅读。它还支持协作和公开分享。

本项目将 Linkwarden HTTP API 接入 Model Context Protocol,让 Cursor、Claude、VS Code Copilot 及其他 MCP 宿主能够通过自然语言查询你的实时资料库。

Linkwarden 实用链接:

此服务的功能

默认情况下为只读。你可以使用:

  • 18 个读取工具 - 发现(list_resources)、六项核心读取功能(搜索、获取、读取保存内容、集合、标签、概览),以及 11 个分类整理/维护工作流
  • 任务工具(可选启用) - 根据意图执行写入操作,例如 save_link、smart_save_link、organise_links、create_collection、apply_triage_plan(设置匹配的写入范围后注册)
  • 删除工具(可选启用) - delete_links、delete_tags、merge_tags、delete_collection(仅在删除范围内注册;写入权限不会默认包含删除权限)
  • 严格拒绝列表 - 即使启用了写入功能,令牌、会话、身份验证、用户管理(GET /api/v1/users/me 除外)、迁移和整个实例的保存操作仍会被禁止

传输方式为 stdio。不运行 HTTP 服务。使用 uv / uvx 时,无需全局安装。

品牌标识/图标

共有四个展示位置(标识变更时请保持同步):

  1. stdio 宿主(Cursor、通过 mcp.json 配置的 Claude Desktop): server_icons() 提供的 serverInfo.icons — 内嵌数据 URI,来源于 src/linkwarden_mcp/assets/icon.png,另有 HTTPS 后备图标 docs/icon-512.png(https://raw.githubusercontent.com/flumpiey/linkwarden-mcp/main/docs/icon-512.png)。website_url 为 https://linkwarden.app/。
  2. Cursor 插件: .cursor-plugin/plugin.json 中的 logo → docs/linkwarden-icon.svg。
  3. Claude Desktop 扩展: mcpb/icon.png(使用 npx @anthropic-ai/mcpb pack mcpb 打包)。
  4. Claude.ai 远程连接器: Claude.ai 会忽略 serverInfo.icons,并使用连接器 URL 所属根域名的 favicon。如果之后托管远程 MCP,请在可注册域名根目录提供 docs/favicon.ico(例如,https://mcp.acme.com/... 对应 https://acme.com/favicon.ico)。

server.json 中的注册表元数据也将 icons[0].src 指向同一个原始 docs/icon-512.png URL。

要求

  • Python ≥ 3.10(由 uvx 自动安装)
  • uv(提供 uvx)
  • 可访问的 Linkwarden 实例:LINKWARDEN_API_URL + LINKWARDEN_API_KEY
访问令牌
  1. 登录你的 Linkwarden 实例(可自托管或使用 Cloud)。
  2. 打开 设置 → 访问令牌(或前往 /settings/access-tokens)。
  3. 创建一个新访问令牌,为其命名,并将令牌值复制到 LINKWARDEN_API_KEY。
  4. 将 LINKWARDEN_API_URL 设为你的实例基础 URL(通常不包含 /api/v1;仅当你的部署需要时才添加 /api/v1),例如 https://links.example.com 或本地 Docker 地址 http://127.0.0.1:3000。

linkwarden-mcp 会将令牌作为 Authorization: Bearer … 发送。API 概览:API 介绍。

本地运行时,将 .env.example 复制为 .env——切勿提交 .env。凭据优先使用 Cursor 插件的配置界面,或在生产环境中使用密钥管理器。

快速开始

使用 uvx 运行 PyPI 包:

uvx linkwarden-mcp

粘贴下方的客户端配置,设置 LINKWARDEN_API_URL / LINKWARDEN_API_KEY,重启主机,然后提问:“查找我未读的 Python 书签” 或 “我的 Dev 集合里有什么?”

从 git 克隆版本(开发):uvx --from git+https://github.com/flumpiey/linkwarden-mcp linkwarden-mcp 或 uv run --directory /path/to/linkwarden-mcp linkwarden-mcp。

安装

下方的配置会从 PyPI 获取 linkwarden-mcp。如需只读模式,请将写入范围环境变量留空。

Cursor

**插件(使用配置界面设置 URL、密钥和范围):**此仓库通过 .cursor-plugin/plugin.json 和根目录中的 mcp.json 作为 Cursor 插件使用。

  1. 将克隆的仓库符号链接或复制到 ~/.cursor/plugins/local/linkwarden-mcp(Windows:%USERPROFILE%\.cursor\plugins\local\linkwarden-mcp)。
    • macOS / Linux: ln -s /path/to/linkwarden-mcp ~/.cursor/plugins/local/linkwarden-mcp
    • Windows: Cursor 不会跟随本地插件的符号链接。请改用联接或复制:
      mklink /J "%USERPROFILE%\.cursor\plugins\local\linkwarden-mcp" "E:\Development\linkwarden-mcp"
      
      或:
      robocopy "E:\Development\linkwarden-mcp" "%USERPROFILE%\.cursor\plugins\local\linkwarden-mcp" /E
      
  2. 重新加载窗口。
  3. 在 linkwarden-mcp 上打开 插件 → 配置。设置 Linkwarden API URL 和 Linkwarden API key。如需只读模式,将 Write scopes / Delete scopes 留空;否则粘贴 CSV,例如 links,collections。
  4. 在 Customize / MCP 下确认已启用 linkwarden MCP 服务。

Marketplace 上架需要单独提交,请前往 cursor.com/marketplace/publish。

**手动配置 mcp.json:**项目级 .cursor/mcp.json 或用户级 ~/.cursor/mcp.json。根目录中的 mcp.json 仅用于插件连接,包含 ${…} 占位符——切勿在其中提交真实密钥。

从 PyPI 安装:

{
  "mcpServers": {
    "linkwarden": {
      "type": "stdio",
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

本地可编辑安装(开发):

{
  "mcpServers": {
    "linkwarden": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/linkwarden-mcp", "linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

在 env 块中配置可选的限定范围写入:

"LINKWARDEN_MCP_WRITE_SCOPES": "links,collections",
"LINKWARDEN_MCP_DELETE_SCOPES": "links"

保存后重启 Cursor。在 MCP 设置中确认 linkwarden 已启用。

Claude Desktop

**桌面扩展(.mcpb):**从 GitHub Releases 下载 mcpb.mcpb。请使用 v0.1.5+(PATH 中需要有 uv)。启动命令为 uv tool run --python 3.12 linkwarden-mcp。不要将 PyPI 包加入 mcpb/pyproject.toml 依赖项——Claude Desktop 会在安装时同步该文件,且可能在系统 Python 3.13 环境下失败。

1. 打开 Claude Desktop → **Settings → Extensions**。 2. 打开 **Advanced settings** → **Install Extension…** 3. 选择 `mcpb.mcpb`。检查权限,输入 **Linkwarden API URL** 和 **Linkwarden API key**,然后点击 **Install**。 4. 若要只读,请将 **Write scopes** 和 **Delete scopes** 留空。 5. 如果工具没有显示,请重启 Claude Desktop。

从克隆仓库构建自己的捆绑包:

npx @anthropic-ai/mcpb pack mcpb

在 Windows 上,双击通常不会有任何反应;将文件拖入聊天则会把它作为附件添加到对话中,而不是安装。请在 Settings 中使用 Install Extension…。

**手动配置 claude_desktop_config.json 的备用方法:**编辑 Claude Desktop 配置,然后重启应用。

OS路径
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "linkwarden": {
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

本地克隆:

{
  "mcpServers": {
    "linkwarden": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/linkwarden-mcp", "linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}
Claude Code

通过 CLI 添加:

claude mcp add linkwarden --env LINKWARDEN_API_URL=https://links.example.com --env LINKWARDEN_API_KEY=your-token -- uvx linkwarden-mcp

或者编辑 ~/.claude.json / 项目 MCP 配置:

{
  "mcpServers": {
    "linkwarden": {
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}
VS Code / GitHub Copilot

在项目根目录创建 .vscode/mcp.json:

{
  "servers": {
    "linkwarden": {
      "type": "stdio",
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

本地可编辑方式:

{
  "servers": {
    "linkwarden": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/linkwarden-mcp", "linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

重新加载窗口。打开 Copilot Chat,确认 linkwarden 工具可用。

Windsurf

编辑 ~/.codeium/windsurf/mcp_config.json(macOS/Linux),或使用 Windsurf MCP 设置界面:

{
  "mcpServers": {
    "linkwarden": {
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}

保存后重启 Windsurf。

Zed

在 Zed settings.json 的 context_servers 下添加(也可通过 Agent Panel → settings 添加):

{
  "context_servers": {
    "linkwarden": {
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}
Cline

编辑 Cline MCP 设置文件(通过 Cline MCP 界面访问 cline_mcp_settings.json):

{
  "mcpServers": {
    "linkwarden": {
      "command": "uvx",
      "args": ["linkwarden-mcp"],
      "env": {
        "LINKWARDEN_API_URL": "https://links.example.com",
        "LINKWARDEN_API_KEY": "your-token"
      }
    }
  }
}
Continue

在 .continue/config.yaml 中:

mcpServers:
  - name: linkwarden
    command: uvx
    args:
      - linkwarden-mcp
    env:
      LINKWARDEN_API_URL: https://links.example.com
      LINKWARDEN_API_KEY: your-token
通用 / 任意 stdio MCP 主机

任何能够启动 stdio MCP 服务的主机:

字段值
命令uvx
参数linkwarden-mcp
环境变量LINKWARDEN_API_URL、LINKWARDEN_API_KEY(以及可选的写入范围)
uvx linkwarden-mcp

从克隆仓库进行开发:uv run --directory /path/to/linkwarden-mcp linkwarden-mcp。

npx 只能运行 npm 包。这是一个 Python 包;请使用 uvx。

环境变量

变量必需说明
LINKWARDEN_API_URL是基础 URL(仅在需要时包含 /api/v1;常见格式:https://links.example.com)
LINKWARDEN_API_KEY是在 Settings → Access Tokens 中获取的访问令牌;作为 Authorization: Bearer 发送;绝不记录到日志
LINKWARDEN_MCP_WRITE_SCOPES否以逗号分隔的创建/更新域。留空 = 不允许写入。
LINKWARDEN_MCP_DELETE_SCOPES否仅用于删除的逗号分隔域。不会由 WRITE_SCOPES 隐式启用。
LINKWARDEN_MAX_BULK否每次批量操作的最大记录数(默认值为 25)
TEST_LINKWARDEN_API_URL仅集成测试供 pytest -m integration 使用的实时沙盒 URL
TEST_LINKWARDEN_API_KEY仅集成测试供 pytest -m integration 使用的实时沙盒令牌

有效范围:links、collections、tags、raw。不支持通配符(*、all)。raw 会将有效范围扩展为所有域范围(紧急解锁选项)。

推荐配置(涵盖大多数书签工作流,无需启用所有会修改数据的工具):

"LINKWARDEN_MCP_WRITE_SCOPES": "links,collections",
"LINKWARDEN_MCP_DELETE_SCOPES": "links"

不设置范围时的默认值:18 个工具。在 WRITE 和 DELETE 中启用全部三个域范围时:31 个工具。

如果设置了旧版 LINKWARDEN_MCP_ALLOW_WRITES / ALLOW_WRITES / LINKWARDEN_MCP_WRITES,程序会直接报错。请改用范围限定变量。

MCP 主机环境变量(.cursor/mcp.json 或 Cursor 插件 Configure)必须与进程环境变量 / .env 一致,否则范围行为会不一致。

请参阅 .env.example。**切勿提交 .env。**在生产环境中,建议使用 Cursor 插件 Configure 界面或密钥管理器。

写入范围和任务工具

当某个范围列在 LINKWARDEN_MCP_WRITE_SCOPES 中时,服务器会为该领域注册任务工具。LINKWARDEN_MCP_DELETE_SCOPES 会为每个领域启用删除/合并工具。调用 list_resources,查看 read_only、范围列表和实时边界字符串。

工具范围用途
save_linkWRITE links将 URL 保存到一个集合中(按名称指定)
smart_save_linkWRITE links保存链接,并可选择启发式推荐的集合/标签
organise_linksWRITE links移动或重新标记多个链接
update_linkWRITE links更新链接字段(读取-修改-写入)
queue_archiveWRITE links排队进行保存(异步;不会立即执行)
apply_triage_planWRITE links应用 [{link_id, collection?, tags?}];默认 dry_run=true
bulk_sort_by_rulesWRITE links匹配 domain_pattern 规则后进行整理;默认 dry_run=true
create_collectionWRITE collections创建集合(可指定父级)
auto_tag_by_domainWRITE links + tags应用域名→标签规则;默认 dry_run=true
delete_linksDELETE links删除多个链接
delete_tagsDELETE tags按 ID 或名称删除标签
merge_tagsDELETE tags将标签合并为一个新名称(具有破坏性)
delete_collectionDELETE collections在用户为集合中的链接选择删除/移动/取消后删除集合(通过征询或 on_links)

仅使用推荐范围的示例:

"LINKWARDEN_MCP_WRITE_SCOPES": "links,collections",
"LINKWARDEN_MCP_DELETE_SCOPES": "links"

拒绝列表(始终阻止): /api/v1/tokens、/api/v1/session、/api/v1/auth、/api/v1/users/**(GET /api/v1/users/me 除外)、迁移操作,以及整个实例的保存工作进程操作。

工具

读取工具

始终注册(共 18 个)。

工具用途
list_resources发现;报告 read_only + 实时写入/删除范围
search_links按查询、集合、标签或固定状态搜索
get_link获取单个链接的完整元数据
read_link_content获取保存的纯文本(textContent 或存档回退内容)
list_collections列出集合及其链接数量
list_tags列出标签及其链接数量
get_library_overview汇总数量、空集合、未使用的标签
suggest_collection_for_url为 URL 提供启发式集合建议
suggest_tags_for_link推荐现有资料库中的标签(绝不编造名称)
find_unsorted_links列出未整理的链接(默认集合:未整理)
triage_links为链接 ID 提议集合/标签(不写入)
find_duplicate_links按规范化后的 URL 对链接分组
recommend_collection_for_links为一批链接推荐共识集合
suggest_links_for_collection查找其他位置可能属于该集合的链接
analyze_collection_overlap比较两个集合共有的域名/标签/URL
suggest_collection_structure整理建议:空集合、近似重复名称、过度拥挤的集合
align_tags_with_similar_links查看用于相似域名链接的标签
get_sorting_dashboard一站式整理:未整理链接、重复项、空集合、最大集合
写入工具

仅在设置了相应范围时注册(见上表)。整理收件箱时,优先使用 smart_save_link / 整理工具,而不是直接编辑字段。

模式所需范围说明
链接创建/更新/整理/存档WRITE links包含默认启用 dry_run 的工作流写入工具
创建集合WRITE collections可按名称指定父级
域名自动添加标签WRITE links + tags仅使用现有标签名称
删除/合并标签相应的 DELETE 范围具有破坏性;请先确认 ID

Agent Skill

配套技能:skills/linkwarden-bookmarks/SKILL.md。

Cursor 插件会从 skills/ 中发现此技能。没有该插件时,请将该文件夹复制或符号链接到 Agent 技能路径。它会告知模型先调用 list_resources,写入后进行验证,以及优先使用哪些工作流工具。

开发

uv sync --extra dev
npm install          # installs lefthook + commitlint; registers git hooks
uv run linkwarden-mcp

仅运行离线测试(respx)。无需运行中的 Linkwarden:

uv run ruff check src tests
uv run pytest
Git hooks(lefthook)
Hook / 命令执行内容
pre-commitruff check + 完整的 pytest(模拟测试套件)
commit-msgcommitlint Conventional Commits
npm run pre-publish确保构建/twine → ruff → pytest → sdist 内容 → python -m build → twine check → npx @anthropic-ai/mcpb pack mcpb

提交消息必须遵循 Conventional Commits,例如 feat(api): add delete_links tool。

标记发布版本前,请运行本地发布检查:

npm run pre-publish

GitHub Actions 矩阵:Python 3.10 和 3.12。

注意事项

  • 一个进程 ↔ 一个 LINKWARDEN_API_URL。多实例路由不在支持范围内。
  • 共享实例上的多用户/团队消歧未经验证。在针对实时共享资料库完成验证前,请勿声称支持多租户。
  • 集合/标签建议基于启发式规则,且仅限当前资料库;不会凭空创建新的标签名称。
  • 批量修改工作流默认使用 dry_run=true;仅在检查计划后才设置 dry_run=false。
  • ChatGPT Apps 需要托管的 HTTP MCP 端点。此软件包仅支持 stdio。

许可证

MIT。请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。