内容
# mcp-molecules
[](https://github.com/laszlopere/mcp-molecules/actions/workflows/ci.yml)
[](https://pypi.org/project/mcp-molecules/)
[](https://www.python.org/)
[](LICENSE)
[](https://github.com/sponsors/laszlopere)
[](https://github.com/astral-sh/ruff)
[](https://mypy-lang.org/)
[](https://github.com/laszlopere/mcp-molecules/commits)
**用于人工智慧的原子和分子 — 可信赖的化学工具,通过权威数据计算并支持实时查询。**
原子组合成分子,而语言模型询问相关问题时,不应仅从记忆中回忆事实,而是应该**计算**出可信赖的答案。mcp-molecules 是一个不断成长的工具箱,用于处理化学元素和分子 — 离线、确定性,并由权威来源支持,如 NIST 原子质量和同位素组成数据库。
例如,它已经可以根据化学式返回其分子量:询问“葡萄糖(C₆H₁₂O₆)的重量是多少?”它会解析公式,查找每个元素在 NIST 数据中的信息,并计算摩尔质量,而不是猜测它。计划中还包括更多面向分子的工具。
你可以询问诸如:
- **"一摩尔葡萄糖的重量是多少?"** — 解析名称为 C₆H₁₂O₆ 并计算摩尔质量。
- **"Fe₂(SO₄)₃ 的质量有多少是铁?"** — 每个元素的质量百分比组成。
- **"咖啡因的摩尔质量是多少,包含不确定性?"** — 传播 NIST 标准不确定性。
- **"氯仿的质量光谱是什么样子的?"** — 自然氯同位素模式(M,M+2,M+4 … 峰值)。
- **"咖啡因的 [M+H]⁺ m/z 是多少?"** — 质子化离子的质量。
- **"哪个化合物的分子式是 C₉H₈O₄?"** — 公式 → 名称(阿司匹林及其异构体)。
- **"C₂H₆O 的异构体是什么?"** — 一个公式,多个名称(乙醇和二甲醚)。
## 它提供什么
- **`molecular_weight_calculator`** — **(当前示例)** 计算化学式的分子量(摩尔质量)。参数:
- `formula` — 元素符号,整数乘数,任意嵌套的括号,以及同位素标签 `D`(氘)和 `T`(氚)。示例:`H2O`,`C6H12O6`,`Ca(OH)2`,`Fe2(SO4)3`,`((CH3)2CH)2`,`D2O`,`Tc`。
- `unit` — `g/mol` **(默认)**,`kg/mol`,`Da`,`u` 或 `kDa`。
- `uncertainty` — 在正交中传播每个元素的 NIST 标准不确定性,并报告 `value ± sigma`。
- `monoisotopic` — 使用每个元素最丰富的同位素(质谱单同位素质量)代替标准原子量。
- `composition` — 返回每个元素的质量百分比组成。
- **`isotope_distribution`** — 计算公式的自然同位素模式(质谱仪看到的峰值),包括每个峰值的质量,m/z 和相对强度,以及单同位素和平均质量。参数:
- `formula` — 与 `molecular_weight_calculator` 相同的语法。
- `charge` — `0` **(默认)** 报告中性质量;非零 `n` 报告 m/z 为 `[M+nH]`/`[M-nH]` 离子。
- `threshold` — 丢弃低于此百分比的峰值 **(默认 0.1)**。
- `limit` — 返回的最大峰值,优先显示最强的峰值 **(默认 10)**。
- `grouping` — `unit` **(默认)** 折叠为名义整数质量;`exact` 保留每个已解决的同位素。
- **`find_chemical_compound`** — 按名称或分子式查找化合物。首先搜索捆绑的离线数据库(PubChem 子集)和可写的用户缓存,然后 — 除非禁用 — 在线回退(PubChem,Wikidata,以及设置 API 密钥时,EPA CompTox),缓存它获取的内容。参数:
- `query` — 名称(`aspirin`,`acetylsalicylic acid`)或公式(`H2O`,`C9H8O4`);公式在 Hill 系统中匹配。
- `by` — `auto` **(默认)** 猜测名称与公式,并回退到另一个方向;`name` 或 `formula` 指定方向。
- `limit` — 公式查找返回的最大化合物(异构体共享公式),首选名称。
默认启用在线回退;将 `MCP_MOLECULES_ONLINE` 设置为假值(`0`/`false`/`no`/`off`)以保持查找完全离线。EPA CompTox 源还需要 `MCP_MOLECULES_EPA_API_KEY` 中的免费 CCTE API 密钥;如果没有它,则跳过该源。
- **`info`** — 服务器可用性/版本/环境健康检查。
## 安装
```sh
uv tool install mcp-molecules
```
## 在 Claude Code 中注册
```sh
claude mcp add molecules -- mcp-molecules
```
## 开发
```sh
uv sync --all-extras
uv run mcp-molecules # 通过 stdio 运行服务器
uv run pytest # 测试
uv run ruff format . # 格式化
uv run ruff check . # 检查
uv run mypy # 类型检查
```
`.githooks/` 中的预提交钩子自动格式化和检查暂存的 Python 文件,因此 CI 格式门控不会被错过。每个克隆后启用它:
```sh
git config core.hooksPath .githooks
```
## 数据
元素质量来自 NIST 原子质量和同位素组成数据库(<https://physics.nist.gov/cgi-bin/Compositions/stand_alone.pl>),该数据库属于公共领域。数据作为 `mcp_molecules/data/nist_atomic_weights.json` 捆绑在软件包中。
## 赞助
赞助该项目将使其继续存在。如果它对您有用,请考虑 [赞助](https://github.com/sponsors/laszlopere)。
## 致谢
想法和灵感来自 Mátyás Mayer。想法很棒,灵感无价。
## 许可证
GPL-3.0-or-later。参见 [LICENSE](LICENSE)。捆绑的 NIST 数据是公共领域。