返回市场
文献记忆服务器FastMCP-MCP

文献记忆服务器FastMCP-MCP

作者:zongmin-yu3 星标更新:2024-12-27

项目介绍

正在进行中

一个灵活的系统,用于管理各种类型的来源(论文、书籍、网页等),并将其与知识图谱集成。

功能

核心功能

  • 使用内部UUID系统进行通用来源识别
  • 支持多种来源类型(论文、网页、书籍、视频、博客)
  • 每个来源支持多个标识符(arxiv、DOI、语义学者、ISBN、URL)
  • 结构化的笔记记录,包括标题和内容
  • 状态跟踪(未读、正在阅读、已完成、已归档)

实体集成

  • 将来源链接到知识图谱实体
  • 跟踪来源与实体之间的关系
  • 灵活的关系类型(讨论、介绍、扩展等)
  • 与记忆图谱集成

预备条件

该系统与MCP记忆服务器集成,用于持久化存储知识图谱。

快速开始

  1. 使用我们的模式创建一个新的SQLite数据库:
# 创建一个新的数据库
sqlite3 sources.db < create_sources_db.sql
  1. 安装来源管理服务器:
# 使用您的数据库路径为Claude Desktop安装
fastmcp install source-manager-server.py --name "Source Manager" -e SQLITE_DB_PATH=/path/to/sources.db

数据库模式

核心表

-- 来源表
CREATE TABLE sources (
    id UUID PRIMARY KEY,
    title TEXT NOT NULL,
    type TEXT CHECK(type IN ('paper', 'webpage', 'book', 'video', 'blog')) NOT NULL,
    identifiers JSONB NOT NULL,
    status TEXT CHECK(status IN ('unread', 'reading', 'completed', 'archived')) DEFAULT 'unread'
);

-- 来源笔记
CREATE TABLE source_notes (
    source_id UUID REFERENCES sources(id),
    note_title TEXT NOT NULL,
    content TEXT NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (source_id, note_title)
);

-- 实体链接
CREATE TABLE source_entity_links (
    source_id UUID REFERENCES sources(id),
    entity_name TEXT,
    relation_type TEXT CHECK(relation_type IN ('discusses', 'introduces', 'extends', 'evaluates', 'applies', 'critiques')),
    notes TEXT,
    PRIMARY KEY (source_id, entity_name)
);

使用示例

1. 管理来源

添加具有多个标识符的论文:

add_source(
    title="Attention Is All You Need",
    type="paper",
    identifier_type="arxiv",
    identifier_value="1706.03762",
    initial_note={
        "title": "初始想法",
        "content": "开创性的论文介绍了变压器..."
    }
)

# 向同一论文添加另一个标识符
add_identifier(
    title="Attention Is All You Need",
    type="paper",
    current_identifier_type="arxiv",
    current_identifier_value="1706.03762",
    new_identifier_type="semantic_scholar",
    new_identifier_value="204e3073870fae3d05bcbc2f6a8e263d9b72e776"
)

添加网页:

add_source(
    title="理解变压器",
    type="webpage",
    identifier_type="url",
    identifier_value="https://example.com/transformers",
)

2. 笔记记录

向来源添加笔记:

add_note(
    title="Attention Is All You Need",
    type="paper",
    identifier_type="arxiv",
    identifier_value="1706.03762",
    note_title="实现细节",
    note_content="论文描述了架构..."
)

3. 实体链接

将来源链接到实体:

link_to_entity(
    title="Attention Is All You Need",
    type="paper",
    identifier_type="arxiv",
    identifier_value="1706.03762",
    entity_name="transformer",
    relation_type="introduces",
    notes="首次介绍变压器架构的论文"
)

按实体查询来源:

get_entity_sources(
    entity_name="transformer",
    type_filter="paper",
    relation_filter="discusses"
)

最佳实践

  1. 来源管理

    • 在引用中使用一致的标题
    • 提供尽可能多的标识符
    • 保持笔记结构清晰,标题明确
    • 使用适当的来源类型
  2. 实体链接

    • 对关系类型具体明确
    • 添加关系的上下文注释
    • 验证实体名称与记忆图谱
    • 保持实体关系聚焦

技术细节

  1. 来源识别

    • 内部UUID系统用于一致引用
    • 每个来源支持多个外部标识符
    • 灵活的标识符类型(arxiv、doi、url等)
    • 基于标题和类型的模糊匹配
  2. 数据组织

    • 具有标题的结构化笔记
    • 清晰的来源类型分类
    • 实体关系跟踪
    • 状态管理

贡献

  1. 分叉仓库
  2. 创建功能分支
  3. 为新功能添加测试
  4. 提交拉取请求