Token导航 LogoToken导航TokenDH.com
Bookmark Lens logo
搜索检索stdio官方级别未说明来源级核验

Bookmark Lens

MCP Server

Bookmark Lens 是一款基于语义搜索的书签管理工具,支持本地化处理、智能标签和自动分类,适用于个人知识管理和研究场景。

工具数

7

提示词数

0

GitHub Stars

4

资源数

0
搜索本地处理PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

cornelcroi

提供方

cornelcroi

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx bookmark-lens

详细介绍

______________________________________________________________________

标题:书签镜头 表情符号🔖 颜色来源:靛蓝 颜色致:蓝色 sdk:docker 固定:false 许可证:mit short_description:支持MCP的AI代理的语义书签引擎 标签:

  • 构建mcp跟踪消费者
  • 打造mcp轨道创意

______________________________________________________________________

书签镜头

你的AI助手会记住你保存的所有内容。

](https://badge.fury.io/py/bookmark-lens) ![Python 3.10+](https://www.python.org/downloads/) ![License: MIT](https://opensource.org/licenses/MIT)

书签镜头是什么?

厌倦了在浏览器文件夹中丢失书签?搜索“那篇关于React钩子的文章”,但不记得是提到了“钩子”、“useState”还是“功能组件”?

书签镜头 通过语义搜索解决了这个问题。按书签内容查找书签 *关于*,而不仅仅是精确的关键字。搜索“身份验证教程”,获得有关登录系统、OAuth、JWT的结果,即使它们从未提到“身份验证”一词

传统书签: 文件夹→ 子文件夹→ 我把它保存在哪里了? → 放弃吧,再谷歌一下 使用书签镜头: “查找上周的React教程”→ 立即找到

所有处理都在您的机器上本地进行。您的书签保持私密。

在行动中看到它

*演示即将推出-智能书签搜索功能*

特性

  • 🧠 语义搜索 –按含义查找书签,而不仅仅是关键字
  • 🆓 完全免费 –核心功能不需要API密钥
  • 🤖 LLM增强型(可选) –如果您的LLM使用此MCP工具,它可以生成摘要、自动标记和主题分类
  • 语义搜索 -按含义查找书签,而不仅仅是关键字
  • 元数据 -自动提取标题、描述和内容
  • 采用智能标签 -手动标签+自动生成标签(智能模式)
  • 主题分类 -自动分类(智能模式)
  • 日期筛选 -按时间范围搜索(LLM支持自然语言)
  • MCP本地 -适用于Claude Desktop和其他MCP客户端
  • 快速 -使用句子变换器的局部嵌入

______________________________________________________________________

快速设置

克劳德桌面(stdio模式)

  1. 打开您的Claude Desktop配置文件:

- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - 视窗: %APPDATA%\Claude\claude_desktop_config.json

  1. 将书签镜头添加到 mcpServers 章节:
{
  "mcpServers": {
    "bookmark-lens": {
      "command": "uvx",
      "args": ["bookmark-lens"]
    }
  }
}
  1. 重新启动克劳德桌面

就是这样!无需安装、设置或配置。

其他MCP客户端

对于其他MCP兼容客户端,请使用:

uvx bookmark-lens

HTTP模式(自托管)

书签镜头也支持 可流式传输的HTTP 基于网络的集成传输。这需要自托管,因为没有可用的托管版本。

# Run HTTP server on default port (8000)
bookmark-lens --transport http

# Server available at: http://127.0.0.1:8000/mcp

# Custom port
bookmark-lens --transport http --port 8080

多用户支持

HTTP模式支持多个用户通过 X-User-Id 头球每个用户的书签都是完全隔离的:

# User "alice" saves a bookmark
curl -H "X-User-Id: alice" http://localhost:8000/mcp

# User "bob" saves a bookmark
curl -H "X-User-Id: bob" http://localhost:8000/mcp

# Alice and Bob have separate bookmark collections
  • 默认:如果没有 X-User-Id 提供header,默认为 dev-user
  • 隔离:每个用户只能访问自己的书签、标签和统计信息
  • 单个实例:一台服务器可以为多个用户提供完全数据隔离的服务
📖 自助托管指南:部署.md 有关运行自己的HTTP服务器、Docker部署、多用户设置和安全考虑的详细说明。

______________________________________________________________________

对话示例

研究工作流程

You: Save https://arxiv.org/abs/2401.12345 with note "Interesting paper on attention mechanisms"

Claude: Saved! I've extracted:
- Title: "Efficient Attention: A Survey"
- Description: Comprehensive review of attention mechanisms...
- Auto-generated tags: #ai #research #attention #transformers

You: Find papers about attention from this month

Claude: Found 3 bookmarks:
1. "Efficient Attention: A Survey" (arxiv.org) - Today
   Tags: ai, research, attention, transformers

2. "Flash Attention Implementation" (github.com) - 3 days ago
   Tags: pytorch, optimization, gpu

3. "Attention is All You Need - Annotated" (nlp.seas.harvard.edu) - 1 week ago
   Tags: tutorial, transformers, nlp

学习路径

You: I'm learning React. Save good tutorials as I find them with tag #react-learning

Claude: Great! I'll tag them for you.

You: [Later] Show me all my React learning resources

Claude: You have 12 React bookmarks:

**Fundamentals (4 bookmarks):**
- Official React Docs - react.dev
- React Tutorial for Beginners - youtube.com
- Thinking in React - beta.reactjs.org

**Advanced (5 bookmarks):**
- Custom Hooks Patterns - usehooks.com
- React Performance Optimization - web.dev
...

You: Which ones cover hooks?

Claude: 8 of your bookmarks discuss hooks:
[Semantic search finds all hook-related content even without "hooks" in title]

内容策展

You: Show me my GitHub bookmarks by topic

Claude: Here's the breakdown:

**AI/ML (15 bookmarks)**
- Transformer models
- LLM training techniques
- Embedding systems

**Frontend (23 bookmarks)**
- React ecosystem
- Build tools
- State management

**DevOps (8 bookmarks)**
- Kubernetes guides
- CI/CD pipelines

You: What are my top 3 most-saved domains?

Claude:
1. github.com - 47 bookmarks
2. medium.com - 23 bookmarks
3. dev.to - 18 bookmarks
更多示例:用法\_ GIDE.md 详细的工作流程和高级查询模式。

______________________________________________________________________

建筑

bookmark-lens/
├── src/bookmark_lens/
│   ├── server.py              # MCP server (stdio + HTTP/SSE)
│   ├── config.py              # Configuration management
│   ├── database/
│   │   ├── duckdb_client.py   # Relational data (bookmarks, tags)
│   │   └── lancedb_client.py  # Vector embeddings
│   ├── models/
│   │   └── bookmark.py        # Pydantic models
│   └── services/
│       ├── content_fetcher.py # Web page fetching
│       ├── embedding_service.py # Text → vectors
│       ├── bookmark_service.py # Orchestration
│       └── search_service.py  # Hybrid search
├── data/                      # Local databases (gitignored)
└── tests/
    └── manual_test.py         # End-to-end testing

技术栈

  • FastMCP -双传输模型上下文协议(stdio+HTTP/SSE)
  • DuckDB -关系数据库(书签、元数据、标签)
  • LanceDB -矢量数据库(语义搜索嵌入)
  • 句子变换器 -本地嵌入模型(全MiniLM-L6-v2)
  • 可读性lxml -从网页中提取内容
  • 派丹蒂克 -数据验证和序列化
技术深潜:技术.md 了解混合搜索架构、性能基准和实现细节。

______________________________________________________________________

常见问题解答

这与浏览器书签有何不同? 浏览器书签使用文件夹和精确的名称匹配。书签镜头使用AI来理解意义。搜索“身份验证”并找到有关登录、OAuth、JWT的书签,即使他们从未使用过这个词。

Raindrop.io或Pocket怎么样? 它们是基于云的(您的数据在其服务器上),需要订阅高级功能。书签镜头是100%本地免费的。你的数据永远不会离开你的机器。

我需要API密钥吗? 不!核心功能(保存、搜索、标记)在没有API密钥的情况下完全离线工作。智能模式(自动摘要、自动标记)是可选的,并使用您自己的LLM API密钥。

Smart Mode的价格是多少? 与克劳德·海库合作:每个书签约0.0005美元(半美分)。以0.50美元的价格处理1000个书签。它是可选的——核心功能是免费的。

我的数据是私有的吗? 100%私人。一切都在本地运行。核心功能根本不使用互联网。智能模式仅将书签内容发送到您选择的LLM(而不是我们)。

如果我有成千上万的书签怎么办? 书签镜头可以轻松处理数千个。矢量搜索即使在大型集合中也很快。句子转换器模型在CPU上本地运行。

为什么是语义搜索而不是关键字? 当你不记得确切的单词时,关键字就会失败。“查找身份验证教程”找不到“面向初学者的OAuth指南”。语义搜索理解它们是关于同一主题的。

我可以导出我的书签吗? 尚未(路线图功能)。目前,数据存储在本地DuckDB+LanceDB数据库中。如果需要,您可以直接访问它们。

我可以用HTTP访问自托管吗? 对!Bookmark Lens支持流式HTTP传输。看 部署.md 获取自托管说明。注意:没有托管版本-您必须运行自己的服务器。

它支持多个用户吗? 对!在HTTP模式下,Bookmark Lens支持多个用户通过 X-User-Id 头球每个用户的书签都是完全隔离的,他们只能访问自己的数据。一个服务器实例可以为许多用户提供完全数据分离的服务。stdio模式仅限单用户(默认为 dev-user).

______________________________________________________________________

MCP工具

save_bookmark

保存带有可选注释和标签的URL。

参数:

  • url (必填):书签的URL
  • note (可选):保存的背景或原因
  • tags (可选):标签列表

例子:

{
  "url": "https://example.com/article",
  "note": "Great explanation of embeddings",
  "tags": ["ai", "ml", "tutorial"]
}

search_bookmarks

使用可选过滤器在语义上搜索书签。

参数:

  • query (必填):搜索什么
  • domain (可选):按域过滤(例如“github.com”)
  • tags (可选):按标签筛选
  • from_date (可选):ISO 8601日期字符串
  • to_date (可选):ISO 8601日期字符串
  • limit (可选):最大结果(默认值:10)

例子:

{
  "query": "machine learning tutorials",
  "domain": "github.com",
  "tags": ["python"],
  "from_date": "2024-11-07T00:00:00Z",
  "limit": 5
}

get_bookmark

按ID获取书签的完整详细信息。

参数:

  • id (必填):书签ID

update_bookmark

更新书签的注释和/或标签。

参数:

  • id (必填):书签ID
  • note (可选):新注释
  • tags (可选):添加/替换标签
  • tag_mode (可选):“替换”或“附加”(默认:“替换“)

delete_bookmark

删除书签及其所有相关数据。

参数:

  • id (必填):书签ID

例子:

{
  "id": "bkm_abc123"
}

list_tags

列出所有标签及其使用次数。

参数:

示例响应:

{
  "success": true,
  "count": 5,
  "tags": [
    {"tag": "ai", "count": 20},
    {"tag": "python", "count": 15},
    {"tag": "tutorial", "count": 8}
  ]
}

get_bookmark_stats

使用可选过滤器获取书签收藏的统计信息。

参数:

  • stat_type (可选):统计类型

- "total" -总计数(默认) - "by_domain" -按领域细分 - "by_topic" -按主题细分 - "by_tag" -按标签细分 - "by_date" -活动随时间变化

  • domain (可选):按域筛选
  • topic (可选):按主题筛选
  • tags (可选):按标签筛选
  • from_date (可选):日期后过滤器(ISO 8601)
  • to_date (可选):日期前过滤器(ISO 8601)
  • limit (可选):对于细分统计,前N个结果(默认值:10)

示例:

书签总数:

{
  "stat_type": "total"
}

本周保存的书签:

{
  "stat_type": "total",
  "from_date": "2024-11-07T00:00:00Z"
}

顶级域名:

{
  "stat_type": "by_domain",
  "limit": 5
}

按域列出的AI书签:

{
  "stat_type": "by_domain",
  "topic": "AI"
}

______________________________________________________________________

配置

所有配置都是通过环境变量进行的(.env 文件):

# Database paths
BOOKMARK_LENS_DUCKDB_PATH=./data/bookmark_lens.db
BOOKMARK_LENS_LANCEDB_PATH=./data/embeddings.lance

# Embedding model
EMBEDDING_MODEL_NAME=all-MiniLM-L6-v2
EMBEDDING_DIMENSION=384

# Content fetching
BOOKMARK_LENS_FETCH_TIMEOUT=30
BOOKMARK_LENS_USER_AGENT=bookmark-lens/0.1.0
MAX_CONTENT_LENGTH=50000

安装选项

减小安装大小(仅限CPU的PyTorch):

默认情况下,PyTorch可以安装CUDA支持(~3GB)。对于大多数部署,仅CPU就足够了,而且要小得多(~200MB):

# Install CPU-only PyTorch first
pip install torch --index-url https://download.pytorch.org/whl/cpu

# Then install bookmark-lens
pip install bookmark-lens

这建议用于Docker容器、无服务器部署或任何不需要GPU加速的环境。

______________________________________________________________________

智能模式(LLM增强功能)

启用智能模式以获取书签的自动摘要、标签和主题分类。

设置

  1. 选择LLM模型(请参见 LiteLLM提供商)
  2. 从您的提供商处获取API密钥
  3. 添加到 .env:
   LLM_MODEL=claude-3-haiku-20240307
   LLM_API_KEY=your-api-key-here
  1. 重新启动服务器

推荐型号

  • claude-3-haiku-20240307 -快速、便宜、质量好(Anthropic) \[推荐\]
  • gpt-4o-mini -快速、廉价(OpenAI)
  • gpt-4o -质量更好,更贵(OpenAI)
  • claude-3-5-sonnet-20241022 -最佳品质(Anthropic)

LiteLLM文档 支持100多种型号。

智能模式增加了什么

  • 自动摘要:简短(1-2句)和长篇(1段)摘要
  • 自动标签:自动生成3-5个相关标签
  • 主题分类:高级类别(人工智能、云、编程、数据、安全、DevOps、设计、商业、科学、其他)
  • 更好的搜索:嵌入内容中包含的摘要和主题,以提高相关性
  • Markdown提取:完整内容提取为Markdown(保留结构)

成本估算

随着 claude-3-haiku-20240307: 每个书签约0.0005美元 (非常便宜!)

演出

  • 基模 (无LLM):快速保存,仅提取标题/描述
  • 智能模式 (使用LLM):保存速度较慢(~5-10秒),内容完整+增强

注: 智能模式是完全可选的。所有核心功能无需任何LLM配置即可工作。

______________________________________________________________________

嵌入模型

违约: all-MiniLM-L6-v2 (384维,快速,质量好)

选择:

  • all-mpnet-base-v2 (768维,质量更好,速度更慢)
  • paraphrase-multilingual-MiniLM-L12-v2 (384个维度,多语言)

变化 .env:

EMBEDDING_MODEL_NAME=all-mpnet-base-v2
EMBEDDING_DIMENSION=768

______________________________________________________________________

运作原理

保存书签

  1. 获取 -下载网页
  2. 提取 -提取标题、描述、主要内容(智能模式下的Markdown)
  3. 增强 -生成摘要、标签、主题(仅限智能模式)
  4. 嵌入 -使用局部模型将文本转换为矢量
  5. 商店 -保存到DuckDB(元数据)和LanceDB(矢量)

搜索书签

  1. 嵌入查询 -将搜索文本转换为矢量
  2. 矢量搜索 -查找类似书签(LanceDB)
  3. 过滤器 -应用域/标签/日期过滤器(DuckDB)
  4. 排名 -按相似性得分排序
  5. 返回 -相关性得分最高的N个结果

自然语言日期

LLM(通过 bookmark_search_guide prompt)将自然语言转换为ISO日期:

  • “昨天”→ 2024-11-13T00:00:00Z
  • “上周”→ 2024-11-07T00:00:00Z
  • “上个月”→ 2024-10-14T00:00:00Z

服务器只接受ISO 8601格式,LLM进行转换。

______________________________________________________________________

发展

想贡献吗?看 贡献.md 有关设置说明。

运行测试

# Clone the repository
git clone https://github.com/yourusername/bookmark-lens.git
cd bookmark-lens

# Install in development mode
pip install -e ".[dev]"

# Run tests
python tests/test_simple.py

______________________________________________________________________

故障排除

“找不到模型”错误

第一次运行下载嵌入模型(约80MB)。这是正常的,只发生一次。

“数据库锁定”错误

关闭使用数据库的所有其他进程。DuckDB不支持并发写入。

搜索未返回任何结果

  • 检查书签是否已成功保存
  • 尝试更广泛的查询
  • 验证嵌入模型是否正确加载

首次搜索速度较慢

嵌入模型在首次使用时加载。后续搜索速度很快。

______________________________________________________________________

路线图

第二阶段(智能模式-未来)

  • LLM驱动的摘要
  • 自动标记
  • 主题分类
  • 查询扩展

未来功能

  • 浏览器历史记录导入
  • 浏览器扩展
  • 导出/导入书签
  • 书签收藏
  • 共享能力

______________________________________________________________________

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

______________________________________________________________________

贡献

欢迎投稿!拜托:

  1. 检查 TASKS.md 当前状态
  2. 遵循现有的代码风格(最小、集中的实现)
  3. 为新功能添加测试
  4. 更新文档

______________________________________________________________________

鸣谢

内置:

目录标签

目录标签

搜索本地处理PythonClaude语义搜索本地部署书签管理智能标签自动分类

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP