mcpField
T
tooluniverse-organic-chemistry

tooluniverse-organic-chemistry

github.com/mims-harvard其他1.8k273 次安装2 天前更新
代码仓库

关于 tooluniverse-organic-chemistry

面向有机化学问题求解的推理指南,涵盖反应与逆合成、光谱解析和立体化学,强调从机理和结构证据逐步推导。还介绍用 ToolUniverse 反应预测和分析工具交叉核验。

主要功能

  1. 01按反应位点与电子流推理
  2. 02结合条件判断反应类型与产物
  3. 03从产物进行逆合成分析
  4. 04综合分子式与光谱解析结构
  5. 05用 ToolUniverse 工具交叉核验

适用场景

  1. 01预测有机反应产物
  2. 02规划候选合成路线
  3. 03根据 IR 和 NMR 推断结构
  4. 04核对燃烧分析与不饱和度

MCP 相关

指南提及通过 MCP 或 SDK 使用分子式分析和不饱和度计算工具,并可用 RXNChemistry 工具交叉核验反应预测与逆合成。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mims-harvard/tooluniverse --skill tooluniverse-organic-chemistry

安装后在 Claude Code 中输入/tooluniverse-organic-chemistry确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

scripts/
chemistry_facts.py
crystal_validator.py
degrees_of_unsaturation.py
molecular_complexity.py
molecular_formula.py
smiles_verifier.py
stereochem_tracker.py

详细介绍

有机化学推理指南

本指南讲解的是如何思考有机化学问题,而不是应该记住什么。


1. 预测反应产物——推理过程

不要根据名称反应进行模式匹配,而要从基本原理出发推理:

第 1 步——找出反应性最强的位置

观察每个分子,并思考:电子密度在哪里?

  • 富电子位点(亲核试剂):N、O、S 上的孤对电子;π 键(C=C、芳香环);碳负离子;烯醇盐
  • 缺电子位点(亲电试剂):与电负性原子相连的碳(C=O、C-X);碳正离子;具有空轨道的原子

反应会发生在亲核性最强的位点与亲电性最强的位点相遇之处。

第 2 步——这是哪种成键/断键方式?

三种基本类别:

  • 离子反应(极性反应):电子成对移动。一种物质提供电子,另一种接受电子。溶液化学中最常见。
  • 自由基反应:电子逐个移动。留意:加热 + 过氧化物、紫外光(hv)、NBS 或自由基引发剂。
  • 周环反应:电子在协同的环状过渡态中移动。留意:没有其他试剂时的加热或光照、二烯 + 亲二烯体、σ 迁移反应。
第 3 步——电子如何流动?

从亲核试剂向亲电试剂画箭头。思考:

  • 哪个原子的轨道重叠最佳?
  • 是否必须进行背面进攻(SN2),还是亲核试剂可以从任一面靠近(SN1)?
  • 对 C=C 的加成:哪个碳原子与亲电试剂结合?(马氏规则 = 形成取代程度更高的碳正离子中间体;反马氏规则 = 自由基反应或硼氢化)
  • 对 C=O 的加成:亲核试剂进攻碳原子(Bürgi-Dunitz 角约为 107 度)。
  • 对 E2 消除:碱的体积决定区域选择性。位阻大的碱(KOtBu、LDA、DBU)倾向于生成霍夫曼产物(取代程度较低的烯烃),因为它们会夺取位阻较小的质子。体积小的碱(NaOEt、KOH、NaOMe)倾向于生成扎伊采夫产物(取代程度较高、稳定性更高的烯烃)。预测区域选择性前,务必先检查碱的体积。
  • 对多步合成中的离子追踪:每一步都写出完整的离子方程式。追踪每种阳离子和阴离子在各步转化中的变化——识别哪些物质溶解、哪些沉淀、形成了哪些络合物,以及哪些物质仍留在溶液中。每一步都要确认:所有离子都追踪到了吗?质量守恒吗?使用溶解度规则(Ksp)和络合物稳定常数(Kf)预测哪些物种会留存。
第 4 步——反应的驱动力是什么?

每个反应都需要热力学上的理由才能进行:

  • 离去基团离去:良好的离去基团(I > Br > Cl > F;甲磺酸酯、三氟甲磺酸酯)在离去后能稳定自身
  • 环张力释放:环氧化物开环、环丙烷开环
  • 芳香性增加:互变异构为芳香形式、消除形成共轭体系
  • 形成强键:C-O、C-F、H-O 键很强;形成这些键的反应更有利
  • 气体逸出:CO2、N2 或 H2O 的逸出推动平衡正向移动
第 5 步——检查产物是否合理

给出答案前:

  • 所有原子的价态都正确吗?(C=4、N=3、O=2、H=1、卤素=1)
  • 分子式守恒吗?数清两侧的每个原子。
  • 产物在热力学上合理吗?(不要无故提出反芳香性产物或张力较大的小环)
  • 不饱和度是否合理?(DoU = (2C + 2 + N - H - X) / 2;苯环 = 4 DoU)
命名反应决策树

根据试剂/条件识别反应类型,然后应用其产物拓扑:

试剂/条件模式反应类型产物逻辑
RMgBr(或 RLi)+ ArX + Pd 或 Ni 催化剂Kumada 偶联R 替换 Ar 上的 X;过量 RMgBr 会替换所有 X
Ph3P=CHR + 醛/酮Wittig 反应C=C 替换 C=O;非稳定叶立德 → Z-烯烃;稳定叶立德(酯/CN)→ E-烯烃
亚砜 + 强亲电试剂(Tf2O、Ac2O)Pummerer 重排S 的氧化态降低;α-碳与亲核试剂/离去基团形成新键
烯丙基乙烯基醚受热(或 1,5-二烯-3-醇 + 碱)[3,3]-σ迁移反应(oxy-Cope/Claisen)重新画出六元椅式过渡态;在 1,6 位形成新的 σ 键;旧的 3,4 键断裂
二烯 + 亲二烯体,受热Diels-Alder 反应[4+2] 环加成;立体化学遵循 endo 规则;顺式亲二烯体取代基保持顺式
ArX + 过量有机金属试剂(无催化剂)亲核芳香取代或苯炔反应每个 X 都被亲核试剂替换;根据当量数确定取代程度
逆合成分析

从产物出发反向推断起始原料,识别关键键的形成方式:

  1. Robinson 成环反应(产物为稠合或带取代基的 2-环己烯酮体系):

    • 断开烯酮羰基 α 位的 C-C 键 → 得到两个片段:1,3-二羰基化合物 + 甲基乙烯基酮(或等效的 Michael 受体)
    • 1,3-二羰基化合物(例如 2-甲基-6-氧代环己烷甲酸乙酯)是起始原料
    • 反应机理:Michael 加成,然后发生分子内羟醛缩合
  2. 分子内羟醛反应(开放链底物在 KOH/碱作用下形成稠环):

    • 产物为稠合双环烯酮 → 起始原料为 1,5-二酮(或 1,n-二酮)
    • 碳原子计数规则:产物环大小 = 两个羰基之间的碳原子数 + 1
    • 例如:用 KOH 制备六氢萘-2-酮 → 起始原料应为 2-(3-氧代戊基)环己酮,而不是丁基链
  3. 一般断键启发法——识别新键,再选择合适的反应:

    • 新的 C-C 键:羟醛反应、Claisen 反应、Michael 加成、Wittig 反应、Grignard 反应、Diels-Alder 反应
    • 新的 C-O 键:环氧化、水合、氧化
    • 新的 C-N 键:还原胺化、Gabriel 合成、酰胺偶联
基于 ML 的反应/逆合成预测(用于交叉验证,而非替代)

RXNChemistry_predict_reaction(正向预测:从反应物预测最可能的 产物,使用 IBM RXN for Chemistry ML 模型)和 RXNChemistry_predict_retrosynthesis (从目标产物预测候选合成路线)可用于交叉验证基于基本原理推导的 答案,尤其适用于上述命名反应决策树以外的反应。请先按照本技能中的 步骤推理反应机理——这些工具用于检查提出的产物/路线是否合理,而不是替代理解 产物形成的原因。

需要 RXN4CHEMISTRY_API_KEY——已进行实时验证:未设置密钥时,这两个 工具都不会出现在 tu list 中,也不会加载(与 ToolUniverse 中其他位置的 Addgene/USPTO 有相同的刻意密钥门控模式);设置密钥以启用工具,不要将它们缺失 视为错误。这两项操作都是异步的(通过 poll_interval/max_wait_time 参数轮询), 因为底层模型以排队任务的方式运行,而不是同步 API 调用。

产物预测策略(分步进行)
  1. 反应位点:标记所有反应物中的每个亲核中心和亲电中心
  2. 反应类型:将试剂/条件模式与上述决策树进行匹配
  3. 键的变化:明确列出哪些键断裂、哪些键形成(逐一写出)
  4. 区域化学:Markovnikov(阳离子稳定性)与 anti-Markovnikov(自由基/BH3);对于 ArX,每个离去基团都是独立的反应位点
  5. 立体化学:Wittig 的 E/Z 由叶立德类型决定;SN2 发生构型反转;[3,3] 为同面-同面(椅式过渡态);Pummerer 保留硫的连接关系
  6. 命名产物:将最终结构转换为 IUPAC 名称;对于联芳基体系,按系统规则计算苯基数量(例如,三个相连的苯基 = terphenyl,而不是 triphenylbenzene)
根据反应确定结构
  • 当烃在“常规条件”下与 Br2 反应(无 UV、无催化剂)时:这是离子型加成(加到张力环或 C=C 上),而非自由基取代
  • 如果产物中每个发生反应的碳原子恰好对应 1 个 Br:考虑张力环丙烷开环或跨 C=C 加成
  • Br2 会使张力三元环发生离子型开环,而非自由基取代
  • 当金属溶解在其自身高价盐的溶液中时,产物为中间氧化态(归中反应),而非金属置换
燃烧分析策略
  • 首选:使用 MolecularFormula_analyze 工具(通过 MCP/SDK),并设置 sample_g、CO2_g、H2O_g 和 molar_mass 参数。备用方案:直接运行 molecular_formula.py。
  • 首选:使用带有 formula 参数的 DegreesOfUnsaturation_calculate 工具。备用方案:运行 degrees_of_unsaturation.py --formula <result>。
  • 将 DoU 与任何官能团测试结果(Br2 褪色、KMnO4 等)结合,以缩小结构范围

2. 光谱解析——解题策略

不要查阅化学位移表。请改用以下系统方法:

从分子式开始

如果已知分子式,先计算不饱和度。这能立即告诉你:

  • DoU = 0:无环、无双键(饱和、开链)
  • DoU = 1:一个环或一个双键
  • DoU = 4:几乎可以确定有一个苯环(3 个双键 + 1 个环)
  • DoU = 2:可能是一个三键、两个双键,或一个环 + 一个双键

仅凭这一个数值,就能在查看任何光谱之前排除大量结构类别。

IR:先找明显的峰

不要试图指认每个峰。请先问三个问题:

  1. 在 2500-3500 附近是否有宽吸收峰? 如果有:可能是 O-H(非常宽)或 N-H(较尖锐;伯胺有时会出现两个峰)。
  2. 在 1650-1750 附近是否有强而尖锐的峰? 如果有:可能是 C=O。其具体位置可判断类型(酯 ~1735、酮 ~1715、酸 ~1710、酰胺 ~1680)。
  3. 在 2100-2300 附近是否有峰? 如果有:可能是三键(C-三键-C 或 C-三键-N)或累积双键。

只要能回答这三个问题,就能识别主要官能团。其他信息都只是辅助确认。

1H NMR:每个信号提供三项信息

每个信号都能告诉你三件事——请充分利用:

  1. 化学位移(位置):该质子受到多大程度的去屏蔽?靠近电负性原子的质子会向低场移动(ppm 较高)。芳香质子为 6.5-8.5 ppm;烷基质子为 0.8-1.7 ppm;与 C=O 相邻的质子为 2.0-2.7 ppm。
  2. 多重性(裂分模式):该质子有几个相邻质子?n 个相邻质子 = n+1 个峰。三重峰表示有 2 个相邻 H;四重峰表示有 3 个相邻 H。这能反映连接关系。
  3. 积分(面积):该信号代表多少个质子?比例比绝对数值更重要。对于 C3 化合物,3:2:1 的积分比强烈暗示存在 CH3、CH2、CH。
13C NMR:统计对称性
  • 统计不同碳信号的数量,并与分子式比较。
  • 信号数少于碳原子数 = 分子具有对称性(存在等价碳)。
  • 羰基碳出现在 160 ppm 以上。芳香族/烯烃碳:100-160 ppm。sp3 碳:0-90 ppm。
组合策略

没有任何一种谱图能单独给出答案。要综合分析:

  1. 分子式给出 DoU(结构约束)
  2. IR 确定官能团类别(C=O?O-H?N-H?)
  3. 13C 告诉你有多少种独特的碳环境
  4. 1H 告诉你连接关系(通过裂分)和氢原子数(通过积分)
  5. 提出一个与所有数据都一致的结构
  6. 验证:你提出的结构能否预测每个观测到的信号?

3. 立体化学——如何进行三维思考

找出立体中心

立体中心是一个连接着四种不同取代基的碳原子。找出它们的方法:

  • 查看分子中的每个 sp3 碳
  • 检查:连接在它上面的四个基团是否各不相同?(沿每条路径向外追踪——如果两条路径在任何一点变得相同,这两个基团就相同)
  • 环上的碳也要计算——如果沿环朝相反方向延伸的两条“环路径”在任何一点不同,它们就是不同的取代基
确定 R/S
  1. 按 CIP 优先级为四个取代基排序(原子序数越大,优先级越高)
  2. 若优先级相同:沿链移至下一个原子,再次比较
  3. 调整分子方向,使最低优先级的基团(#4)背向你
  4. 按 1-2-3 的优先级顺序观察:顺时针 = R,逆时针 = S
  5. 速记:如果图中 #4 已经背向你,直接读取排列即可。如果 #4 朝向你,则读取排列后将答案反转。
预测反应的立体化学结果

思考反应机理:

  • SN2:立体中心发生构型反转(背面进攻)。总是如此。
  • SN1:外消旋化(平面的碳正离子中间体受到两面进攻)。预计比例约为 50:50,或略有偏向。
  • E2:需要反式共平面几何构型(H 与离去基团相隔 180 度)。这会限制形成的烯烃几何构型。
  • 烯烃加成:同面加成(硼氢化、催化加氢)与反面加成(溴加成、环氧化后开环)
  • 带有 α-立体中心的羰基加成:Felkin-Anh 模型——亲核试剂从与 α-碳上最大取代基相反的一侧进攻
立体异构体之间的关系
  • 对映异构体:不能重叠的镜像。除旋光性外,物理性质相同。
  • 非对映异构体:不是镜像的立体异构体。物理性质不同——可以分离。
  • 内消旋化合物:具有立体中心,但整体因内部镜面对称面而不具手性。

4. 打包脚本

这些可直接运行的脚本位于 skills/tooluniverse-organic-chemistry/scripts/。 请通过 Bash 工具使用它们,无需手动计算——它们会验证输入并打印校验信息。

chemistry_facts.py — 化学与物理事实参考

用于查询容易记错的事实。请查询此脚本,而不是猜测。 包含三个类别:allotropes、point_group、common_reagents。不添加额外参数运行,即可列出某个类别中的所有条目。

python chemistry_facts.py --type allotropes --element P
python chemistry_facts.py --type point_group --molecule "benzene"
python chemistry_facts.py --type common_reagents --reagent "LiAlH4"
python chemistry_facts.py --type allotropes          # list all elements

**覆盖范围:**P、C、S、O 的同素异形体。15 种分子的点群(水的 C2v 至 H2 的 D∞h)。24 种试剂(LiAlH4 至 DMDO),包含全名、功能、选择性、立体化学以及关键区别说明。

**使用时机:**任何关于同素异形体、分子对称性/点群或试剂选择性的问题。报告试剂信息前,务必先查询。

crystal_validator.py — 晶体结构密度验证器

首选:使用 CrystalStructure_validate 工具(通过 MCP/SDK),并提供晶胞参数(a、b、c、alpha、beta、gamma、Z、MW、density)。备用方案:直接运行 crystal_validator.py。

通过根据晶胞参数计算理论密度并与报告值比较,验证晶体结构数据。标记出可能表明已发表数据集中存在错误的不一致之处。

支持全部七种晶系(立方、四方、正交、六方、三方、单斜、三斜)。

python crystal_validator.py --a 5.43 --b 5.43 --c 5.43 --Z 8 --MW 28.085 --density 2.329
python crystal_validator.py --datasets datasets.json   # batch mode: JSON array of datasets

角度默认为 90deg。输出:晶系、体积、计算密度、误差百分比、判定结果(OK/WARNING/MISMATCH)。 批处理模式可比较多个数据集以找出异常值。密度公式:d = (Z * MW) / (V * Na)。

使用场景: 晶体结构验证、密度一致性检查、查找错误数据集。

stereochem_tracker.py — 跟踪反应序列中的立体化学

跟踪一系列反应过程中立体中心的 R/S 构型,并预测每一步的立体化学结果。

python stereochem_tracker.py --start R --reactions "SN2, oxidation, SN1"

支持的反应: SN2(反转)、SN1(外消旋)、E2/E1(消除)、还原/氧化/氢化/硼氢化/环氧化(保持构型)、mitsunobu(反转)、double_inversion(保持构型)、racemization/epimerization/enolization(外消旋)。

使用场景: 跟踪多步合成中的手性,验证净构型保持或反转。

smiles_verifier.py — SMILES 分子性质验证器(不使用 RDKit)

首选:使用 SMILES_verify 工具(通过 MCP/SDK),并提供 smiles 和可选的约束参数(mw、heavy_atoms、valence_electrons、total_atoms、formal_charge)。备用方案:直接运行 smiles_verifier.py。

无需外部依赖即可解析 SMILES 字符串,并计算分子量、重原子数、价电子数、总原子数和形式电荷。随后可选择根据用户提供的约束进行检查。每次设计或给出 SMILES 答案时都要使用此工具。

python smiles_verifier.py --smiles "CC(C)(C(=N)N)N=NC(C)(C)C(=N)N" --mw 198.15 --heavy_atoms 14 --valence_electrons 80

约束标志: --mw(容差 0.5)、--heavy_atoms、--valence_electrons、--total_atoms、--formal_charge

使用场景: 报告 SMILES 答案前务必进行验证。可捕获分子量、原子数和电子数错误。

degrees_of_unsaturation.py — 不饱和度(DoU)计算器

首选:使用 DegreesOfUnsaturation_calculate 工具(通过 MCP/SDK),并提供 formula 或各原子数量参数。备用方案:直接运行 degrees_of_unsaturation.py。

根据分子式字符串或各原子数量计算 DoU = (2C + 2 + N − H − X) / 2。 支持所有卤素(F、Cl、Br、I),并注明 O 和 S 不影响 DoU。 输出完整计算过程、结构解释和往返验证。

python degrees_of_unsaturation.py --formula C6H6
python degrees_of_unsaturation.py --C 10 --H 14 --O 2 --N 1

输出:原子数量、逐步公式、结果、结构解释、非整数 DoU 警告。

molecular_formula.py — 燃烧分析与分子式分析

首选:使用 MolecularFormula_analyze 工具(通过 MCP/SDK),并提供燃烧分析或分子式参数。备用方案:直接运行 molecular_formula.py。

一个脚本包含两种模式。

模式 1:燃烧分析 — --sample_g、--CO2_g、--H2O_g、可选的 --molar_mass 模式 2:分子式分析 — --formula C6H6(分子量、DoU、元素组成)

python molecular_formula.py --sample_g 0.2 --CO2_g 0.4874 --H2O_g 0.1998 --molar_mass 78
python molecular_formula.py --formula C6H6

5. 计算流程

始终使用 Bash 工具将内容作为 Python 脚本执行——不要在脑中计算。优先使用捆绑脚本(molecular_formula.py、degrees_of_unsaturation.py),而不是从头编写代码。

关键公式(捆绑脚本未涵盖的情况,请编写并运行 Python):

  • 燃烧分析:moles_C = CO2_g / 44.01;moles_H = H2O_g / 18.015 * 2;根据质量差求 moles_O。比值 → 最大公约数 → 实验式。倍数 = MM / 实验式_MM。
  • 不饱和度:(2C + 2 + N - H - X) / 2。O 和 S 不影响计数。
  • 限量试剂:对每种试剂计算 equiv = mass / (MW * stoich_coeff);equiv 最小的试剂为限量试剂;产率 = min_equiv * product_stoich * product_MW。

6. 何时推理,何时查找资料

对以下内容进行推理(不要查找资料):
  • 反应产物和机理
  • 光谱解析(综合已有数据)
  • 立体化学结果
  • 不饱和度
  • 反应在热力学上是否有利
对以下内容使用捆绑脚本进行计算:
  • 晶体结构密度验证:首选:CrystalStructure_validate 工具。备用:crystal_validator.py(绝不要手动计算晶胞体积)
  • 多步合成中的立体化学跟踪:stereochem_tracker.py(跟踪 SN2、SN1 等反应过程中的 R/S)
  • 不饱和度:首选:DegreesOfUnsaturation_calculate 工具。备用:degrees_of_unsaturation.py
  • 燃烧分析和分子式分析:首选:MolecularFormula_analyze 工具。备用:molecular_formula.py
  • SMILES 验证(MW、重原子、价电子):首选:SMILES_verify 工具。备用:smiles_verifier.py(始终验证 SMILES 答案)
对以下内容使用工具查找资料:
  • 元素的同素异形体(数量、名称、性质):chemistry_facts.py --type allotropes --element X
  • 分子点群和对称元素:chemistry_facts.py --type point_group --molecule "name"
  • 试剂的功能、选择性或关键区别:chemistry_facts.py --type common_reagents --reagent "name"
  • 特定物理常数(沸点、pKa 值、溶解度):先使用 PubChem_get_CID_by_compound_name,再使用 PubChem_get_compound_properties_by_CID
  • 系统命名法(IUPAC)名称 → 结构:OPSIN_name_to_structure(参数 name)——确定性解析器,可返回 SMILES/InChI/InChIKey,是将系统命名法名称(例如“2-acetoxybenzoic acid”)转换为结构的首选工具,之后可用 SMILES_verify 验证。商品名或俗名会返回 parsed=false → 改用 PubChem_get_CID_by_compound_name。
  • 化合物是否存在及其规范 SMILES/InChI:PubChem_get_CID_by_compound_name 或 PubChem_get_compound_properties_by_CID
  • 类药性、生物活性数据、测定结果:ChEMBL_get_molecule 或 ChEMBL_search_molecules
  • 代谢物通路和生物学背景:HMDB_get_metabolite
晶体结构验证策略:

提取每组数据的晶胞参数、Z、MW 和密度。批量运行 crystal_validator.py --datasets datasets.json。百分比误差最大的就是错误所在。常见错误:Z 值错误、参数互换、角度转录错误。

根据约束进行分子设计(SMILES 设计):
  1. 从约束条件(MW、重原子、VE)出发,估算分子式
  2. 构建 SMILES,然后始终进行验证:python smiles_verifier.py --smiles "..." --mw X --heavy_atoms Y --valence_electrons Z
  3. 如果任何约束未通过,则修改并重新运行,直到全部通过
推理后验证模式:
  1. 对问题进行推理,得出一个初步答案
  2. 使用 PubChem 验证已知化合物;使用 Python 计算验证数值答案
  3. 对于数值答案:回答前始终使用脚本进行计算

评论

支持 Markdown