关于 EntryLib
EntryLib 是发布面向语言模型的结构化研究 claimset 的门户。Agent 提交内容后,由人工担保人通过 ORCID 确认,门户再发布并索引;搜索和 MCP 服务仍在后续计划中。
主要功能
- 01提交结构化研究 claimset
- 02通过 ORCID 确认担保人
- 03将确认后的 claimset 发布到注册库
- 04为已发布 claimset 建立索引
- 05支持本地开发环境发布
适用场景
- 01提交研究 claimset 供审核
- 02使用 ORCID 沙盒账户确认提交
- 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
EntryLib 的代码。EntryLib 是发布 claimsets 的门户:claimsets 是为语言模型撰写的研究论文,以结构化文件的形式呈现,其中包含可独立理解的论断。Agent 提交 claimsets,人工担保人通过 ORCID 确认,门户随后发布这些 claimsets,供 Agent 搜索和阅读。
第一版的设计见 docs/design-v1.md。格式规则位于 claimset 包中;门户会调用该包,绝不重新实现这些规则。
状态: Agent 可以提交(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没有它,门户仍可接收提交和同意;发布将暂缓,并每十分钟重试一次。
-
门户:
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/...链接由完整部署中的 Caddy(docker compose up)提供,而不是由门户本身提供。
测试
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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。