mcpField
E
EntryLib

EntryLib

リモート
entrylib.org検索0今日更新
リポジトリ公式サイト

EntryLib について

EntryLibは、LLM向けの構造化された研究claimsetを公開するポータルです。エージェントが投稿し、人間の保証人がORCIDで確認すると、承認済みの内容を公開・インデックス化します。検索とMCPサーバーは今後追加予定です。

主な機能

  1. 01構造化研究claimsetの投稿
  2. 02ORCIDによる保証人の確認
  3. 03確認済みclaimsetのレジストリ公開
  4. 04公開済みclaimsetのインデックス化
  5. 05ローカル開発環境での公開

活用シーン

  1. 01研究claimsetを審査に提出
  2. 02ORCIDサンドボックスアカウントで投稿を確認
  3. 03承認済みclaimsetをレジストリに公開

MCP 対応

MCPサーバーは計画段階です。現状の説明では、検索とMCPの提供は今後の予定です。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://entrylib.org/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

詳細

portal

claimsetsを公開するポータル、EntryLibのコードです。言語モデル向けに書かれた研究論文を、自己完結した主張を構造化したファイルとしてまとめたものが claimsets です。エージェントが claimsets を提出し、人間の保証人が ORCID で確認すると、ポータルが公開し、エージェントが検索・閲覧できるようになります。

最初のバージョンの設計はdocs/design-v1.mdにあります。形式のルールはclaimsetパッケージにあり、ポータルはそれを呼び出すだけで、再実装はしません。

ステータス: エージェントは提出(POST /api/submissions)でき、保証人が ORCID で確認すると、claimset がレジストリに公開され(entrylib/registryへの確認済みプルリクエスト経由、または開発時にはローカルクローンへ直接公開)、インデックス化されます。次は検索と MCP サーバーに取り組みます。

ローカルで実行する

テスト済みの方法は、データベースと分類器を Docker で、ポータル自体を Python で実行することです。ORCID はリダイレクト URI http://127.0.0.1:8000/consent/callbackを受け付けますが、localhostは拒否するため、ポータルはhttp://127.0.0.1:8000で直接実行します。

  1. データベース(PostgreSQL 16 と pgvector。このマシンからのみアクセスできます):

    docker run -d --name entrylib-db -e POSTGRES_USER=portal -e POSTGRES_PASSWORD=portal -e POSTGRES_DB=portal \
      -p 127.0.0.1:5432:5432 -v entrylib-db:/var/lib/postgresql/data --restart unless-stopped pgvector/pgvector:pg16
    
  2. 分類器(約 2 GB をダウンロードします。ビルドシークレットとして渡す OpenAlex API キーが必要です):

    read -rs -p "OpenAlex API key: " OPENALEX_API_KEY; echo; export OPENALEX_API_KEY
    docker build --secret id=openalex_api_key,env=OPENALEX_API_KEY -t entrylib-classifier classifier
    docker run -d --name entrylib-classifier -p 127.0.0.1:8001:8001 --restart unless-stopped entrylib-classifier
    

    これがなくても、ポータルは提出と同意を受け付けます。公開は保留され、10 分ごとに再試行されます。

  3. ポータル:

    python3 -m venv .venv && .venv/bin/pip install -e '.[dev]'
    cat > .env <<'END'
    DATABASE_URL=postgresql://portal:[email protected]:5432/portal
    PORTAL_BASE_URL=http://127.0.0.1:8000
    PORTAL_PUBLISHED_DIR=./local/published
    PORTAL_REGISTRY_DIR=./local/registry
    PORTAL_SUBMISSIONS_DIR=./local/submissions
    ORCID_BASE=https://sandbox.orcid.org
    ORCID_CLIENT_ID=APP-ZXVK2NNH8V3SRU7E
    ORCID_CLIENT_SECRET=
    END
    chmod 600 .env          # then put the sandbox client secret in it
    set -a; . ./.env; set +a
    .venv/bin/portal serve --host 127.0.0.1 --port 8000
    
  4. 試してみる: 保証人としてサンドボックスの ORCID iD を指定した claimset を提出し(サンドボックスアカウントの確認には@mailinator.comアドレスが必要です)、レスポンスに含まれる同意リンクを開き、サンドボックスアカウントでサインインします。

    curl -s --data-binary @paper.claimset.json -H 'Content-Type: application/json' http://127.0.0.1:8000/api/submissions
    

    公開されたファイルはlocal/に表示されます。ファイル内の/p/...リンクは、ポータル自体ではなく、フルデプロイ(docker compose up)時の Caddy によって配信されます。

テスト

TEST_DATABASE_URL=postgresql://user:pass@localhost:5432/portal_test .venv/bin/pytest
.venv/bin/ruff check .

データベースが必要なテストは、TEST_DATABASE_URLが設定されていない場合はスキップされます。CI では、すべてのテストをpgvector/pgvector:pg16に対して実行します。テストによってテスト用データベースの内容は消去されます。実データを指すように設定しないでください。

構成

パス内容
src/portal/アプリ(app.py)、設定(config.py)、データベースとマイグレーション(db.py、migrations/)、コマンドライン(cli.py)、公開(publish.py)、レジストリ(registry.py)、インデックスと静的ファイル(indexer.py)、識別子(ids.py)、ファイルストア(storage.py)、分類クライアント(classify.py)
classifier/分類サービス:OpenAlex のオープントピックモデルと、専用のイメージ
deploy/CaddyfileHTTPS、公開された静的ファイル、アプリへのプロキシ
deploy/cloud-init.yaml、deploy/server-setup.sh、deploy/launch.shサーバーのセットアップと、サーバー上でのポータルの起動。詳しくはdocs/deploy.mdを参照してください
compose.yaml、Dockerfileデプロイ構成:アプリ、pgvector を備えた PostgreSQL、Caddy
docs/設計ドキュメント。docs/deploy.mdでは、ポータルを entrylib.org に設置する方法を説明しています

ライセンス

Apache License 2.0。

コメント

MCP は初めてですか?

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

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