scientific-figure-library
v0.8.1
Published
Local image-code knowledge library with native macOS and local Web clients, plus MCP and Skill for Pi, DeepSeek Harness (dsh), Claude, Codex, Cursor, and Wisp.
Maintainers
Readme
Scientific Figure Library
Website · English · 快速开始 · 用户手册(在线) · 协议说明 · Releases
Scientific Figure Library(SFL)是本机优先的 MCP 服务和 MCP App:把你自己的 科学图和代码收入本机一份全局 Library,审阅后发布成不可变 Release,再在 Claude Science、Wisp Science、Codex、Cursor、Pi、dsh 等宿主里跨项目复用。
图库目录由你指定,不会悄悄写进当前项目。服务器不执行绘图代码。默认检索顺序为
Local Published → FigureYa → Open Figure Modules → 已启用的动态个人 Provider。
Community 代码和旧资产保留用于显式兼容访问,但已冻结,且不再参与默认搜索
(includeInDefaultSearch: false)。你自己的图形仍以 Local Published 为权威。
本地客户端预览版
提供 macOS 原生 Apple Silicon / Intel 独立 DMG,以及内置 Node 的 Windows 与 Linux ZIP。均提供内置 Node 与使用本机 Node.js 22+ 的 no-node 版;图库预览按需下载。安装方式和签名限制见
本地客户端安装说明。macOS 预览版尚未经过 Developer ID 签名和 Apple 公证。
安装
从 https://github.com/xuzhougeng/ScientificFigureLibrary 安装。按
docs/QUICKSTART.md。需要 Node.js 22+。stdio MCP 名称 figure-library,
入口 dist/index.js。Wisp Science 用 npm run package:wisp 后安装插件。Cursor 用 npm run package:cursor,解压到 ~/.cursor/plugins/local/figure-library/。Pi:pi install npm:pi-mcp-adapter 后 pi install npm:scientific-figure-library。dsh:dsh plugin --profile web add scientific-figure-library。
先绑定本机全局绘图仓库(Library)和本地工作区。不要运行用户绘图脚本。完整工具契约见 docs/PROTOCOL.md。
模板说明与内置 Skills
Wisp、Codex、Claude、Cursor 插件以及 Pi / dsh 使用的 npm 包均分发一个核心 figure-library Skill,描述、代码组织和
风格指导作为按需资料。普通 MCP 宿主可用 figure_library_get_skill 读取同源指导,
用 figure_library_get_candidate_images 或资源 URI 获取候选缩略图,再通过
figure_library_search_page 翻页;MCP App 为可选界面。复刻默认保持
参考模板的风格;真正绘图仍需要项目批准的 R/Python 环境和宿主执行/看图工具。
详情页以安全 Markdown 渲染需求描述、应用场景和数据特征,实际输入文件、代码文件、 依赖包默认可见;技术与验证信息保留在折叠区。旧模板只做兼容读取,不批量重写。 缺少论文背景时不会自动补造生物学结论。
开发验证
本地使用 Node.js 22+,执行 npm ci 和 npm run check。
PR 的基础 CI 覆盖 Linux、Windows、macOS 上的测试、类型检查、构建和 MCP smoke。
检查矩阵与合并门禁配置见 基础 CI。
推送稳定标签 vX.Y.Z 会打包本地客户端、宿主插件、npm 包和 Wisp 更新 feed,并上传到 GitHub Release。
维护者也可配置 AI 评论 bot,手动生成 Issue 回复建议和 PR 审查评论。
许可证
本仓库代码 MIT。用户导入的图保留导入时记录的许可证。
Open Figure Modules
个人模块使用一个内容仓库同时保存清洗后的模块源码和确定性 ZIP,不再拆分第二个 归档仓库:
<PERSONAL_MODULE_REPOSITORY>
├── modules/<moduleId>/ # 审核后的公开清洗模块
├── archives/<moduleId>.zip # 从固定 source commit 生成的 ZIP
└── catalog/ # 归档清单和准入记录SFL 插件仍内置 assets/personal-modules/ 作为离线 bootstrap Catalog、预览/缩略图和许可说明。安装带更新器的版本后,SFL 会在 MCP 进程运行时异步检查个人仓 open-figure-feed 上的 signed feed;验证成功后原子切换本地 overlay。普通模板新增/更新/撤下不再需要重新打包插件。插件不包含完整 ZIP、Gallery 源图、私有数据、凭证或签名私钥。搜索不等待网络;figure_library_list_provider_sources 保持离线。官方 channel 只允许 configure autoRefresh 和显式 update,不允许 add/remove/trust_reset。
运行时的完整 Open Figure Modules 不放进插件,而是保存在已经绑定的全局 Library 下:
source-packs/open-modules/。固定版本 archive 完整校验成功后会自动持久化,并保留
ZIP 和解压后的模板缓存。GitHub 仓库与固定 commit 仍是 canonical 身份;Gitee
镜像已随插件内置为默认国内下载加速来源,失败时回退 GitHub;用户仍可通过本地
override 覆盖传输顺序,但不能改变 canonical 身份。Local Published 仍直接读取全局
Library 的 store/,不会使用这个 Source Pack,也不会因为 Gitee 镜像而改变。
FigureYa 也遵循同样的写穿缓存规则,保存在并列的
source-packs/figureya/:固定 archive 校验成功后保留 ZIP,更新
figureya-source-pack.manifest.json,并写入派生的 templates/ 缓存。搜索和预览仍然只读,
只有获批的 Materialize Apply 才会执行这个持久化动作。
维护命令是离线的,并且不会创建仓库、commit、push、运行 R、安装依赖或修改
Gallery:
npm run modules:validate -- --check --repository <PERSONAL_MODULE_REPOSITORY>
npm run modules:archive -- --write --repository <PERSONAL_MODULE_REPOSITORY>
npm run modules:catalog -- --write --repository <PERSONAL_MODULE_REPOSITORY>
npm run modules:source-pack -- --write --repository <PERSONAL_MODULE_REPOSITORY>SFL materialize 只读取或下载用户选中的固定 ZIP,校验字节和安全路径,按
template/full 选择文件并写入锁;codeExecutedBySflClient 始终为 false。
