内容
# LinkVault MCP Server
一个用于扩展 Amazon Q CLI 的工具,具备 AI 辅助的书签管理功能。
<p align="center">
<img src="./img/logo.png" alt="LinkVault Logo" width="100%">
</p>
## 概述
LinkVault 是一个 MCP(模型上下文协议)服务器,集成了 Amazon Q CLI,通过自然语言提供智能书签管理。它允许您在终端中使用对话命令访问、组织和搜索书签。
## 主要特性
- **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 配置:
```json
"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 的书签管理功能:
```mermaid
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 工作流程
```mermaid
sequenceDiagram
participant User
participant AQ as Amazon Q CLI
participant MCP as LinkVault MCP 服务器
participant Web as 网页
participant DB as SQLite 数据库
participant Chrome as Chrome 书签
User->>AQ: "保存这篇文章: https://example.com"
AQ->>MCP: get_url_data(url)
MCP->>Web: 获取内容
Web-->>MCP: HTML 内容
MCP-->>AQ: URL 元数据
AQ->>User: "我找到了关于 X 的文章。要保存吗?"
User->>AQ: "是的,保存"
AQ->>MCP: store_url(metadata)
MCP->>DB: 存储书签
DB-->>MCP: 成功
MCP-->>AQ: 成功响应
AQ->>User: "书签已保存!"
User->>AQ: "显示我的 Chrome 书签"
AQ->>MCP: list_chrome_bookmarks()
MCP->>Chrome: 读取书签
Chrome-->>MCP: 书签数据
MCP-->>AQ: Chrome 书签
AQ->>User: "这是您的 Chrome 书签..."
```
## 浏览器集成
LinkVault 可以访问您系统上所有 Chrome 用户的书签:
```mermaid
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 以提供专用 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, console, management。
```
## MCP 工具参考
### get_url_data
```python
def get_url_data(url: str) -> Dict[str, Any]:
"""
从 URL 获取并提取数据。
参数:
url: 要获取和分析的 URL
返回:
包含从 URL 提取的数据的字典
"""
```
### store_url
```python
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
```python
def search_bookmarks(query: str) -> Dict[str, Any]:
"""
按查询搜索书签。
参数:
query: 搜索查询
返回:
包含搜索结果的字典
"""
```
### list_categories
```python
def list_categories() -> Dict[str, Any]:
"""
列出所有书签类别。
返回:
包含所有类别及其计数的字典
"""
```
### list_bookmarks_by_category
```python
def list_bookmarks_by_category(category: str) -> Dict[str, Any]:
"""
列出特定类别中的所有书签。
参数:
category: 类别名称
返回:
包含指定类别中书签的字典
"""
```
### delete_bookmark
```python
def delete_bookmark(url: str, category: str = None) -> Dict[str, Any]:
"""
从数据库中删除书签。
参数:
url: 要删除的书签的 URL
category: 可选类别,用于指定如果同一 URL 在多个类别中存在时要删除哪个书签
返回:
指示成功或失败及已删除书签详细信息的字典
"""
```
### list_chrome_bookmarks
```python
def list_chrome_bookmarks(folder: str = None) -> Dict[str, Any]:
"""
列出 Chrome 书签,可按文件夹过滤。
参数:
folder: 可选的文件夹路径以过滤书签
返回:
包含 Chrome 书签的字典
"""
```
### import_chrome_bookmark
```python
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 的 MCP 集成外,LinkVault 还提供独立的 CLI 接口以进行直接的书签管理。
```
./main.py --mode cli
```
或直接:
```
./src/url_manager.py <command> [options]
```
#### CLI 命令
- **添加 URL**: `add <url> <category> [-t tags] [-n notes] [--title custom_title]`
- **列出类别**: `categories`
- **列出类别中的 URL**: `list <category>`
- **搜索 URL**: `search <query>`
- **列出标签**: `tags`
- **列出带标签的 URL**: `tag <tag>`
- **删除 URL**: `delete <url> [-c category]`
- **重命名类别**: `rename <old_name> <new_name>`
- **删除类别**: `delcat <category>`
- **列出 Chrome 书签**: `chrome [-f folder]`
- **导入 Chrome 书签**: `import <url> <category> [-t tags] [--title title]`
### CLI 数据存储
CLI 模式使用 JSON 文件进行存储,路径为 `~/Documents/github/linkvault-mcp-server/data/url_database.json`
## 许可证
MIT 许可证
连接信息
猜你喜欢
暂无推荐服务器