返回市场
链接保险箱-mcp服务器

链接保险箱-mcp服务器

作者:labeveryday4 星标更新:2025-05-28

项目介绍

LinkVault MCP Server

用于扩展Amazon Q CLI,提供AI辅助的书签管理功能的工具。

<p align="center"> <img src="./img/logo.png" alt="LinkVault Logo" width="100%"> </p>

概述

LinkVault 是一个与Amazon Q CLI集成的MCP(模型上下文协议)服务器,通过自然语言提供智能书签管理功能。它允许您在终端中使用对话命令来访问、组织和搜索您的书签。

主要特性

  • Amazon Q CLI 集成:使用自然语言在终端中管理书签
  • Chrome 多用户支持:访问所有Chrome用户的书签
  • 内容提取:自动分析网页内容以进行更好的分类
  • 智能组织:AI辅助的分类和标签
  • 跨平台:适用于macOS、Windows和Linux

安装

  1. 确保已安装Python 3.10+
  2. 安装所需包:
    pip install -r requirements.txt
    
  3. 将脚本设置为可执行:
    chmod +x main.py src/url_manager.py src/server.py
    

Amazon Q CLI 设置

要使用LinkVault与Amazon Q CLI,需要将其注册为MCP服务器:

  1. 编辑MCP配置文件:

    nano ~/.aws/amazonq/mcp.json
    
  2. 添加书签管理器配置:

    "bookmark_manager": {
      "command": "uv",
      "args": ["--directory", "/path/to/linkvault-mcp-server", "run", "src/server.py"],
      "env": {},
      "disabled": false,
      "autoApprove": ["get_url_data", "store_url", "search_bookmarks", "list_categories", "list_bookmarks_by_category", "delete_bookmark", "list_chrome_bookmarks", "import_chrome_bookmark"]
    }
    
  3. /path/to/linkvault-mcp-server替换为您实际的安装目录路径。

  4. 保存文件并重新启动Amazon Q CLI(如果正在运行)。

MCP架构

LinkVault 使用模型上下文协议扩展Amazon Q CLI,增加书签管理功能:

graph TD
    User[用户] -->|自然语言| AQ[Amazon Q CLI]
    AQ -->|MCP协议| MCP[LinkVault MCP服务器]
    MCP -->|SQLite存储| SQL[(SQLite数据库)]
    MCP -->|提取内容| Web[网页]
    MCP -->|读取书签| Chrome[Chrome用户]
    
    subgraph LinkVault
        MCP
    end

MCP工作流程

sequenceDiagram
    participant 用户
    participant AQ as Amazon Q CLI
    participant MCP as LinkVault MCP服务器
    participant Web as 网页
    participant DB as SQLite数据库
    participant Chrome as Chrome书签
    
    用户->>AQ: "保存这篇文章:https://example.com"
    AQ->>MCP: get_url_data(url)
    MCP->>Web: 获取内容
    Web-->>MCP: HTML内容
    MCP-->>AQ: URL元数据
    AQ->>用户: "我找到了一篇关于X的文章。保存吗?"
    用户->>AQ: "是的,保存它"
    AQ->>MCP: store_url(metadata)
    MCP->>DB: 存储书签
    DB-->>MCP: 成功
    MCP-->>AQ: 成功响应
    AQ->>用户: "书签已保存!"
    
    用户->>AQ: "显示我的Chrome书签"
    AQ->>MCP: list_chrome_bookmarks()
    MCP->>Chrome: 读取书签
    Chrome-->>MCP: 书签数据
    MCP-->>AQ: Chrome书签
    AQ->>用户: "这里是您的Chrome书签..."

浏览器集成

LinkVault可以访问系统上所有Chrome用户的书签:

flowchart TD
    start[开始] --> findProfiles[查找Chrome用户]
    findProfiles --> profileCheck{找到用户?}
    profileCheck -->|否| returnEmpty[返回空列表]
    profileCheck -->|是| loopProfiles[处理每个用户]
    loopProfiles --> parseBookmarks[解析书签文件]
    parseBookmarks --> extractData[提取书签数据]
    extractData --> addProfileInfo[添加用户信息]
    addProfileInfo --> combineResults[合并结果]
    combineResults --> filterCheck{按文件夹过滤?}
    filterCheck -->|是| applyFilter[应用文件夹过滤]
    filterCheck -->|否| returnAll[返回所有书签]
    applyFilter --> returnFiltered[返回过滤后的书签]
    returnEmpty --> endNode[结束]
    returnAll --> endNode
    returnFiltered --> endNode

示例交互与Amazon Q CLI

$ q chat
欢迎来到Amazon Q CLI!

> 保存这篇文章:https://docs.aws.amazon.com/lambda/latest/dg/lambda-urls.html

我将为您分析这篇文章。稍等片刻...

我已经分析了这篇文章,看起来它是关于AWS Lambda函数URL的。
您希望我用以下详情保存它吗?
- 分类:无服务器
- 标签:lambda, api, function-urls, http-endpoints
- 描述:如何创建和配置函数URL以提供Lambda函数的专用HTTP(S)端点的文档。
- 重要性:4(高)

> 是的,这看起来不错

太好了!我已经将文章保存到您的书签中。

> 显示我关于AWS的Chrome书签

我将检查您的Chrome书签中的AWS相关内容。

在您的Chrome用户中发现了12个与AWS相关的书签:
1. AWS管理控制台
   URL: https://console.aws.amazon.com/
   用户:工作/书签栏

2. Amazon EC2文档
   URL: https://docs.aws.amazon.com/ec2/
   用户:工作/AWS文档

[...更多结果...]

您希望我将其中任何一个导入到您的LinkVault收藏中吗?

> 导入第一个到我的AWS分类

我已经将"AWS管理控制台"导入到您的AWS分类中,并带有标签:aws, 控制台, 管理。

MCP工具参考

get_url_data

def get_url_data(url: str) -> Dict[str, Any]:
    """
    从URL获取并提取数据。
    
    参数:
        url: 要获取和分析的URL
        
    返回:
        包含从URL提取的数据的字典
    """

store_url

def store_url(url: str, title: str, category: str, 
              tags: List[str], description: str, 
              importance: int, notes: str = None) -> Dict[str, Any]:
    """
    存储带有AI生成元数据的URL。
    
    参数:
        url: 要存储的URL
        title: 网页标题
        category: 要分配的分类
        tags: 与URL关联的标签列表
        description: 内容的简短描述
        importance: 重要性评分(1-5)
        notes: 关于URL的可选附加笔记或评论
        
    返回:
        表明成功或失败的字典
    """

search_bookmarks

def search_bookmarks(query: str) -> Dict[str, Any]:
    """
    通过查询搜索书签。
    
    参数:
        query: 搜索查询
        
    返回:
        包含搜索结果的字典
    """

list_categories

def list_categories() -> Dict[str, Any]:
    """
    列出所有书签分类。
    
    返回:
        包含所有分类及其数量的字典
    """

list_bookmarks_by_category

def list_bookmarks_by_category(category: str)
    """
    列出特定分类中的所有书签。
    
    参数:
        category: 分类名称
        
    返回:
        包含指定分类中书签的字典
    """

delete_bookmark

def delete_bookmark(url: str, category: str = None) -> Dict[str, Any]:
    """
    从数据库中删除书签。
    
    参数:
        url: 要删除的书签URL
        category: 可选分类,指定要删除哪个书签,如果相同的URL存在于多个分类中
        
    返回:
        表明成功或失败以及有关已删除书签的详细信息的字典
    """

list_chrome_bookmarks

def list_chrome_bookmarks(folder: str = None) -> Dict[str, Any]:
    """
    列出Chrome书签,可选地按文件夹过滤。
    
    参数:
        folder: 可选文件夹路径,用于过滤书签
        
    返回:
        包含Chrome书签的字典
    """

import_chrome_bookmark

def import_chrome_bookmark(url: str, title: str, category: str, 
                          tags: List[str], description: str = "", 
                          importance: int = 3, notes: str = None) -> Dict[str, Any]:
    """
    将Chrome书签导入数据库。
    
    参数:
        url: 要导入的Chrome书签URL
        title: 书签标题
        category: 要分配的分类
        tags: 与URL关联的标签列表
        description: 内容的简短描述
        importance: 重要性评分(1-5)
        notes: 关于URL的可选附加笔记或评论
        
    返回:
        表明成功或失败的字典
    """

数据存储

LinkVault将书签存储在位于~/Documents/github/linkvault-mcp-server/data/bookmarks.db的SQLite数据库中。

开发

要求

  • Python 3.10+
  • pyproject.toml中的依赖项:
    • beautifulsoup4
    • fastapi
    • fastmcp
    • mcp
    • requests

项目结构

linkvault-mcp-server/
├── src/                    # 源代码目录
│   ├── __init__.py         # 包初始化
│   ├── server.py           # MCP服务器实现
│   ├── url_manager.py      # CLI实现
│   └── utils/              # 工具函数
│       ├── __init__.py
│       └── browser_integration.py  # 浏览器集成工具
├── data/                   # 数据库存储
├── main.py                 # 主入口点
├── README.md               # 本文件
├── CHANGELOG.md            # 版本历史
└── pyproject.toml          # 项目依赖项

额外功能

CLI模式

除了与Amazon Q CLI集成之外,LinkVault还提供了独立的CLI界面,用于直接管理书签。

./main.py --mode cli

或者直接:

./src/url_manager.py <命令> [选项]

CLI命令

  • 添加URLadd <url> <分类> [-t 标签] [-n 注释] [--title 自定义标题]
  • 列出分类categories
  • 列出分类中的URLlist <分类>
  • 搜索URLsearch <查询>
  • 列出标签tags
  • 列出具有标签的URLtag <标签>
  • 删除URLdelete <url> [-c 分类]
  • 重命名分类rename <旧名称> <新名称>
  • 删除分类delcat <分类>
  • 列出Chrome书签chrome [-f 文件夹]
  • 导入Chrome书签import <url> <分类> [-t 标签] [--title 标题]

CLI数据存储

CLI模式使用位于~/Documents/github/linkvault-mcp-server/data/url_database.json的JSON文件进行存储。

许可证

MIT许可证