nds mcp
核数据服务MCP服务器——为AI代理提供离线SQLite支持的核物理数据。
提供涵盖原子质量(AME2020)、核性质(NUBASE2020)、电荷半径(IAEA+激光光谱学)、能级和伽马跃迁(ENSDF)、轻核共振数据(TUNL,A=3-20)、参考文献、JENDL-5衰变/横截面数据、EXFOR实验数据、CODATA基本常数、更新检查以及发现/查询助手的标准模式工具(nds_catalog, nds_schema, nds_query).
快速开始
npx -y nds-mcp预构建的SQLite数据库(约85 MB)会自动下载到 ~/.nds-mcp/nds.sqlite 首次发射时。 默认情况下,它从该仓库的GitHub版本下载(通过覆盖 NDS_DB_DOWNLOAD_URL). 发布资产使用单一压缩格式: *.sqlite.gz (下载后自动解压缩)。
可选工具 JENDL-5 / EXFOR 使用单独的SQLite文件,并按需自动下载。 维护者摄取支持还包括 FENDL-3.2c 和 IRDFF-II 可选SQLite文件。 CODATA 捆绑在里面 nds.sqlite.
通过AI代理使用nds-mcp
- 注册服务器 在客户端中使用与相同的启动命令 快速开始 (参见 配置 用于Cursor、Claude Code、VS Code、Codex、OpenCode等)。
- 在聊天中提问。 代理商根据您的要求选择MCP工具;您不需要手动调用工具。
- 发现工作流程: 从...开始
nds_info(数据版本,可选数据库状态)和nds_catalog(安装了什么以及如何查询)。当一个物理量出现在多个来源中时,工具会返回 来源已标记 默认值;看见 跨源规则. - 下载: 主要的
nds.sqlite文件在第一次服务器启动时获取(请参阅快速启动)。可选SQLite文件在工具第一次需要时下载(请参见 可选数据库自动下载触发器). - 要求: Node.js 18+ 和那个
sqlite3命令行界面 你的PATH服务器通过SQLite命令行工具(不是嵌入式节点绑定)运行查询。
数据库
| SQLite文件 | 默认路径 | 下载行为 | 包括 |
|---|---|---|---|
nds.sqlite | ~/.nds-mcp/nds.sqlite | 服务器启动时自动下载 *(必填)* | AME2020质量+反应Q值;NUBASE2020核性能;电荷半径(IAEA+Li2021激光光谱);ENSDF(水平、伽马、衰变饲料、参考);TUNEL轻核共振/水平数据(A=3-20);CODATA基本常数 |
jendl5.sqlite *(可选)* | ~/.nds-mcp/jendl5.sqlite | 第一次调用JENDL-5工具时自动下载 | JENDL-五衰变数据+辐射光谱;JENDL-5点截面+ENDF-6插值定律 |
exfor.sqlite *(可选)* | ~/.nds-mcp/exfor.sqlite | 首次调用EXFOR工具时自动下载 | EXFOR实验数据点(SIG/MACS/…)+每个条目的元数据 |
fendl32c.sqlite *(可选,维护者摄入)* | ~/.nds-mcp/fendl32c.sqlite | 通过以下方式构建 nds-mcp ingest --fendl (状态在中可见 nds_info) | FENDL-3.2c评估了传输应用(光原子、中子、质子、氘核)的ENDF-6数据+嵌入的上游zip档案(MF/MT保留的原始ENDF超出了标准化到表格中的范围) |
irdff2.sqlite *(可选,维护者摄入)* | ~/.nds-mcp/irdff2.sqlite | 通过以下方式构建 nds-mcp ingest --irdff (状态在中可见 nds_info) | IRDFF-II评估了ENDF-6剂量测定中子数据+嵌入的上游zip档案(保留了MF/MT的原始ENDF,超出了归一化到表格中的范围) |
您始终可以通过设置来携带自己的文件 NDS_DB_PATH / NDS_JENDL5_DB_PATH / NDS_EXFOR_DB_PATH / NDS_FENDL_DB_PATH / NDS_IRDFF_DB_PATH.
术语表(缩略语和行话)
- 主控程序:模型上下文协议(代理/LLM使用的工具接口)。
- 国际原子能机构:国际原子能机构(许多上游核数据源和门户)。
- AME20202020年原子质量评估(原子质量、分离能、Q值)。
- NUBASE2020:核性质/衰变评估(半衰期、自旋、衰变模式、异构体)。
- 评价核结构数据库:评估的核结构数据文件(能级、伽马跃迁、衰变馈送)。
- TUNL:三角大学核实验室(轻核能级/共振表,A=3-20)。
- 表 5:日本评估核数据库v5(评估核数据)。
- 远征军:实验核反应数据(实验点+元数据)。
- FENDL-3.2c:聚变评估核数据库(以运输为重点的评估ENDF-6集)。
- irdf-II:国际反应堆剂量测定和聚变文件(以剂量测定为重点评估的ENDF-6套)。
- 国际科技数据委员会:建议的基本常数(科学和技术数据委员会)。
- ENDF-6: *评估核数据文件* 格式(纯文本评估核数据,组织成部分)。
- MAT/MF/MT:ENDF部分标识符: 垫子 (材料id), 中场 (“文件编号”,数据类别), MT (反应/数量id)。例子: MF=3 =逐点横截面; MT=1 =总计; MT=2 =弹性; MT=102 =(n,γ)捕获。
- XS公司:横截面。
- 二进制大对象:SQLite“二进制大对象”列存储原始字节。为了确保完整性,该项目将一些上游zip存档作为BLOB嵌入;
nds_query从不返回BLOB并禁止选择它们。 - SIG/MACS:EXFOR数量代码: 特别兴趣小组 =横截面; 雨衣 =麦克斯韦平均横截面。
可选数据库自动下载触发器
jendl5.sqlite呼叫时下载nds_get_radiation_spectrum,nds_list_available_targets,nds_get_reaction_info,nds_get_cross_section_table,或nds_interpolate_cross_section.exfor.sqlite呼叫时下载nds_search_exfor或nds_get_exfor_entry.- 这些可选的SQLite资产发布在此仓库的GitHub发布页面上(最新发布的资产)。
- 下载URL可以指向纯
.sqlite或压缩.sqlite.gz;服务器在需要时会自动弹出。 - 对于维护人员来说,
jendl5.sqlite应包括衰变表和XS表(jendl5_xs_meta/jendl5_xs_points/jendl5_xs_interp)在发布上传之前。
安装(可选)
全局安装(允许您使用 command: "nds-mcp" 在配置中):
npm install -g nds-mcp
nds-mcp来源:
git clone https://github.com/fkguo/nds-mcp.git
cd nds-mcp
pnpm install
pnpm build
node dist/index.js配置
这是一个 本地stdio MCP服务器.启动选项:
npx(无需安装):command: "npx",args: ["-y", "nds-mcp"]- 全局安装:
command: "nds-mcp",args: []
客户使用 mcpServers (相同的JSON)
克劳德代码(./.mcp.json),光标(./.cursor/mcp.json 或 ~/.cursor/mcp.json),克莱恩(cline_mcp_settings.json), Kimi代码命令行界面(~/.kimi/mcp.json),Qwen代码命令行界面(./.qwen/settings.json 或 ~/.qwen/settings.json).
{
"mcpServers": {
"nds-mcp": {
"command": "npx",
"args": ["-y", "nds-mcp"],
"env": {}
}
}
}VS代码(副本)
VS代码使用 .vscode/mcp.json 和一个 servers 按键:
{
"servers": {
"nds-mcp": {
"command": "npx",
"args": ["-y", "nds-mcp"]
}
}
}Codex CLI
添加 ~/.codex/config.toml:
[mcp_servers.nds-mcp]
command = "npx"
args = ["-y", "nds-mcp"]开源代码
添加 opencode.json (项目)或 ~/.config/opencode/opencode.json (全球):
{
"mcp": {
"nds-mcp": {
"type": "local",
"command": ["npx", "-y", "nds-mcp"],
"enabled": true,
"environment": {}
}
}
}樱桃工作室
设置→ MCP 服务器→ 添加服务器:
- 类型:
STDIO - 命令:
npx - 参数:
-y nds-mcp
通用标准指令(手动)
npx -y nds-mcp服务器通过stdin/stdout(MCP协议)进行通信。诊断消息将发送到stderr。
数据源
| 来源 | 表格 | 内容 |
|---|---|---|
| AME2020 | ame_masses, ame_reactions | 质量过剩、结合能、分离能、Q值 |
| NUBASE2020 | nubase | 半衰期、自旋/奇偶性、衰变模式、异构体 |
| 国际原子能机构(Angeli&Marinova 2013) | charge_radii | RMS电荷半径 |
| 李等2021 | laser_radii, laser_radii_refs | 每同位素参考的激光光谱电荷半径 |
| ENSDF | ensdf_levels, ensdf_gammas, ensdf_decay_feedings, ensdf_datasets, ensdf_references | 核结构:能级、伽马跃迁、衰变馈电 |
| TUNL | tunl_levels | 轻核(A=3-20)能级、共振宽度、同位旋、衰变模式(59种核素,2512个能级) |
JENDL-5腐烂 *(可选, jendl5.sqlite)* | jendl5_decays, jendl5_decay_modes, jendl5_radiation | 衰变数据+辐射光谱 |
JENDL-5-XS *(可选, jendl5.sqlite)* | jendl5_xs_meta, jendl5_xs_points, jendl5_xs_interp | 逐点横截面+ENDF-6插值定律 |
去角质 *(可选, exfor.sqlite)* | exfor_entries, exfor_points | 实验数据点(SIG/MACS/…) |
| 2022年结束 | codata_constants, codata_meta | 基本常数(值/不确定性/单位、精确/截断标志) |
质量、阈值和近阈值共振(重要)
nds_get_mass回报 AME原子质量 (中性原子;包括电子)。这是标准:许多Q值/阈值
计算可以直接用原子质量来完成,因为对于总Z相同的反应,电子质量在很大程度上会相互抵消。
- 如果你需要 核质量,通过转换
M_nuc = M_atom - Z*m_e + B_e/c^2(电子结合能B_e是否为eV标度
轻核;仅在需要亚keV精度时才包括它们)。
- 对于 未结合核/宽共振 (例如。
5He,5Li),单个实数“基态能量/质量”取决于
*共振参数惯例* (S矩阵极点vs本征相位质心vs横截面峰值)。将AME质量与液位混合 来自ENSDF/TUNL/评估的能量可以产生O(10-100keV)偏移,甚至“阈值高于阈值vs阈值低于阈值”的符号翻转。 在对此类系统进行阈值比较时,使用单一的自洽评估/约定。
工具
| 工具 | 说明 | ||
|---|---|---|---|
nds_info | 数据库元数据:数据版本、核素计数、文件哈希、可选数据库状态和构建/源元数据 | ||
nds_catalog | 目录安装的库和查询入口点(存在什么、在哪里查询以及使用哪些工具) | ||
nds_schema | 检查已安装库的SQLite模式(表/列/外键;索引可选) | ||
nds_query | 安全的结构化表查询生成器(过滤/排序/分页;无原始SQL)。强制BLOB排除+ *_points 护栏 | ||
nds_list_raw_archives | 列出FENDL/IRDFF的嵌入式上游ENDF-6 zip存档元数据(从不返回BLOB有效载荷) | ||
nds_check_update | 检查npm注册表以获取更新 nds-mcp 版本(只读;未执行更新) | ||
nds_find_nuclide | 按元素、Z和/或A查找核素(NUBASE2020) | ||
nds_get_mass | 原子质量数据:质量过剩、结合能/A、原子质量(AME2020) | ||
nds_get_separation_energy | 核子分离能:Sn、Sp、S2n、S2p(AME2020) | ||
nds_get_q_value | 反应Q值:Qa、Q2bm、Qep、Qbn等。(AME2020) | ||
nds_get_decay | 衰变信息:半衰期、自旋/奇偶性、衰变模式(NUBASE2020) | ||
nds_get_charge_radius | 核电荷半径与交叉源比较(`mode=best | all | compare`) |
nds_search | 按性质范围(半衰期、质量过剩)搜索核素 | ||
nds_query_levels | ENSDF+TUNL的核能水平(A≤20时自动合并 source 鉴别器) | ||
nds_query_gammas | ENSDF的伽马射线跃迁 | ||
nds_query_decay_feedings | ENSDF的β/EC衰变馈送模式 | ||
nds_lookup_reference | ENSDF/NSR参考书目 | ||
nds_get_radiation_spectrum | JENDL-5衰变辐射光谱(离散线+连续总结) | ||
nds_list_available_targets | 列出给定Z/弹丸的可用JENDL-5 XS目标(A/状态) | ||
nds_get_reaction_info | 列出一个目标的可用JENDL-5反应通道(mt/反应/e-range/点数) | ||
nds_get_cross_section_table | JENDL-5横截面表(`mode=raw | sampled`) | |
nds_interpolate_cross_section | 单入射能量下的ENDF-6 NBT/INT插值 | ||
nds_search_exfor | 搜索EXFOR数据点(支持 `quantity=SIG | MACS | ...`) |
nds_get_exfor_entry | 通过以下方式加载完整的EXFOR入口有效载荷 entry_id | ||
nds_get_constant | 按名称获取一个CODATA基本常数 | ||
nds_list_constants | 列出带过滤器和分页的CODATA常量 |
通用查询(模式+结构化查询)
使用 nds_schema 要查找表/列,请执行以下操作 nds_query 安全地查询它们。
安全规则由以下人员执行 nds_query:
- BLOB列永远不会返回,也不能显式选择(例如原始存档
content字段)。 - 对于大
*_points表中,您必须包含一个高选择性相等筛选器:
- where.eq.xs_id (评估的XS表),或 - where.eq.entry_id (EXFOR积分)
- 对于嵌入式原始存档表,您可以查询元数据列(例如。
rel_path,sha256,size_bytes)但不包括BLOB有效载荷本身。
- 为方便起见,请使用 nds_list_raw_archives 列出原始存档元数据(FENDL/IRDFF),而不处理表名。
跨源规则
对于存在于多个源/数据库中的相同物理可观测值,默认情况下,工具会从每个源返回源标记值。任何 recommended / best value是一个附加字段,不会替换或隐藏其他源值。
示例:电荷半径(新源标记输出)
使用 mode=compare 要获取所有源标记值以及显式的比较摘要:
[
{
"Z": 4,
"A": 10,
"mode": "compare",
"source_values": [
{
"source_name": "Li et al. laser spectroscopy",
"value_fm": 2.355,
"uncertainty_fm": 0.017,
"unit": "fm"
},
{
"source_name": "IAEA charge radii",
"value_fm": 2.355,
"uncertainty_fm": 0.017,
"unit": "fm"
}
],
"recommended_source": "Li et al. laser spectroscopy",
"recommended_r_charge_fm": 2.355,
"recommended_r_charge_unc_fm": 0.017,
"max_source_diff_fm": 0
}
]这反映了当前的跨源合同:默认情况下返回源标记值,并保留 recommended/best 作为附加字段。
示例:JENDL-5 Pb-208 n,gamma
原始积分表:
{
"tool": "nds_get_cross_section_table",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"mode": "raw",
"limit": 20
}
}单能量插值:
{
"tool": "nds_interpolate_cross_section",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"energy_eV": 0.0253
}
}可选的箝位插值(而不是超出范围的误差):
{
"tool": "nds_interpolate_cross_section",
"args": {
"Z": 82,
"A": 208,
"projectile": "n",
"mt": 102,
"energy_eV": 1000000000000,
"on_out_of_range": "clamp"
}
}一个目标的反应通道发现:
{
"tool": "nds_get_reaction_info",
"args": {
"Z": 82,
"A": 208,
"state": 0,
"projectile": "n"
}
}如有要求 mt/reaction 核素不存在,服务器返回 INVALID_PARAMS 随着 available_mts 和 available_reactions. 如果 Z 存在但已请求 A/state 没有XS行,服务器返回 INVALID_PARAMS 随着 available_targets (而不是通用未找到)。 用于常见的命名混淆(例如Li-6 n,a vs ENDF/JENDL n,t MT=105),错误有效载荷可以包括 suggested_reaction. nds_interpolate_cross_section 默认为 on_out_of_range="error" (当前行为)。随着 on_out_of_range="clamp",响应包括 clamped, requested_energy_eV, effective_energy_eV, tabulated_e_min_eV,以及 tabulated_e_max_eV. 对于 nds_search_exfor INVALID_PARAMS,有效载荷包括结构化指导:参数依赖/互斥规则、可复制的示例调用,以及 available_for_Z 概述(projectiles/quantities/A_values)如果可用。 横截面响应包括显式上下文字段: energy_unit="eV", cross_section_unit="b", jendl5_xs_version. 横截面响应还包括 mt (ENDF MT编号)和人类意义 reaction 标签+ reaction_description 因此用户/代理不需要记住MT代码。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
NDS_TOOL_MODE | standard | 工具暴露: standard (默认)或 full. full 额外暴露 nds_self_update (npm自我更新;需要显式 confirm 在工具参数中)。更新包后重新启动MCP客户端。 |
NDS_DB_PATH | ~/.nds-mcp/nds.sqlite | 数据库路径。设置为跳过自动下载。 |
NDS_JENDL5_DB_PATH | ~/.nds-mcp/jendl5.sqlite | 可选的JENDL-5数据库路径(如果未设置,则在首次使用时自动下载)。 |
NDS_JENDL5_DB_DOWNLOAD_URL | GitHub发布最新版本 | 覆盖自动下载URL jendl5.sqlite. |
NDS_EXFOR_DB_PATH | ~/.nds-mcp/exfor.sqlite | 可选的EXFOR数据库路径(如果未设置,则在首次使用时自动下载)。 |
NDS_EXFOR_DB_DOWNLOAD_URL | GitHub发布最新版本 | 覆盖自动下载URL exfor.sqlite. |
NDS_FENDL_DB_PATH | ~/.nds-mcp/fendl32c.sqlite | 可选FENDL-3.2c DB路径(维护者摄入/状态 nds_info). |
NDS_FENDL_DB_DOWNLOAD_URL | GitHub发布最新版本 | 覆盖自动下载URL fendl32c.sqlite. |
NDS_IRDFF_DB_PATH | ~/.nds-mcp/irdff2.sqlite | 可选IRDFF-II数据库路径(维护者摄入/状态 nds_info). |
NDS_IRDFF_DB_DOWNLOAD_URL | GitHub发布最新版本 | 覆盖自动下载URL irdff2.sqlite. |
NDS_DB_DOWNLOAD_URL | GitHub发布SQLite文件的最新自定义下载URL。 |
从源构建数据库
仅限维护者:MCP客户端从不调用这些命令。
看 RUNBOOK.md (仅限回购)用于完整的SOP和原始输入要求。JENDL-5最低版本:
# Decay sublibrary
scripts/download-jendl5-dec.sh ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz
pnpm run ingest:jendl5-dec -- --source ~/.nds-mcp/raw/jendl5-dec_upd5.tar.gz --output ~/.nds-mcp/jendl5.sqlite
# Neutron pointwise XS sublibrary (300K, full archive)
scripts/download-jendl5-xs.sh ~/.nds-mcp/raw/jendl5-n-300K.tar.gz
pnpm run ingest:jendl5-xs -- --source ~/.nds-mcp/raw/jendl5-n-300K.tar.gz --output ~/.nds-mcp/jendl5.sqlite--jendl5-xs 接受tar/tgz/zip存档、提取目录、单个ENDF文本文件(.dat / .endf / .txt,包括 .gz),以及json/jsonl源代码。 Zip提取使用系统 unzip;在运行摄取作业的主机上安装它。
释放可选数据库的上传流:
scripts/check-db.sh --only main,jendl5
scripts/release-phase2-dbs.sh --tag --repo fkguo/nds-mcp --jendl5 ~/.nds-mcp/jendl5.sqlite规则:首先构建sqlite,在本地验证,然后上传发布资产。
许可证
麻省理工学院
