mcpField
U
Universal Source Management System

Universal Source Management System

ローカル
github.com/YUZongminデータベース1933 週間前に更新

Universal Source Management System について

Universal Source Management System は、文献、ノート、エンティティリンク、リーディングリストをローカルの SQLite データベースで管理する軽量な FastMCP サーバーです。論文、書籍、Web ページなどを整理する研究者に向けられており、識別子を正規化して保存します。

主な機能

  1. 01ローカル SQLite によるソース管理
  2. 02ソースに紐づくノート
  3. 03ソースと概念のエンティティリンク
  4. 04読み取り専用のデータベース確認ツール
  5. 05識別子検索とリーディングリストのリソース
  6. 06重複検出付きの一括インポート

活用シーン

  1. 01論文や書籍の文献リストの整理
  2. 02DOI や arXiv 識別子によるソース検索
  3. 03ソースと概念の関係の記録

MCP 対応

本プロジェクトは MCP サーバーであり、ソース管理ツールと source://、reading-list://、entity:// のリソースを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sqlite-literature-management-fastmcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Universal Source Management System

ローカルの SQLite データベースで、文献、メモ、エンティティリンク、読書リストのリソースを管理する軽量な FastMCP サーバーです。

現在の対象範囲

このリポジトリでは、以下を提供します。

  • ローカルの SQLite を基盤とする文献管理
  • 文献に紐づくメモ
  • 文献と名前付き概念の間のエンティティリンク
  • 読み取り専用のデータベース検査ツール
  • 文献検索と読書リスト用の MCP リソース
  • 移行期間中の JSON キャッシュを併用した正規化識別子の保存

MCP Memory Server や外部のメモリーグラフとの連携には対応していません。

クイックスタート

  1. 現在のスキーマからデータベースを作成します。
sqlite3 sources.db < create_sources_db.sql
  1. データベースのパスを指定して FastMCP サーバーをインストールします。
fastmcp install sqlite-paper-fastmcp-server.py --name "Source Manager" -e SQLITE_DB_PATH=/path/to/sources.db
  1. 任意:チェックイン済みのデモ用フィクスチャ examples/sources.db を使用します。

Docker

このサーバーは、コンテナ化された stdio MCP サーバーとしてパッケージ化できます。

イメージをビルドします。

docker build -t sqlite-lit-mcp .

永続的な SQLite ボリュームを使用して実行します。

mkdir -p data
docker run --rm -i \
  -e SQLITE_DB_PATH=/data/sources.db \
  -v "$(pwd)/data:/data" \
  sqlite-lit-mcp

注意:

  • イメージでは、SQLITE_DB_PATH のデフォルト値が /data/sources.db に設定されています。
  • データベースファイルが存在しない場合、コンテナは create_sources_db.sql からデータベースを初期化します。
  • 古いデータベースをマウントする場合は、サーバーを起動する前に migrations/ にある必要なマイグレーションを適用してください。
  • このリポジトリは stdio MCP サーバーとして動作するため、デフォルトでは公開する HTTP ポートはありません。

Docker Compose を使用する場合:

docker compose run --rm sqlite-lit-mcp

現在のツール一覧

実装済みのツール:

  • read_query
  • list_tables
  • describe_table
  • get_table_stats
  • get_database_info
  • vacuum_database
  • add_sources
  • add_notes
  • update_status
  • add_identifiers
  • link_to_entities
  • get_source_entities
  • update_entity_links
  • remove_entity_links
  • get_entity_sources

実装済みのリソース:

  • source://<id>
  • source://by-identifier/<type>/<value>
  • reading-list://unread
  • reading-list://reading
  • entity://<entity_name>

スキーマに関する注意

現在のスキーマは、次の4つのテーブルを中心に構成されています。

  • sources
  • source_identifiers
  • source_notes
  • source_entity_links

sources.identifiers は移行期間中の JSON キャッシュとして引き続き保持されますが、識別子の検索には source_identifiers を使用するようになりました。

対応している識別子の種類:

  • semantic_scholar
  • doi
  • arxiv
  • openalex
  • pmid
  • isbn
  • url

対応しているエンティティ関係の種類:

  • discusses
  • introduces
  • extends
  • evaluates
  • applies
  • critiques
  • supports
  • contradicts
  • refutes

軽量な出所情報のフィールドは sources にあります。

  • provider
  • discovered_via
  • discovered_at

スキーマでは現在、PRAGMA user_version = 3 を使用しています。

マイグレーション

バージョン0またはバージョン1のデータベースがある場合は、次を適用してください。

sqlite3 /path/to/sources.db < migrations/2026-03-09__normalize-identifiers.sql
sqlite3 /path/to/sources.db < migrations/2026-03-09__expand-entity-relation-types.sql

すでにバージョン2にマイグレーション済みの場合は、次を適用してください。

sqlite3 /path/to/sources.db < migrations/2026-03-09__expand-entity-relation-types.sql

これらのマイグレーションでは、以下を行います。

  • source_identifiers を追加します
  • 従来の JSON 列から識別子の行をバックフィルします
  • 出所情報のフィールドを追加します
  • source_entity_links.relation_type に supports、contradicts、refutes を追加します
  • PRAGMA user_version を 3 に更新します

サーバーは接続時に PRAGMA user_version を確認し、マイグレーションされるまで古いデータベースを拒否します。

パッケージ構成

実装は sqlite_lit_server/ 以下に整理されています。

  • app.py は FastMCP インスタンスを作成し、ツールとリソースを登録します
  • db.py は接続のセットアップとスキーマバージョンの確認を担当します
  • repository.py は SQL を多用する検索ロジックをデータレイヤーの近くに配置します
  • tools_admin.py、tools_sources.py、tools_entities.py は MCP ツールを格納します
  • resources.py は MCP リソースを定義します

sqlite-paper-fastmcp-server.py は、薄い互換性シムとして残されています。

ソースの一括インポート

add_sources は、新しいソースを一括インポートするためのエントリーポイントです。sources という名前の引数を 1 つ受け取り、各項目は次の形式です。

[title, source_type, identifier_type, identifier_value, initial_note]

initial_note は null、または title と content の両方を含むオブジェクトである必要があります。

サポートされている source_type の値:

  • paper
  • webpage
  • book
  • video
  • blog

サポートされている identifier_type の値:

  • semantic_scholar
  • doi
  • arxiv
  • openalex
  • pmid
  • isbn
  • url

重複の処理:

  • 識別子が完全に一致する場合は、既存のソースのペイロードとともに Source already exists を返します。
  • タイトルに基づくあいまい一致の場合は、Potential duplicates found. Please verify or use add_identifiers if these are the same source. を返します。
  • 一括書き込みが成功すると、リクエストと同じ順序で、入力項目ごとに 1 つの結果を返します。

MCP/JSON ペイロードの例:

{
  "sources": [
    [
      "Attention Is All You Need",
      "paper",
      "arxiv",
      "1706.03762",
      {
        "title": "Initial thoughts",
        "content": "Transformers start here."
      }
    ],
    [
      "OpenAlex Import",
      "paper",
      "openalex",
      "W1234567890",
      null
    ]
  ]
}

Python 呼び出しの例:

add_sources([
    (
        "Attention Is All You Need",
        "paper",
        "arxiv",
        "1706.03762",
        {
            "title": "Initial thoughts",
            "content": "Transformers start here.",
        },
    ),
    (
        "OpenAlex Import",
        "paper",
        "openalex",
        "W1234567890",
        None,
    ),
])

サーバーをローカルで起動する場合も、Docker で docker compose run --rm sqlite-lit-mcp を使って起動する場合も、同じツールのペイロードを使用できます。

一括書き込みの規約

複数形の書き込みツールはリストを受け取り、入力と同じ順序で入力項目ごとの結果リストを返します。関連する一括処理ツールは次のとおりです。

  • add_notes
  • add_identifiers
  • update_status
  • link_to_entities

使用例

別の識別子を追加する:

add_identifiers([
    (
        "Attention Is All You Need",
        "paper",
        "arxiv",
        "1706.03762",
        "semantic_scholar",
        "204e3073870fae3d05bcbc2f6a8e263d9b72e776",
    ),
])

ソースのリソースを読み取る:

source://by-identifier/arxiv/1706.03762

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。