# io.github.toki0413/saturday-materials (npm · @toki0413/mcp-server)

Materials computing tools for AI agents: structures, engines, phonons, EOS, NEB, sampling, lineage.

- Trust score: 74/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-25

## Components

- npm · `@toki0413/mcp-server`: 74/100 (this document), [markdown](https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server.md), [page](https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server)

## Channel facts

- Registry: `npm`
- Package: `@toki0413/mcp-server`
- Version: `0.3.7`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-25.

- **Supply Chain Security**: 99/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 119 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 8784 tokens (~190/item across 46 items; 46 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 38/100
  - Stability check failed: the tool surface changed between 0.3.3 and 0.3.7: 1 tool removals, 13 breaking changes, 17 additions.
- **Tool Coverage**: 98/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 94% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 46 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 46 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.toki0413/saturday-materials MCP server?

io.github.toki0413/saturday-materials runs locally as an npm package, launched with npx -y @toki0413/mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add toki0413-saturday-materials -- npx -y @toki0413/mcp-server
```

### Cursor

```json
{
  "mcpServers": {
    "toki0413-saturday-materials": {
      "command": "npx",
      "args": [
        "-y",
        "@toki0413/mcp-server"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "toki0413-saturday-materials": {
      "command": "npx",
      "args": [
        "-y",
        "@toki0413/mcp-server"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add toki0413-saturday-materials -- npx -y @toki0413/mcp-server
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "toki0413-saturday-materials": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@toki0413/mcp-server"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add toki0413-saturday-materials --command npx --arg -y --arg @toki0413/mcp-server
```

### Hermes

```yaml
mcp_servers:
  toki0413-saturday-materials:
    command: "npx"
    args: ["-y", "@toki0413/mcp-server"]
```

### Netclaw

```json
{
  "McpServers": {
    "toki0413-saturday-materials": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@toki0413/mcp-server"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add toki0413-saturday-materials -t stdio -c npx -a -y @toki0413/mcp-server
```

### Other

```json
{
  "mcpServers": {
    "toki0413-saturday-materials": {
      "command": "npx",
      "args": [
        "-y",
        "@toki0413/mcp-server"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-25 (score 74, 0)

- [functional regression] Schema quality: 6229 → 8784
- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-09-24 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 32 to 35.

### 2026-09-22 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 25 to 28.

### 2026-09-20 (score 72, +1)

No change was recorded against any check on this day. Stability & Change Management went from 18 to 22.

### 2026-09-18 (score 71, +1)

No change was recorded against any check on this day. Stability & Change Management went from 12 to 15.

### 2026-09-16 (score 70, +1)

No change was recorded against any check on this day. Stability & Change Management went from 5 to 8.

### 2026-09-12 (score 69, 0)

- [security regression] Stability: unverified → fail
- [security regression] Tool safety: pass → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Schema quality: 5165 → 6229
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.3.3 → 0.3.7

### 2026-09-07 (score 69, +15)

- [security improvement] Malware scan: unverified → pass

## MCP tools (46)

### `material.load` (~78 tokens)

加载材料结构。支持化学式（如 "Si"、"TiO2"）；TiO2 等多晶型材料可用 polymorphRank 选择晶型。

Input parameters:

- `polymorphRank` (integer): 多晶型序号，默认 0（最稳定）
- `query` (string, required): 化学式

### `structure.fromSmiles` (~135 tokens)

SMILES → 3D 分子结构（RDKit ETKDG 嵌入 + MMFF/UFF 力场弛豫）。分子体系 pbc=False（无周期边界），可走 relaxation/calculate/声子等下游工具。需 sidecar Python 含 RDKit（缺失显式报错，不冒充可用）。

Input parameters:

- `seed` (integer): 构象嵌入随机种子（确定性复现）
- `smiles` (string, required): SMILES 表达式（如 "CO"、"c1ccccc1"）

### `structure.fromPoscar` (~115 tokens)

VASP POSCAR 文本 → 周期 Material（解析 lattice/按元素分组/分数或笛卡尔坐标）。零依赖、任何环境可跑（不需 RDKit/sidecar），产物 materialId 供 relax/calculate/phonon/xrd/筛选下游。未知元素 POSCAR_NO_SYMBOLS、截断/奇异胞显式报错不猜。

Input parameters:

- `text` (string, required): POSCAR / VASP CONTCAR 结构文本

### `structure.fromXyz` (~120 tokens)

XYZ 文本 → Material（分子/非周期：零胞 + pbc=false，同 structure.fromSmiles 语义）。首行原子数与后续行不匹配、未知元素、非有限坐标显式报错不猜。零依赖不需 sidecar。产物 materialId 供 relaxation/calculate/声子等下游（分子体系无周期性分析）。

Input parameters:

- `text` (string, required): XYZ 结构文本（count / comment / "符号 x y z" …）

### `structure.fromCif` (~124 tokens)

CIF 文本 → 周期 Material（P1 子集：_cell 参数还原晶胞 + _atom_site 分数/笛卡尔坐标）。零依赖不需 sidecar。materialId 供 relax/calculate/phonon/xrd/筛选下游。不支持对称性操作与非整比占位：显式报 CIF_SYMMETRY_UNSUPPORTED / CIF_OCCUPANCY_UNSUPPORTED，不自动展开。

Input parameters:

- `text` (string, required): CIF 结构文本（P1、显式原子列表）

### `potential.relax` (~91 tokens)

对材料做结构弛豫。引擎为 EMT：Python sidecar 有 ASE 时走真实 EMT （UnitCellFilter + BFGS），否则回退 LJ 玩具势（结果中 calculator 字段标明）。

Input parameters:

- `engine` (string)
- `materialId` (string, required)
- `simulatedSeconds` (number): 模拟计算耗时（演示长任务）

### `engine.availability` (~140 tokens)

可用性预检：逐已注册引擎探测运行时版本并如实报告（注册 = 声明层，可用 = 运行时层）。探测成功且 stamp=true 时把指纹 version 从声明态 "unknown" 盖章升级为实测值；探测失败保持 "unknown"（不拿未知冒充已知）。同一份代码在不同环境给出不同的表，两种都正确。

Input parameters:

- `stamp` (boolean): 探测成功时是否盖章升级指纹实测态（默认只报告不副作用；预检是查询不是变更）

### `runtime.capability.list` (~76 tokens)

运行时能力清单：每个已注册引擎的声明能力（capabilities+properties）、实测指纹（fingerprint+sourceId）、事件粒度、在途作业数与可用性探针结果。自我演化闭环的"当前缺什么"查询面。

### `runtime.engine.attach` (~160 tokens)

运行时挂载引擎插件（不重启宿主、不中断其他插件事件流）：按包名动态 import 并 apply；新引擎即时进 autoRoute 候选池（注册即生效，无握手缓存）；挂载即验证（available() 探针随交付）；凭据/二进制缺失走该插件自己的挂载门禁——providersGained 为空即如实报告不假成功。动作落 Trajectory。

Input parameters:

- `config` (object): 传给插件 apply 的配置（如 { resident: true }）
- `plugin` (string, required): 包名（@toki0413/plugin-lammps）或短名（lammps）

### `runtime.engine.detach` (~154 tokens)

运行时拆下引擎：先查作业台账再注销——onActive refuse（缺省，有在途作业即拒 ACTIVE_JOBS）/drain（等到超时，超时可拒）/cancel（无 cancel 通道即 CANCEL_UNSUPPORTED，不假装能停）；经 attach 工具挂载的插件连 fiber 一起回收（服务/工具随 cordis effect 退场）。动作落 Trajectory。

Input parameters:

- `engine` (string, required): 引擎名（如 lammps / mace / lj-js）
- `onActive` (string): refuse | drain | cancel
- `timeoutMs` (integer): drain/cancel 等待预算

### `runtime.engine.crossCheck` (~179 tokens)

跨引擎对账（A/B）：把同一 materialId 在两个或多个引擎上回算,机器并列每引擎的 energyPerAtom/单位三元组/指纹 与逐对 deltaEnergyPerAtom;可比性只按单位三元组判(不自动换算),指纹差异如实标注不阻断(差异就是 A/B 要暴露的引擎/版本分歧)。缺引擎/无能量/无能力显式报错。

Input parameters:

- `engines` (array): 引擎名列表（≥2；缺省=当前在册全部具该能力引擎）
- `kind` (string): calculate | relax
- `materialId` (string, required): 被对账的材料 ID

### `runtime.engine.rank` (~194 tokens)

跨引擎排序一致性：对一批 materialId 在两个（或多个）引擎回算 energyPerAtom，报两两 Spearman ρ、前 k 重合（取 k 个最小值的索引交/k）、平均绝对差。可比性只按单位三元组判（不自动换算）；不足两引擎/两材料/无能量/无能力显式报错。需 materialId、engines≥2。

Input parameters:

- `engines` (array): 引擎名（≥2；缺省=在册全部具该能力引擎）
- `k` (integer): 前 k 重合的 k（缺省 min(3, 材料数)）
- `kind` (string): calculate | relax
- `materialIds` (array, required): 候选材料 ID（≥2，同一批）

### `derivation.record` (~127 tokens)

登记一条推导：导出量（output）由哪些输入（inputs）经哪个生产者（producer）得出。引用形如 material:<id> / job:<id> / result:<id> / engine:<id>。冻结结果传 frozen（只追加修正、不重算）。

Input parameters:

- `frozen` (boolean): 冻结（实验数据/已交付）
- `inputs` (array, required): 输入引用数组
- `output` (string, required): 输出引用
- `producer` (string, required): 生产者（工具/引擎名）

### `derivation.invalidate` (~92 tokens)

失效传播（§8.2）：声明某引用失效并给出原因，沿推导图向下游传递；冻结结果只追加修正记录。返回失效与修正的引用清单。

Input parameters:

- `reason` (string, required): 失效原因（写入谱系）
- `ref` (string, required): 失效源引用（如 material:<id>）

### `derivation.status` (~43 tokens)

查询导出量的活性状态：valid / invalid、冻结、修正记录与失效来源。

Input parameters:

- `ref` (string, required): 导出量引用

### `analysis.elasticity` (~264 tokens)

完整 6×6 弹性刚度张量（Voigt）：6 种独立应变 ± 中心差分共 12 次引擎应力计算，C_ij=∂σ_i/∂ε_j（拉正约定）；派生 VRH 多晶 K/G/E/ν、Born 正定稳定性判据、立方各向异性因子 A=2C44/(C11−C12)。引擎必须声明 calculate+stress 能力（当前：MACE 常驻 batch 档；EMT/LJ 无应力输出即显式拒绝，不做近似替代）。仿射应变无内部弛豫：适用于高对称/单质体系，一般结构声明边界。单位：C 原生 eV/Å³，GPa 换算随交付显式声明。

Input parameters:

- `engine` (string): 应力源引擎（须声明 calculate 的 stress 性质）
- `eps` (number): 应变幅值（线性响应有效域 (0,0.05)）
- `materialId` (string, required): 材料 ID（须为平衡附近结构）

### `analysis.eos` (~228 tokens)

Birch-Murnaghan 状态方程拟合。两条数据路：(1) 显式传 series=[{volume,energy}]；(2) 传 materialId，按 scales 对各缩放体积做静态单点自产序列（需要 material / potential 服务）。

Input parameters:

- `B0p0` (number): B0′ 初值（常见区间 4–6）
- `engine` (string)
- `equation` (string): 状态方程：'birch-murnaghan'（三阶）或 'vinet'（普适指数，宽体积域更稳）
- `materialId` (string): 材料 ID（数据路 2）
- `scales` (array): 体积缩放因子列表，默认 [0.94, 0.97, 1.0, 1.03, 1.06]
- `series` (array): 显式 (V, E) 序列（数据路 1），每项 { volume, energy }

### `workflow.ergodic` (~362 tokens)

遍历对账（§4.5 oracle 条款）：采样候选的能量系综平均 对 同一能量函数恒温 MD 的时间平均。判定强度随采样器似然声明三档分级：likelihood: none 时为信息性量化；声明似然可求且候选附 logProb 时做重要性重加权，重加权均值对 MD 时间平均，构成对 Boltzmann 采样声明的直接检验。

Input parameters:

- `dtFs` (number): MD 时间步长（fs）
- `engine` (string): 能量函数（引擎名，须支持 calculate 与 md）
- `gammaDt` (number): OU 无量纲摩擦时间尺度积 γΔ（OU 采样器用）
- `mdSeed` (integer): MD 随机种子（确定性复现）
- `mdSteps` (integer): MD 步数
- `n` (integer): 采样候选数量（系综侧）
- `referenceId` (string, required): 参考结构材料 ID（MD 起点）
- `sampler` (string): 采样器服务名（如 reference-perturbation / ou-perturbation）
- `seed` (integer): 采样种子
- `sigma` (number): 微扰位移标准差（Å，微扰采样器用）
- `temperatureK` (number): MD 温度（K）
- `tolerance` (number): 均值差容差（eV）
- `uEq` (number): OU 平衡态每坐标涨落幅度（Å，OU 采样器用）

### `workflow.explore` (~222 tokens)

采样 → 回算闭环（§4.5 oracle 条款）：采样器在 referenceId 结构邻域产生候选，每个候选独立送入引擎弛豫验证后按能量排序。候选是分布采样点而非唯一解，能量为引擎回算结果，全程谱系可溯源。

Input parameters:

- `engine` (string): 引擎选择（validation 画像）
- `n` (integer): 候选数量
- `referenceId` (string, required): 参考结构材料 ID
- `sampler` (string): 提议器服务名 sampler/<name>（如 ou-perturbation / affine-flow / rss；缺省微扰）
- `seed` (integer): 随机种子（确定性复现）
- `sigma` (number): 微扰位移标准差（Å，仅对微扰类 sampler 生效）
- `topK` (integer): 只返回能量最低的前 K 个

### `workflow.activeLearning` (~283 tokens)

basin-hopping 主动学习闭环（§4.3+§4.5 迭代版）：每轮从当前最优结构微扰产候选→引擎 relax 回算→能量更低则更新中心与最优。引擎是唯一 oracle（无 GP 代理，非贝叶斯优化）；候选是采样分布点非唯一解；history 最优能量按构造单调不升，不声明全局最优。逐轮回算落 Trajectory（含 round/谱系）。提议器可选 sampler/<name>（缺省 reference-perturbation）。需 material/potential/sampler 服务。

Input parameters:

- `candidatesPerRound` (integer): 每轮候选数
- `engine` (string)
- `referenceId` (string, required): 种子结构材料 ID
- `rounds` (integer): 主动学习轮数
- `sampler` (string): 提议器服务名 sampler/<name>（每轮从当前最优结构生成候选；可换 ou/flow/rss 等）
- `seed` (integer): 随机种子（第 r 轮用 seed+r，确定性复现）
- `sigma` (number): 微扰位移标准差（Å，仅对微扰类 sampler 生效）

### `workflow.bayesOptimize` (~223 tokens)

GP 代理贝叶斯优化（1D，极小化昂贵黑箱）：对种子材料施体变标度 x（各向同性缩放），引擎 calculate 回算 E(x)/原子作 oracle，高斯过程（RBF+Cholesky）建模、LCB 采集选下一评估点，少回算逼近极小（平衡体积代理）。不声明全局最优（启发式）；缺 material/potential 服务显式报错。需 material / potential 服务。

Input parameters:

- `engine` (string)
- `iterations` (integer): LCB 采集迭代数（另加 3 个冷启动点）
- `kappa` (number): LCB 探索系数（越大越偏探索）
- `materialId` (string, required): 种子材料 ID
- `scaleRange` (array): 体变标度区间 [lo,hi]（缺省 [0.9,1.1]）

### `workflow.bayesOptimizePareto` (~230 tokens)

多目标（2）GP 贝叶斯优化：对种子材料体变标度 x，两目标 = [每原子能量 E/n, 最大残余力范数 max|F|]（均最小化）——低能与“平衡附近小力”常不在同一 x，构成权衡。逐目标独立 GP + 超体积增益采集，返回观测非支配前沿与超体积。引擎为唯一 oracle；不声明收敛到真实 Pareto 前沿（后验均值贪心采集）。需 material/potential（引擎需回能量与力）。

Input parameters:

- `engine` (string)
- `iterations` (integer): 采集迭代数（另加 3 个冷启动点）
- `materialId` (string, required): 种子材料 ID
- `scaleRange` (array): 体变标度区间 [lo,hi]（缺省 [0.92,1.08]）

### `workflow.freeEnergy` (~355 tokens)

热力学第二档：构型自由能曲线。逐温度网格点恒温 MD 得 ⟨U⟩(β)，沿 β 热力学积分（d(βF_conf)/dβ = ⟨U⟩），锚点显式声明。交付的是构型自由能（不含动量部分）；锚点以外只承诺 ΔF 的积分正确性。

Input parameters:

- `anchorF0` (number): 锚点自由能 F₀（eV；anchorMode=explicit 时必填）
- `anchorMode` (string): 锚点模式：explicit = 调用方显式声明 anchorF0；harmonic = 引擎 harmonic 原语计算（弛豫+Hessian 简正模，量子谐振子闭式）
- `anchorSource` (string): 锚点物理来源声明（如"谐波近似"/"���验值"）
- `anchorTemperatureK` (number, required): 锚点温度（必须是网格点）
- `dtFs` (number): MD 时间步长（fs）
- `engine` (string): 能量函数（引擎名，须支持 md）
- `mdSteps` (integer): 每网格点 MD 步数
- `referenceId` (string, required): 参考结构材料 ID（MD 起点）
- `sampleEvery` (integer): MD 能量采样间隔（步）
- `seed` (integer): MD 随机种子（确定性复现）
- `temperatures` (array, required): 温度网格（K，升序，≥2 点）

### `analysis.saddleSearch` (~301 tokens)

QMM 鞍点搜索（不需 NEB 带、不需二阶导 callable）：方向 F_eff=−∇E+2(ĉ·∇E)ĉ，ĉ 取 Hessian 最小特征向量（软模上坡、其余下坡），步长自适应 + 以初值为中心的 trust region。成功需三条同时成立：‖∇E‖<gtol、恰一个负特征值（index-1）、未越出区域；收敛到极小按失败报。内置玩具体系 lj-double-well（鞍点由对称性精确）与 quartic-double-well（鞍点、本征值、势垒全闭式）；真实势请经编程 API 注入 callable。不承诺全局最低势垒。

Input parameters:

- `c` (number): quartic-double-well 的四次系数 c（鞍点 (0,0)，势垒 1/(4c)）
- `radius` (number): trust region 半径（省略用默认 1.5）
- `start` (array): 初值坐标（quartic 为 2 维、lj 为 3 维）
- `system` (string): 'quartic-double-well'（闭式基准）| 'lj-double-well'

### `analysis.neb` (~225 tokens)

NEB 最小能量路径与过渡态势垒。内置玩具体系 lj-double-well（吸附原子双位跳跃，对称双阱）：端点自动 quench 到两侧极小。climb=true 走 climbing-image NEB（鞍点由 CI 像元给出）。结果附收敛报告（maxForce/逐像元力/maxForce 历史/stepLimitReached）——未收敛时不把带内最高点当成已求得的过渡态。真实势请经编程 API 注入能量/梯度 callable。

Input parameters:

- `climb` (boolean): 启用 climbing-image NEB（鞍点由 CI 像元给出）
- `nImages` (integer): 像元总数（含端点）
- `springK` (number): 弹性带弹簧常数
- `system` (string): 玩具体系名（v0 仅支持 lj-double-well）

### `analysis.phonon` (~177 tokens)

Γ 点声子分析（力注入式有限位移）。传 materialId，引擎做静态单点取力（需要 material / potential 服务）；交付频率、虚频与稳定性判定。

Input parameters:

- `applyAsr` (boolean): 声学和规则投影
- `displacement` (number): 位移步长（Å）
- `engine` (string)
- `materialId` (string): 材料 ID（需已弛豫到平衡附近）
- `stableTolOmegaSq` (number): 稳定性 ω² 阈值
- `supercellRep` (array): 超胞重复数 [nx,ny,nz]；力引擎忽略周期性时必须用超胞（默认 3×3×3）

### `analysis.phonon.thermo` (~314 tokens)

全布里渊区声子热力学：从超胞有限位移提取实空间力常数 Φ_{ij}(R)（最近镜像折回小格矢 + 牛顿第三对称 + ASR），经 Born–von Kármán 外推 q 网格得声子谱，交付每原胞 C_v(T)/熵/振动自由能/态密度与 Debye 温度（θ_D=ħω_max/k_B，显式声明）+ Debye 模型对照。需 material/potential 服务；力引擎忽略周期性时用超胞（默认 3×3×3，须覆盖力程）。诚实：有虚频 → valid=false，不假装热力学可信；声学零模（Γ 三支）q→0 测度为零已剔除并报告计数。

Input parameters:

- `displacement` (number): 位移步长（Å）
- `engine` (string)
- `materialId` (string): 材料 ID（需已弛豫到平衡附近）
- `mesh` (integer): Γ 心 q 网格每轴点数（n³ 个 q 点）
- `supercellRep` (array): 实空间力常数超胞 [nx,ny,nz]（至少一轴>1）
- `temperatures` (array): 温度网格（K，均 >0）

### `analysis.quasiharmonic` (~297 tokens)

准谐近似热膨胀 α(T)/Grüneisen：对种子材料施各向同性体变标度，逐标度算静态能 E_static 与振动自由能 F_vib(V,T)（实空间力常数→Born–von Kármán 格点），合成 F(V,T) 对体积求极小 → V(T)、α=(1/V)dV/dT。准谐=ω随体积变、不含本征非谐；极小在体积网格上求、网格间三点抛物线插值。需 material/potential 服务（引擎需有力）。诚实：数值随网格密疏而定，非解析平衡态。

Input parameters:

- `displacement` (number)
- `engine` (string)
- `materialId` (string): 材料 ID（需已弛豫到平衡附近）
- `mesh` (integer): 每标度求 F_vib 的 q 网格每轴点数
- `scales` (array): 线度标度网格（缺省 [0.97,0.985,1,1.015,1.03]，至少3点）
- `supercellRep` (array)
- `temperatures` (array): 温度网格（K）

### `trajectory.replay` (~88 tokens)

回放 Trajectory（append-only 事件流）：重建材料计算索引。可选把每条记录以 "saturday/replay/..." 事件重放给监听者。

Input parameters:

- `reemit` (boolean): 是否把记录重放为广播事件，默认 false
- `trajectoryPath` (string): 轨迹文件路径（默认本插件运行时配置）

### `sampler.rss` (~357 tokens)

RSS 随机结构搜索采样（§4.5 采样语义，非 flow 生成式路线）：在成分/原子数/晶胞约束下均匀生成随机晶体结构候选（正交晶胞 + 最小间距门禁），不依赖参考结构拓扑。候选是均匀提议分布的采样点而非唯一解；提议分布经门禁截断后归一化常数无闭式，似然如实声明 none（不伪造）；请送入引擎回算验证后再使用（workflow.explore / 逐候选弛豫）。

Input parameters:

- `aMax` (number): 正交晶胞边长上界（Å）
- `aMin` (number): 正交晶胞边长下界（Å）
- `counts` (array): 各元素原子数（与 elements 等长，如 [3,1]）
- `elements` (array): 元素符号数组（与 counts 搭配，如 ["Cu","Pt"]）；与 referenceId 二选一
- `maxAttempts` (integer): 单原子放置重试上限（耗尽即显式报错）
- `minDistance` (number): 最小原子间距门禁（Å，最小像约定）
- `n` (integer): 候选数量
- `referenceId` (string): 参考结构材料 ID：成分自其 graph 继承（结构本身不参考）；与 elements 二选一
- `seed` (integer): 随机种子（确定性复现）

### `sampler.flow` (~236 tokens)

仿射耦合流参考结构采样（§4.5 采样语义，invertible 首实证）：潜变量 z ~ N(0, I) 经双射输运映射为位移向量，叠加参考结构得候选；似然经换元公式精确可求（logProb 逐候选可独立重算），encode 可把候选映回潜变量。候选是分布上的采样点而非唯一解；流参数由 seed 派生（非训练产物，如实声明）；请送入引擎回算验证后再使用。

Input parameters:

- `n` (integer): 候选数量
- `referenceId` (string, required): 参考结构材料 ID
- `sMax` (number): 微分同胚窗口半宽（Å）：位移 |d| < sMax + 0.1，窗口外 encode 显式拒绝
- `seed` (integer): 随机种子（同时决定流参数与潜变量抽样；确定性复现）

### `sampler.flow.encode` (~174 tokens)

双射输运映射的反向（契约：仅 invertible === true 提供）：把与参考结构同拓扑的候选 graph 映回潜变量（encode(decode(z)) ≡ z）。窗口外结构显式拒绝（不外推冒充覆盖）；跨拓扑显式拒绝（位移无定义）。

Input parameters:

- `graph` (object): 待编码结构（AtomGraph：nodes[].position 逐坐标）
- `referenceId` (string, required): 参考结构材料 ID（位移空间的定义基准）
- `sMax` (number): 微分同胚窗口半宽（必须与生成时一致）
- `seed` (integer): 随机种子（必须与生成时一致：seed 决定流参数）

### `sampler.ou` (~250 tokens)

OU 参考结构采样（§4.5 采样语义）：均值回归锚定 referenceId 的受控扩散，采样 n 个候选并附精确提议似然（logProb）。候选是分布上的采样点而非唯一解；局部采样器（盆地内），请送入引擎回算验证后再使用。

Input parameters:

- `gammaDt` (number): γΔ 无量纲摩擦时间尺度积（小→贴近参考，大→近平稳）
- `n` (integer): 候选数量
- `referenceId` (string, required): 参考结构材料 ID
- `seed` (integer): 随机种子（确定性复现）
- `temperatureK` (number): 采样器自身温度声明（可选；声明 ≠ 替换：不改变采样行为，只随交付呈现供消费方做温差诚实核对；标定建议值可用 uEqFromHarmonicTemperature 换算）
- `uEq` (number): 平衡态每坐标涨落幅度（Å）

### `sampler.anchor.add` (~218 tokens)

混合提案锚点入库：闭环产出的参考结构（已注册材料或直交付 graph）入会话锚点库；谱系必填（无来源声明的数据不入库）；组分自动从结构提取（可覆写）。入库即声明：锚点来自闭环轨迹，出处可追溯。

Input parameters:

- `composition` (object): 组分覆写（缺省从结构节点原子序机械提取）
- `energy` (number): 锚点能量（可选，闭环回算产出；入库只做记录不参与检索排序）
- `graph` (object): 直交付结构（含非空 nodes；与 materialId 二选一）
- `materialId` (string): 已注册材料 ID（与 graph 二选一）
- `source` (string): 谱系声明（直交付时必填；材料入库缺省声明为 material:<id>）

### `sampler.mixture` (~387 tokens)

锚点引导的混合采样：从会话锚点库检索（拓扑硬门禁 + 组分 L1 距离）→ 最大余数法配额 → OU 混合提案（似然 exact，逐候选可独立重算）。空库/无匹配显式报错（不伪造锚点）；候选不自证，请送入引擎回算后接 workflow.screen（sampled 透传）。也支持 anchors 内联（单次调用即用，不经过会话库）。

Input parameters:

- `anchors` (array): 内联锚点（与库检索二选一）：每项 {"graph":{...},"source":"...","composition":{...},"weight":1}
- `batchId` (string): 提案批次标识（可选；缺省随机生成，用于推导登记簿引用对账）
- `composition` (object): 目标组分（检索排序偏好；缺省只按拓扑过滤）
- `gammaDt` (number): γΔ 无量纲摩擦时间尺度积
- `n` (integer): 候选数量
- `nAtoms` (integer): 拓扑门禁（会话库路径必填）
- `seed` (integer): 随机种子（确定性复现）
- `temperatureK` (number): 采样器自身温度声明（可选；声明 ≠ 替换）
- `topK` (integer): 参与混合的锚点数上限
- `uEq` (number): 平衡态每坐标涨落幅度（Å）
- `weights` (array): 混合权重（与检索结果等长；缺省均匀）

### `sampler.anchor.export` (~71 tokens)

导出会话锚点库全量条目（无损 JSON 有效载荷）：跨会话持久化的原语。库自身不落盘——导出交付由调用方保存与回填（诚实边界：不伪造库外数据）。

### `sampler.anchor.import` (~101 tokens)

从导出载荷回填锚点：逐条入库（谱系门禁复用库层：无来源即拒），同谱系已在库则跳过（导入幂等，重放安全）。返回入库/跳过/拒绝明细。

Input parameters:

- `entries` (array): 导出载荷的 entries 数组（每项 {graph, source, composition?, formula?, energy?}）

### `sampler.anchor.save` (~80 tokens)

把会话锚点库落盘到调用方指定路径（导出载荷的磁盘端）：无损 JSON，跨会话恢复用 sampler.anchor.load。路径显式声明（库不自作主张读写文件系统）。

Input parameters:

- `path` (string): 目标文件路径（调用方显式声明）

### `sampler.anchor.load` (~186 tokens)

从调用方指定路径回填锚点（落盘载荷 → 会话库，支持 path 单载荷或 paths 多载荷合并）：门禁先行——全部文件先过完整性检查（读/解析/版本/size/条目版本戳），全过才开始回填（出错时库零污染）；回填复用导入门禁（谱系/本体/幂等同款）；交付附逐文件明细与 lineageRefs（磁盘数据起点的可追溯声明）。

Input parameters:

- `path` (string): 单载荷文件路径（与 paths 二选一，调用方显式声明）
- `paths` (array): 多载荷文件路径（与 path 二选一；同谱系幂等门禁天然兜底跨载荷重复）

### `sampler.anchor.audit` (~152 tokens)

审计调用方指定路径载荷的血缘完整率（只读，不回填）：逐条目三态——可追溯（来源归一化为 material:/job:）/不可追溯（有来源但非可追溯形态）/损坏（版本戳缺失或来源缺失，回填必拒）；非可追溯条目附修复建议（指明出路，不代改）；异常如实入报告，不连坐。

Input parameters:

- `path` (string): 单载荷文件路径（与 paths 二选一）
- `paths` (array): 多载荷文件路径（与 path 二选一）

### `sampler.anchor.stats` (~69 tokens)

会话锚点库容量观测（只读，不变更）：条目数 + 谱系形态分布（material:/job:/其他）+ 组分声明覆盖——与 sampler.anchor.audit（库外载荷观测）构成双观测面。

### `sampler.anchor.repair` (~148 tokens)

载荷侧修复原语（写新载荷，不碰原件）：对审计报告中不可追溯条目逐条显式声明可追溯起源；损坏条目与已可追溯条目不接受修复（修复不是伪造，也不替调用方做决定）。

Input parameters:

- `out` (string): 修复后载荷写出路径（必须与 path 不同）
- `path` (string): 待修复载荷路径
- `repairs` (array): 逐条修复声明：[{ index, source }]（source 必须为 material:/job: 形态）

### `sampler.trigger.snapshot.save` (~154 tokens)

判据快照落盘（跨会话续供）：判据对账结论整体原样落盘——读数/阈值/结论一并保留，落盘不改判（不替调用方改写结论）。

Input parameters:

- `assessment` (object): 判据对账结论（trajectoryTriggerAssessment 交付）
- `batchId` (string): 判据批次标识
- `path` (string): 快照落盘路径
- `triggerRef` (string): 可选：对账结论的推导引用（对账登记交付的 result:trigger-<batchId>），声明即随快照原样落盘

### `sampler.trigger.snapshot.load` (~75 tokens)

判据快照回填（只读校验后原样交付）：校验版本戳与形态，快照不进锚点库、不进数据燃料——结论依据跨会话可续供、可复算。

Input parameters:

- `path` (string): 快照文件路径

### `sampler.perturb` (~140 tokens)

参考结构微扰采样（§4.5 采样语义）：在 referenceId 结构的邻域内采样 n 个候选。候选是分布上的采样点而非唯一解；似然不可求（已如实声明），请送入引擎回算验证后再使用。

Input parameters:

- `n` (integer): 候选数量
- `referenceId` (string, required): 参考结构材料 ID
- `seed` (integer): 随机种子（确定性复现）
- `sigma` (number): 笛卡尔位移标准差（Å）

### `workflow.screen` (~589 tokens)

批量掺杂筛选：基体 + 掺杂变体逐个弛豫，按能量排序。每个变体独立落 Trajectory，可全程溯源。支持元素：Cu Ag Al Ni Au Pd Pt（EMT 范围）。

Input parameters:

- `batchId` (string): 筛选批次号（活性上下文登记用，缺省自动生成）
- `codopants` (array): 共掺变体列表，如 [{"elements":["Pt","Ni"],"sites":[0,1]}]；落在稳定相连线上的物理内点
- `dopants` (array, required): 掺杂元素列表，如 ["Ag","Ni"]
- `engine` (string)
- `evidenceSources` (array): 枚举候选联合排序的额外证据源（显式启用，缺省只按能量排）；内置 ["hull"]（凸包距离，需参考态）与 ["mixing-entropy"]（理想混合熵组分先验，只消费组分）；可同启，退化关联由机器审计随交付呈现
- `materialId` (string, required): 基体材料 ID
- `maxDopedSites` (integer): 每掺杂的最大取代位数（浓度扫描：1..max 各一个变体；不得超过基体可取代位数）
- `proposalRef` (string): 提案推导引用（可选；如 "result:mixture-<batchId>"，来自 sampler.mixture 的交付）：声明后登记为排序层推导输入——提案失效沿推导图传播到排序（锚点→提案→排序全链活性）
- `sampled` (array): 采样候选（通常来自 sampler.ou 的交付）：每项 {"materialId":"...","logProb":-12.3}（已注册材料）或 {"graph":{...},"source":"...","logProb":-12.3}（§4.5 SampledStructure 透传）；逐候选单点回算后与似然证据联合排序（需提供 temperatureK）
- `sampledSource` (string): 采样来源声明（如 "sampler.ou"；似然语义随交付呈现，不默认）
- `samplerTemperatureK` (number): 采样器声明的自身温度（K，可选）；与 temperatureK 不一致时随交付诚实声明温差不纠正
- `temperatureK` (number): 联合排序目标温度（K；提供 sampled 或 evidenceSources 时必填）
- `topK` (integer): 只返回能量最低的前 K 个

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server#diagnostics

## Score history

- 2026-09-25: 74
- 2026-09-24: 74
- 2026-09-23: 73
- 2026-09-22: 73
- 2026-09-21: 72
- 2026-09-20: 72
- 2026-09-19: 71
- 2026-09-18: 71
- 2026-09-17: 70
- 2026-09-16: 70
- 2026-09-15: 69
- 2026-09-14: 69
- 2026-09-13: 69
- 2026-09-12: 69
- 2026-09-11: 69
- 2026-09-10: 69
- 2026-09-09: 69
- 2026-09-08: 69
- 2026-09-07: 69
- 2026-09-06: 54

## Common questions

### What is the io.github.toki0413/saturday-materials MCP server?

io.github.toki0413/saturday-materials is an MCP server listed in the public MCP registry as io.github.toki0413/saturday-materials. Materials computing tools for AI agents: structures, engines, phonons, EOS, NEB, sampling, lineage. This page covers its npm package (@toki0413/mcp-server).

### Is the io.github.toki0413/saturday-materials MCP server safe to use?

io.github.toki0413/saturday-materials scores 74 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 25 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.toki0413/saturday-materials MCP server expose?

io.github.toki0413/saturday-materials exposes 46 tools: material.load, structure.fromSmiles, structure.fromPoscar, structure.fromXyz, structure.fromCif, and 41 more. Their descriptions and schemas cost roughly 8,784 tokens of context every time the server is loaded.

### Is the io.github.toki0413/saturday-materials MCP server still maintained?

io.github.toki0413/saturday-materials is still listed as active in the MCP registry. We last reached this channel on 25 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.toki0413/saturday-materials MCP server under?

io.github.toki0413/saturday-materials declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@toki0413/mcp-server
- Socket report: https://socket.dev/npm/package/@toki0413/mcp-server
- Repository: https://github.com/toki0413/dsh-saturday
- Changelog RSS feed: https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server.xml
- Changelog JSON feed: https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server.json
- HTML version of this page: https://verifymcp.io/servers/toki0413-saturday-materials/toki0413-mcp-server
