sci-host-mcp
by aceris-sola
README.md
# SciHost — 科学方向探索宿主系统
面向材料科学文献调研与可证伪假设生成的持续运行系统。输入文献语料,输出**可证的科研发现**、**研究方向**与**含完整溯源链的发现报告**。
本项目为**比赛提交包**,自包含、零外部服务依赖、**离线可运行**(无需任何 API Key)。
## 核心能力
- **科学文献采集与隐性配对**:从论文语料发现跨领域隐性关联
- **CSP 知识抽取**:自动抽取 组分-结构-性能 三元组
- **可证伪假设生成**:生成含数值预测的假设(如"预测 X 材料带隙为 Y eV")
- **数字孪生仿真试错**:内置 `ResearchTwin` 虚拟实验环境,算法算子交叉验证 + 材料物理约束检查
- **材料性能找全(内置 DSR-MO 算法)**:将已知材料性能数据映射为连续性能景观,用内置多模态优化算法一次性找全所有性能最优的候选材料,并为数值预测假设对标打分
- **验证复现与发现认证**:扰动重跑 + 交叉验证 → 认证为科学发现
- **文献溯源链**:每条发现可追溯到 假设 → 配对 → 论文 → CSP
- **EWC 持续学习**:保护已验证知识,校准算子权重
## 内置核心算法:DSR-MO
本系统内置了 **DSR-MO**(小生境 / 群体智能方向的多模态优化算法),作为宿主系统中的一个研究算子,随项目一并提供。
- **算法定位**:面向多模态优化的单目标 niching 算法,能够在一个连续函数空间内**同时定位出所有等高的性能峰**("先占地盘、后精耕细作":maximin 选择铺开占位保覆盖,Nelder-Mead 局部精修保精度,报告期密度过滤去冗余)。
- **本项目中的应用场景**:数字孪生中的「材料性能找全」算子。把已知材料成分-结构-性能(CSP)数据构造成连续性能景观,DSR-MO 在该景观上一次找全所有性能极值的候选材料,作为可证伪假设的对照基准与打分依据。
- **算法源码仓库**:https://github.com/aceris-sola/DSR-MO (评审可对照查看算法完整实现)
- **移植说明**:为便于离线运行,算法以纯 numpy 实现并嵌入本包(`sci_host/dsr_mo/`),不依赖 MATLAB/Octave。这是同一算法在本系统的实际应用形态。
## 快速开始
```bash
# 1. 安装依赖
pip install -r requirements.txt
# 2. 离线演示(默认,几轮快速跑)
python run.py
# 3. 材料科学完整流水线演示(推荐先跑这个,看完整效果)
python demo.py
# 4. 作为 MCP 服务使用(stdio 模式,供 Claude Desktop / Cursor / IDE 调用)
python run.py --mcp
# 5. 作为 MCP 服务使用(HTTP 模式,远程访问)
python run.py --mcp --http 8080
```
## 启用 Sciverse 联网检索(真实文献 + 后端联网审查)
默认离线即用(内置语料,无需任何 Key)。需要检索**真实文献**或做**后端联网审查**时,配置一个 Sciverse API Key 即可,采集会自动走 `https://api.sciverse.space/agentic-search`(4.65 亿学术元数据)。
**Key 填在哪(二选一):**
- 推荐:复制 `.env.example` 为 `.env`,在 `SCIVERSE_API_TOKEN=` 后填真实 token(项目启动自动读取,`.env` 已被 git 忽略)
- 或用环境变量:`export SCIVERSE_API_TOKEN=sci_你的token`
**联网审查三步走:**
```bash
python run.py --mcp # ① 启动 MCP 服务
```
```
② 调用 sci_create_sciverse_host 创建联网宿主(联网开关)
③ 依次调用 sci_stream_crawl → pair → hypothesize → trial → verify,
每步读取真实中间结果,用 sci_stream_feedback 实时把关
```
完整步骤、可复制的提示词见 **[USAGE.md](USAGE.md#5-启用-sciverse-联网检索真实文献--后端联网审查)** 第 5 节。
## 评审验证清单
| 验证项 | 命令 | 预期 |
|--------|------|------|
| 离线演示 | `python run.py` | 跑出 论文采集/配对/假设/试错 数据 |
| 材料完整演示 | `python demo.py` | 输出 CSP 三元组、认证发现、溯源报告 |
| MCP 服务 | `python run.py --mcp --http 8080` | 启动 MCP 服务,暴露 `sci_*` 工具 |
| 测试套件 | `python -m pytest tests/ -q` | 核心修复测试通过 |
## 作为 MCP 服务接入
MCP 客户端配置(`claude_desktop_config.json` / VS Code / Cursor):
```json
{
"mcpServers": {
"sci-host": {
"command": "python",
"args": ["/绝对路径/sci-host-mcp-competition/run.py", "--mcp"]
}
}
}
```
工具命名空间为 `sci_*`,例如:
- `sci_create_host` / `sci_create_materials_host` — 创建宿主实例
- `sci_step` / `sci_run_cycles` — 运行探索循环
- `sci_get_directions` / `sci_get_discoveries` — 获取方向与发现
- `sci_get_csp_knowledge` / `sci_get_discovery_report` — 材料科学专属
- `sci_generate_competition_report` — 生成参赛 Markdown 报告
## 目录结构
```
sci-host-mcp-competition/
├── run.py # 统一入口(离线演示 + MCP 服务)
├── demo.py # 材料科学完整离线演示
├── requirements.txt # 最小依赖
├── README.md
├── sci_host/ # 宿主系统核心包(自包含)
│ ├── mcp_server.py # MCP 服务入口
│ ├── research_twin.py # 内置数字孪生虚拟实验环境
│ ├── twin_adapter.py # 算法算子适配器
│ ├── dsr_mo/ # 内置 DSR-MO 多模态优化算法(含材料性能景观与找全算子)
│ ├── research_quality.py
│ ├── core/ ... materials/ ... trial/ ... 等子模块
├── tests/ # 核心修复测试套件
└── demo/competition-demo.html # 可视化演示页面
```
## 运行环境
- Python ≥ 3.9
- 仅依赖:`numpy`, `requests`, `mcp[cli]`, `pydantic`
- 离线模式使用内置语料,不访问网络,评审无需联网This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues