项目简介
“第二大脑AI助手”是一个个人知识管理(PKM)系统,它能够自动索引用户存储在Markdown文件中的笔记,并从中提取PDF文档、YouTube视频、网页等链接内容,将其统一处理并存储在向量数据库中。在此基础上,项目提供了一个MCP服务器,允许其他大型语言模型(LLM)客户端以标准化的方式访问这些个人知识,实现智能问答、文档检索等高级功能。它构建于LangChain框架和ChromaDB向量存储之上,实现了强大的检索增强生成(RAG)能力。
主要功能点
该MCP服务器向LLM客户端提供了以下核心功能:
- 文档语义搜索('search_documents'): 允许通过自然语言查询或元数据过滤器,在个人知识库中进行语义相似性搜索,查找相关的文档片段。例如,可以查询特定类型的文档(如YouTube视频)、特定日期范围内的笔记,或者包含特定内容的文档。
- 文档数量统计('get_document_count'): 统计向量数据库中符合特定筛选条件的文档数量。
- 领域列表获取('get_domains'): 返回所有已识别的文档领域(如“工作”、“个人”、“项目”),方便客户端进行分类查询。
- 近期文档检索('get_recent_documents'): 获取在指定天数内最近访问过的文档列表。
安装步骤
-
克隆仓库:
git clone https://github.com/flepied/second-brain-agent.git cd second-brain-agent -
配置环境变量: 复制示例配置文件并根据您的实际情况进行编辑。您需要设置OpenAI API密钥等必要信息。
cp example.env .env # 编辑 .env 文件,例如设置 OPENAI_API_KEY -
安装依赖: 使用 'poetry' 安装项目依赖。
poetry install如果遇到 'torch' 相关的安装问题,可以单独运行以下命令进行修复:
poetry run pip install torch -
激活虚拟环境: 进入 'poetry' 创建的虚拟环境:
poetry shell
服务器配置(MCP客户端使用)
MCP服务器是为MCP客户端提供服务的后端。MCP客户端在连接时需要知道如何启动和与此MCP服务器通信。以下是一个JSON格式的配置示例,用于指导MCP客户端连接“第二大脑AI助手”MCP服务器。
{ "mcpServers": { "second-brain-agent": { "command": "/path/to/your/second-brain-agent/mcp_server.py", "args": [], "description": "第二大脑AI助手MCP服务器,提供个人知识库的智能检索和上下文服务。", "environment": { "SRCDIR": "/path/to/your/markdown/notes", "DSTDIR": "/path/to/your/.second-brain/data", "SBA_ORG_DOC": "SecondBrainOrganization.md" } } } }
配置信息说明:
- 'server name': 'second-brain-agent' 是该MCP服务器在客户端配置中的唯一标识名称。
- 'command': MCP客户端用于启动MCP服务器进程的命令。请将 '/path/to/your/second-brain-agent/mcp_server.py' 替换为您本地仓库中 'mcp_server.py' 文件的绝对路径。注意: 由于 'mcp_server.py' 是Python脚本,MCP客户端通常会通过 'python /path/to/your/second-brain-agent/mcp_server.py' 或 'poetry run python /path/to/your/second-brain-agent/mcp_server.py' 来执行。实际的启动命令取决于MCP客户端的执行方式,如果客户端可以自行调用 'poetry run python',则 'command' 可以直接指向脚本。如果客户端只接受脚本路径,您可能需要创建一个简单的 'mcp-server.sh' 脚本来包装 'poetry run python mcp_server.py'。
- 'args': 启动 'command' 时需要传递的命令行参数列表。当前 'mcp_server.py' 脚本不接受直接的命令行参数,主要通过环境变量配置,所以此处留空即可。
- 'description': 对该MCP服务器功能的简要描述,供MCP客户端用户参考。
- 'environment': 用于设置MCP服务器进程所需的环境变量。
- 'SRCDIR': 指向您的Markdown笔记所在的目录(例如,Obsidian笔记目录)。
- 'DSTDIR': 指向“第二大脑”处理后的数据存储目录(例如,向量数据库和中间文件)。
- 'SBA_ORG_DOC': 组织文档的名称,用于定义文档领域映射。
基本使用方法
作为MCP客户端用户,您可以利用上述配置与“第二大脑AI助手”MCP服务器进行交互。以下是概念性的使用方式:
- 准备数据: 确保您的Markdown笔记文件已在 'SRCDIR' 目录中,并通过运行 'transform_md.py' 和 'transform_txt.py' 脚本(通常通过 'systemd' 服务自动运行)将内容处理并存储到向量数据库。
- 手动处理Markdown文件:'poetry run python transform_md.py /path/to/your/markdown/notes /path/to/your/.second-brain/data'
- 手动处理文本块并存储到向量数据库:'poetry run python transform_txt.py /path/to/your/.second-brain/data/Text /path/to/your/.second-brain/data'
- 启动MCP服务器: 确保MCP服务器正在运行。MCP客户端会根据您提供的 'command' 自动启动或连接到服务器。
- 通过MCP客户端调用工具:
- 语义搜索: 您可以通过MCP客户端调用 'search_documents' 工具,并提供查询文本和筛选条件,例如:“搜索关于Python编程的文档,仅限工作领域”。
- 统计文档: 调用 'get_document_count' 工具,并可以指定元数据过滤器,例如:“统计个人领域中YouTube视频的数量”。
- 获取领域: 调用 'get_domains' 工具以了解所有可用的文档分类领域。
- 查找近期文档: 调用 'get_recent_documents' 工具,例如:“获取过去7天内访问过的所有文档”。
MCP客户端将负责将您的请求转换为JSON-RPC格式发送给服务器,并解析服务器返回的JSON-RPC响应,然后可以利用这些信息为LLM提供上下文或执行进一步的操作。
信息
分类
AI与计算