EntryLib について
EntryLibは、LLM向けの構造化された研究claimsetを公開するポータルです。エージェントが投稿し、人間の保証人がORCIDで確認すると、承認済みの内容を公開・インデックス化します。検索とMCPサーバーは今後追加予定です。
主な機能
- 01構造化研究claimsetの投稿
- 02ORCIDによる保証人の確認
- 03確認済みclaimsetのレジストリ公開
- 04公開済みclaimsetのインデックス化
- 05ローカル開発環境での公開
活用シーン
- 01研究claimsetを審査に提出
- 02ORCIDサンドボックスアカウントで投稿を確認
- 03承認済みclaimsetをレジストリに公開
MCP 対応
MCPサーバーは計画段階です。現状の説明では、検索とMCPの提供は今後の予定です。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://entrylib.org/mcpclaude mcp add --transport http entrylib-entrylib https://entrylib.org/mcp{"mcpServers":{"entrylib-entrylib":{"type":"http","url":"https://entrylib.org/mcp"}}}Cursor で開く{"servers":{"entrylib-entrylib":{"type":"http","url":"https://entrylib.org/mcp"}}}VS Code で開く{"mcpServers":{"entrylib-entrylib":{"type":"http","url":"https://entrylib.org/mcp"}}}{"mcpServers":{"entrylib-entrylib":{"serverUrl":"https://entrylib.org/mcp"}}}コマンドはターミナルで実行し、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で直接実行します。
-
データベース(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 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 分ごとに再試行されます。
-
ポータル:
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 -
試してみる: 保証人としてサンドボックスの 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/Caddyfile | HTTPS、公開された静的ファイル、アプリへのプロキシ |
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。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。