sci-forge
Provides search and retrieval of arXiv preprints through the science data connectors, enabling literature discovery and metadata lookup.
Provides search and access to PubMed biomedical literature records through the science data connectors.
Provides search and retrieval of datasets and research outputs from Zenodo through the science data connectors.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@sci-forgeReproduce the paper at /tmp/paper.pdf and export the results to a PDF."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
sci-forge
一条 MCP,从「构思」到「论文交付」的全流程科研工作台
English · 安装 · 快速开始 · MCP 工具清单 · 学科体系 · 科学数据连接器 · 贡献指南 · 行为准则 · 安全策略 · 变更日志
这是什么
sci-forge 是一个完全本地自建的 Model Context Protocol server,把「读一篇论文」到「交出一篇可投稿论文」之间的整段路,压缩成一组可以被 AI 客户端直接调用的工具。
它不是聊天机器人,不是一段提示词模板,而是一个常驻进程:1538 门学科的论文规范知识、46 个公开科学数据库的直连连接器、五步复现闭环、fail-closed 的完整性与引用核验门,全部以 MCP 工具的形式暴露出来。
价值主张
你要做的事 | sci-forge 提供的 |
复现一篇论文的实验 | 拿到 PDF → 解析 → 抽超参 → 生成 numpy/torch 代码 → 沙箱运行 → 与论文数值比对 → 交付 |
从零写一篇论文 | 学科感知的章节结构模板(按 1538 门学科的 |
找选题、找缺口 | 免 key 的 OpenAlex/arXiv 检索 → 主题侦察 → 聚类 → 研究缺口 → 候选假设 → 实验计划 |
投出去之前自查 | 模拟同行评审(4 维评分)、期刊匹配度评分、修订教练、rebuttal 审计、期刊/会议推荐 |
守住学术诚信底线 | claim→source 核验、参考文献 DOI 批量核验、Stage 2.5 / 4.5 完整性门、Material Passport |
查跨库科学数据 | 46 个连接器、7 大领域,单库检索 / 跨库联查 / 并行批量检索 |
三个设计取向
免 API key 可用。 核心链路(文献检索、DOI 核验、元数据、引文图谱)走 OpenAlex / Crossref 的免鉴权公开接口。LLM 是可选增强:在
.sci-forge/env写入 OpenAI 兼容端点即可启用;未配置时全部功能回退到本地模板,链路不中断。fail-closed 优先。 评审准入门、完整性门、bypass 审批都遵循「证据不足即拒绝」而非「尽量放行」。
声明式学科知识。 学科 registry 全是数据不是逻辑,新增一门学科 = 新增一个
.py文件,无需改动发现机制。
独立自建,仅使用公开材料与公开接口,不附属于、不依赖 SciForge 官方站点或 API,与 SciForge 及其商标无关联。
Related MCP server: research-automation-mcp-server
目录
快速开始
前置条件
Python ≥ 3.10(CI 覆盖 3.11 / 3.12 / 3.13)
一个支持 MCP stdio transport 的客户端(opencode、Claude Code、Cursor 等)
安装
# 方式一:直接从 Git 装(最简)
pip install "git+https://github.com/liudongyan13701205717-source/sci-forge.git"
# 方式二:克隆后以可编辑模式安装(推荐用于开发)
git clone https://github.com/liudongyan13701205717-source/sci-forge.git
cd sci-forge
pip install -e ".[reproduce,dev]"
# 方式三:只要 MCP 本体,不带复现线的数值依赖
pip install -e .extra | 内容 | 何时需要 |
(无) | 仅 | 只想用学科 registry / 连接器 / 写作 / 评审 |
|
| 需要 PDF 解析、复现代码运行、绘图 |
| 目前无硬依赖;装了 LaTeX 引擎( | 需要 PDF 导出 |
|
| 跑测试 |
注册为 MCP server
安装后得到 sci-forge 命令。它以 stdio transport 启动,因此配置里不需要 PYTHONPATH,也不需要指定 cwd:
{
"mcp": {
"sci-forge": {
"type": "local",
"command": ["sci-forge"],
"enabled": true
}
}
}也可以直接用模块入口:command 设为 ["python", "-m", "sciforge"]。
验证安装
sci-forge --version # 打印 sci-forge 0.1.0
sci-forge --help # 显示用法
SCI_FORGE_OFFLINE=1 python -m pytest tests/ -q # 268 个用例应全绿60 秒试一次
在 MCP 客户端的对话里直接说,或手动调用工具:
list_disciplines() # 看看内置了哪些学科
science_list_dbs("literature") # 看看文献域有哪些库
ideate_paper("大语言模型的轻量化可解释方法", "demo") # 选题 → 缺口 → 假设 → 实验计划
write_section("demo", "abstract", "为《边缘设备上的轻量推理》写摘要", "markdown")
export_document("demo", "pdf") # 产出 .sci-forge/projects/demo/doc.pdf更完整的端到端示例见 docs/quickstart.md 与 USAGE.md。
架构
┌─────────────────────────────────────────┐
│ MCP 客户端 (opencode / Claude Code…) │
└───────────────────┬─────────────────────┘
│ stdio (JSON-RPC)
┌───────────────────▼─────────────────────┐
│ sciforge/server.py │
│ FastMCP("sci-forge") │
│ 75 @mcp.tool + 2 @mcp.resource │
└──┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┘
┌────────────────────┘ │ │ │ │ │ │ │ │ └──────────────┐
▼ ▼ │ │ │ │ │ │ ▼ ▼
┌───────────┐ ┌───────────┐ ┌────▼─┐ │ ┌─────▼─┐ │ ┌─────▼──┐ ┌──────────────────┐
│reproduce/ │ │research/ │ │write/ │ │ │export/ │ │ │deliver/│ │ disciplines/ │
│ 五步复现 │ │ 研究线 │ │DocStore│ │ │md→tex │ │ │投稿打包 │ │ 1538 门学科 │
│ 闭环+点评 │ │ 工具集 │ │模板 │ │ │/pdf │ │ │交付清单 │ │ 零注册自动发现 │
└───────────┘ └───────────┘ └───────┘ │ └───────┘ │ └────────┘ └──────────────────┘
│ ┌─────▼──┐
│ │review/ │ 7 席评审面板 + 准入门 + 报告指南
│ └────────┘
│ ┌─────▼──┐
│ │claims/ │ claim→source 核验 + Stage2.5/4.5
│ └────────┘ 完整性门 + Material Passport
│ ┌─────▼──┐
│ │venue/ │ 期刊模板 + journal-fit 匹配
│ └────────┘
│ ┌─────▼──┐
└─│science/│ 46 连接器 / 7 领域 / 5 工具
└────────┘
┌────────────────────────┴────────────────────────┐
│ core/ workspace_root() + Layout(.sci-forge) │
│ + 可选 LLM 连接层(无端点则回退模板) │
└─────────────────────────────────────────────────┘
sciforge/parse/ PDF 解析(PyMuPDF,reproduce 线的前置)
sciforge/__main__.py python -m sciforge
sciforge/cli.py sci-forge 命令入口(stdio / --version / --help)存储布局
运行产物统一落在工作区根目录下的 .sci-forge/(已 gitignore):
.sci-forge/
├── env # 可选 LLM 端点配置(BASE_URL / API_KEY / MODEL),不提交
├── projects/{paper_id}/
│ ├── doc.md / doc.tex / doc.html / doc.pdf
│ ├── sections/ # 分章节中间产物
│ └── research/ # 研究产物 *.json / *.md,供复用与投稿打包
└── tasks/{task_id}/
├── parse/ code/ runs/ # 解析结果 / 生成代码 / 每次运行记录
└── deliverables/ # 图、数据、源码、报告可选增强:LLM
在 .sci-forge/env 写入 OpenAI 兼容端点:
BASE_URL=https://your-endpoint/v1
API_KEY=sk-...
MODEL=...未配置时,ideate_paper / write_section / peer_review / venue_suggest 等工具自动回退到本地模板与规则引擎,全部功能保持可用,只是文本自然度下降。
MCP 工具清单(75 个)
静态
@mcp.tool()装饰器计数 75,运行时mcp.list_tools()计数 75,两者一致。另有 2 个 resource:静态science://databases与参数化模板science://databases/{domain}。 逐个工具的参数签名与行为细节见 docs/mcp-tools.md。
复现线(2)
工具 | 作用 |
| 论文复现五步闭环:解析 PDF → 方案 → 生成代码 → 沙箱运行比对 → 交付物 |
| 查询复现任务异步状态与阶段进度 |
写作线(2)
工具 | 作用 |
| 按章节引导生成论文内容(abstract / problem / modeling / solution / results / references 等) |
| 将已写 doc 导出为 PDF / DOCX(LaTeX 源始终生成) |
研究线(3)
工具 | 作用 |
| 构思选题 → 研究缺口 → 候选假设 → 多视角评审 → 实验计划 |
| 把复现任务的真实实验结果并入论文对应章节 |
| 结果自旋门:PROCEED / REFINE / PIVOT 决策建议 |
科研/论文线(35)
工具 | 作用 |
| 完整研究计划书(RQ / 假设 / 目标 / 贡献 / 方法 / 数据 / 指标 / 里程碑 / 风险) |
| 基于 OpenAlex 免 key 检索生成综述框架(代表文献 / 聚类 / 缺口 / 结构) |
| 从已写正文提炼标题 / 摘要 / 关键词 |
| 模拟同行评审(novelty / rigor / clarity / soundness 4 维评分 + 推荐) |
| 按主题推荐目标期刊 / 会议(内置映射库 + 可选 LLM) |
| 论文质量检查(completeness / consistency / grammar 三模式) |
| 多任务 / 多基线指标对比表 + Welch t / Mann-Whitney U 检验 |
| 检索相似工作,给出重叠与候选差异点 |
| 引文邻域与热度分析(年度分布 / 高被引代表 / 主要载体) |
| 项目进度记账 timeline(note / milestone / status) |
| 复现代码静态点评(随机种子 / 硬编码 / 风险 + 可信度分) |
| 按 DOI 生成 BibTeX 条目 |
| 解析文本中的 DOI / 引用批量转 BibTeX |
| 围绕研究主题推荐论文(可按 sources 过滤) |
| PRISMA 系统综述流程(识别 → 去重 → 筛选 → 资格 → 纳入 → 综合 → 文档) |
| BibTeX → 单一样式(apa / chicago-author-date / chicago-note-bibliography / mla / ieee / vancouver) |
| BibTeX 一次转全部 6 种样式 |
| 评审意见 → 结构化修订路线图(CRITICAL / MAJOR / MINOR) |
| rebuttal 逐条回应审计(fail-closed) |
| 机器文风检测(hedging 密度 + 模板句式 + 空洞连接词 → 0-100 分) |
| 表述强度阶梯(7 级)检测与无授权强度上移标记 |
| 从已有正文学习作者声音画像(9 维) |
| 新文本与作者画像相似度评分(0-100) |
| 核验单个 DOI 真实性(Crossref,免 key) |
| 主张核验:检索证据判定 SUPPORTED / PARTIAL / UNSUPPORTED |
| 批量核验参考文献 DOI,返回 valid / invalid |
| 经 Crossref 取标题 / 作者 / 年份 / 期刊 / 摘要 |
| 经 OpenAlex 取被引数与参考文献 |
| 经 OpenAlex OA 定位并下载开放获取 PDF |
| 主题侦察:多源聚合 + 去重 + 评分排序 |
| 多主题横向对比(按命中数降序) |
| 检索增强问答(本地模板合成,无 LLM 依赖) |
| 仅检索并排序 RAG 来源(按被引降序) |
| 论文找代码 / 数据集(HuggingFace / Zenodo) |
| 主题论文批量关联代码 / 数据集 |
评审与核验线(10,其中 3 个为兼容别名)
工具 | 作用 |
| 多视角同行评审面板(7 席,含 Devil's Advocate + 编辑综合) |
| 评审准入门 fail-closed 校验(授权 / 利益冲突 / 外部服务) |
| 按研究设计选报告指南并做覆盖审计(带日期) |
| claim / evidence 对齐矩阵(ALIGNED / PARTIAL / UNSUPPORTED) |
| claim → source 核验:解析 claims + 引文锚点,输出 gate_refuse |
| 完整性门 Stage 2.5:代码生成 → 执行之间 |
| 完整性门 Stage 4.5:结果 → 论文 / 交付之间 |
| 一次性跑 2.5 + 4.5 两道门 |
| fail-closed bypass:无有效理由即拒绝放行 |
| Material Passport:per-run 产物档案(experiment provenance + claim 审计 + 反面证据) |
兼容别名(功能与上表对应项一致,为旧客户端保留):
别名 | 等价于 |
|
|
|
|
|
|
交付线(2)
工具 | 作用 |
| 列出某任务的交付物清单(图 / 数据 / 源码 / 报告) |
| 投稿材料打包 zip(+ cover letter + checklist) |
科学数据线(5)
工具 | 作用 |
| 列出可用科学数据库,可按 7 大领域筛选 |
| 在指定数据库关键词检索 |
| 按记录 ID 取单条完整记录 |
| 跨多库联合查询同一关键词 |
| 多库并行执行同一查询并汇总 |
期刊匹配与学科(3)
工具 | 作用 |
| 论文与目标期刊 / 会议匹配度评分(领域 / 体裁 / 方法 / 结构 / 合规) |
| 列出全部注册学科( |
| 获取指定学科完整 v2 配置 |
MCP 资源(2)
URI | 类型 | 内容 |
| 静态资源 | 全部 46 个连接器清单 + 7 个领域 |
| 参数化模板 | 单个领域下的连接器清单 |
已知限制
science_fetch名义上覆盖 46 个库,当前仅uniprot实现了fetch回调,其余 45 个库只能通过science_search使用。list_disciplines的domain参数当前被忽略,尚未实现按领域过滤。citation_graph的depth参数当前只展开一层。
学科覆盖概览(1538 门)
sciforge/disciplines/ 内置 1538 门学科的论文支持 registry,采用零注册自动发现:新增学科 = 在该包内新增一个模块文件并声明一个模块级 Discipline 实例(或 Discipline 数据类子类),发现机制会自动收录,无需修改 registry 代码。
门类分布
category 字段取中国学科门类命名,共 14 个取值,精确计数如下:
门类 | 学科数 | 门类 | 学科数 |
理学 | 87 | 军事学 | 5 |
工学 | 56 | 农学 | 4 |
医学 | 30 | 历史学 | 4 |
交叉学科 | 23 | 教育学 | 4 |
法学 | 12 | 经济学 | 3 |
文学 | 11 | 合计 | 1538 |
哲学 | 9 | ||
管理学 | 7 | ||
艺术学 | 6 |
⚠️ 统计口径提示:
list_by_category()使用子串匹配,list_by_category("理学")会一并命中管理学(其字面包含「理学」),返回数大于上表的精确值。做门类统计时请用精确相等,或对结果自行去重。
产出形式
contribution_forms 字段取 10 个固定取值(sciforge/disciplines/contribution_forms.py):
产出形式 | 包含该形式的学科数 | 产出形式 | 学科数 |
论文 | 1538(100%) | 报告 | 27 |
数据集 | 95 | 艺术作品 | 7 |
软件与代码 | 49 | 文学作品 | 5 |
学术专著 | 41 | 译文 | 4 |
专利 | 35 | 教案与教材 | 3 |
形式数量分布:1 种 37 门、2 种 182 门、3 种 42 门;无学科超过 3 种。
优先论文库绑定
databases 字段共 22 个取值,覆盖度呈长尾分布:
数据库 | 学科数 | 数据库 | 学科数 |
OpenAlex | 255 | DOAJ | 11 |
Crossref | 213 | HuggingFace | 6 |
CNKI | 162 | Ensembl | 4 |
arXiv | 94 | ChEMBL | 2 |
万方 | 68 | UniProt | 2 |
PubMed | 63 | ClinVar | 1 |
Semantic Scholar | 58 | Expression Atlas | 1 |
Zenodo | 58 | Human Protein Atlas | 1 |
Europe PMC | 31 | RCSB PDB | 1 |
PubChem | 16 | Reactome | 1 |
GEO | 13 | ||
bioRxiv | 12 |
字段清单
字段 | 类型 | 说明 |
|
| 学科主键,英文小写 snake_case |
|
| 别名与检索关键词(中英文) |
|
| 体裁 → 章节结构 |
|
| 主引用样式 |
|
| 报告规范路由(设计/主题 → 标准名) |
|
| 写作约定(定理环境、符号、图表、术语) |
|
| 代表性顶刊 / 顶会 |
|
| 单位与公式注记 |
|
| 是否以论文为主要产出 |
|
| 产出形式(可多值) |
|
| 该学科用到的软件 / 仪器 / 方法平台 |
|
| 学科门类 |
|
| 优先论文库 / 数据库 |
Python API
from sciforge.disciplines import (
DISCIPLINES, # dict[str, Discipline],键为小写学科名
list_disciplines, # 全部学科,按名排序
get_discipline, # 按名或别名查(大小写不敏感)
list_by_category, # 按门类过滤(子串匹配)
list_by_contribution_form, # 按产出形式过滤
list_by_tool, # 按工具过滤
list_by_database, # 按优先数据库过滤
)
len(DISCIPLINES) # 1538
d = get_discipline("machine_learning")
d.contribution_forms # ('论文', '软件与代码', '数据集')
list_by_contribution_form("专利") # 可产出专利的学科
list_by_tool("PyTorch") # 绑定 PyTorch 的学科
list_by_database("PubMed") # 优先 PubMed 的学科字段级细节与扩编指引见 docs/disciplines.md。
科学数据连接器(46 个)
sciforge/science/ 通过 46 个连接器覆盖 7 个领域的公开科学数据库,均以公开接口访问;其中 3 个可选地读取环境变量以启用额外能力。
领域 | 数量 | 连接器 id |
| 12 |
|
| 6 |
|
| 6 |
|
| 7 |
|
| 5 |
|
| 6 |
|
| 4 |
|
合计 | 46 |
可选环境变量
变量 | 影响的连接器 | 未配置时 |
|
| 返回空结果,不报错 |
|
| 返回空结果,不报错 |
|
| 返回空结果,不报错 |
| 全部 | 强制离线,测试与 CI 使用 |
逐个连接器的检索端点、返回字段与已知缺口见 docs/connectors.md。
与桌面版的关系(双仓)
本仓库 sci-forge 是 MCP 版(核心库 + server),与并列的 桌面版 sciforge-desktop(PySide6 客户端)构成一对双仓工程。
维度 |
|
|
定位 | 核心库 + MCP stdio server | 桌面 GUI 客户端 + 本地 agent 工具 |
提供能力 | 75 个 MCP 工具、2 个 MCP 资源、1538 门学科、46 个连接器 | 6 个本地 agent 工具、会话存储、GUI 外壳 |
Python 依赖 |
|
|
命令 |
|
|
通信方式 | 被调用方(stdio server) | 调用方(JSON-RPC 2.0 over stdio) |
协作约定:共享核心,默认一起改
共享核心。 两仓面向同一套领域模型:学科 registry、连接器目录、工具语义、
.sci-forge存储布局。桌面版通过 MCP 协议消费核心能力,而不是复制一份实现。默认一起改。 凡是会改变工具签名、工具语义、返回结构、学科字段或存储布局的改动,默认同时在两个仓库落地,以免两侧漂移。
单仓改动的例外。 仅 UI 层、GUI 交互、打包与平台相关的改动可以只在一侧进行;这类 PR 需在描述中注明「不影响 MCP 契约」。
观测记录(盘点日期 2026-09-26):截至该日期两仓尚未建立代码级同步机制 ——
sciforge-desktop的pyproject.toml未声明对sci-forge的依赖,其core/目录为空占位,核心一致性目前靠约定而非机制保证。建立该同步机制属于后续工作项。
路线图
以下为计划方向,不代表已排期或已承诺的时间点。
已具备
1538 门学科 registry(Discipline v2 字段体系)
46 个科学数据库连接器 / 7 领域
75 个 MCP 工具 + 2 个 MCP 资源
复现 / 写作 / 研究 / 评审核验 / 交付 / 科学数据 六条线闭环
268 个 pytest 用例(v2 回归基线)
免 key 可用的核心链路 + 可选 LLM 增强
进行中
文档体系:README 双语化、
docs/面向用户文档、贡献与安全流程、CI 与发布自动化双仓契约(桌面版消费 MCP 核心)落地
计划中
science_fetch覆盖率从 1/46 扩到主流库可用学科工具名归一化(当前 597 个不同工具字符串中有 504 个只出现 1 次,命名碎片化明显)
list_disciplines的domain过滤与citation_graph的多层展开覆盖率与静态类型配置(
ruff/mypy/coverage)纳入 CI 门禁PyPI 发布流程
明确不做
不依赖任何闭源商业检索服务作为默认后端
不在无 LLM 配置时阻断任何工具调用
开发与测试
git clone https://github.com/liudongyan13701205717-source/sci-forge.git
cd sci-forge
pip install -e ".[reproduce,dev]"
# 全量测试(离线可跑:文献与复现用桩数据)
SCI_FORGE_OFFLINE=1 python -m pytest tests/ -q
# 只收集不执行
SCI_FORGE_OFFLINE=1 python -m pytest tests/ -q --collect-only
# 只跑某个文件
SCI_FORGE_OFFLINE=1 python -m pytest tests/test_science_api.py -qCI(.github/workflows/ci.yml)在 Python 3.11 / 3.12 / 3.13 上执行 ruff lint 与上述 pytest 命令。
当前测试布局:26 个测试文件、268 个被 pytest 收集的用例,覆盖四条线的单元测试、真实 spawn MCP server 的 stdio 端到端测试、以及科学数据连接器测试。
贡献流程、分支规范、提交信息规范与双仓同步约定见 CONTRIBUTING.md。
参与贡献
报告 bug / 提需求:走 GitHub Issues,或使用
.github/ISSUE_TEMPLATE/下的模板。安全漏洞:不要开公开 issue,按 SECURITY.md 走私下报告渠道。
提交代码:Fork → 分支 → PR。提交前请确保
SCI_FORGE_OFFLINE=1 python -m pytest tests/ -q全绿。参与讨论:所有人须遵守 CODE_OF_CONDUCT.md(Contributor Covenant v2.1)。
赞助与支持:见 .github/SUPPORT.md。
许可证
Apache License 2.0 — Copyright 2026 liudongyan13701205717
本项目为独立开发的教育 / 研究工作,与 SciForge 及其商标无关联。所有外部数据库与 API 的版权归各自权利人所有;本项目仅通过公开接口访问其数据。
This server cannot be deployed
Maintenance
Related MCP Connectors
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Research paper search with real citations and reference formatting for AI assistants
Deterministic research automation with live OpenAlex search and reusable workflow programs.
Academic papers, reference verification and research data for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables local analysis of scientific papers including PDF parsing, mathematical formula extraction with AST generation, PyTorch code generation from methodology, and automated Markdown report generation with visualizations.15-
- AlicenseNot gradedqualityDmaintenanceEnables autonomous research by integrating multiple free sources including web search, Wikipedia, arXiv, and Crossref, with no API keys required.MIT
- FlicenseCqualityAmaintenanceEnables to turn a research folder into a submission-ready academic paper, with stages for screening, venue selection, drafting, humanization, and final QA. Runs locally without uploading any data.21-
- AlicenseAqualityBmaintenanceProvides local academic literature search and writing support by querying OpenAlex, arXiv, and Crossref, downloading open-access PDFs, extracting IMRaD sections, and appending BibTeX references.421 PyPI2MIT