mcpField
C
ChemCP

ChemCP

本地服务
github.com/scottmreed科研与教育237 周前更新

关于 ChemCP

ChemCP 是面向化学研究和分子查看场景的 MCP App,可将 SMILES 转为交互式二维结构图。它使用 RDKit.js 计算分子属性,并在支持 MCP Apps 的聊天宿主中显示。

主要功能

  1. 01从 SMILES 渲染二维结构图
  2. 02计算分子量、LogP 等属性
  3. 03在交互界面中输入 SMILES
  4. 04提供示例分子供查看
  5. 05在聊天中显示分子结构

适用场景

  1. 01查看阿司匹林等分子的二维结构
  2. 02输入 SMILES 检查结构与属性
  3. 03在聊天中并排比较分子

MCP 相关

ChemCP 注册 `render_molecule` 工具,并提供 MCP App 界面资源。MCP 客户端调用该工具后,界面使用 RDKit.js 渲染结构和分子属性。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"scottmreed-chemcp": {
"command": "npx",
"args": [
"-y",
"chemcp"
]
}
}
}
启动命令npx -y chemcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmchemcp1.1.0

工具

1

收录的工具列表 · 更新于 2 周前

参数类型必填说明
smilesstring是分子的 SMILES 表示法(例如,乙醇为 'CCO',苯为 'c1ccccc1',阿司匹林为 'CC(=O)Oc1ccccc1C(=O)O')

详细介绍

ChemCP - 分子查看器 MCP App

这是一个 MCP App,可使用 RDKit.js 根据 SMILES 表示法渲染交互式 2D 分子结构图。让 AI 助手为你展示任意分子,ChemCP 就会在聊天中直接显示其结构及计算得出的属性。

你将获得

  • 根据任何有效的 SMILES 字符串渲染 2D 结构图
  • 分子属性 — 分子量、LogP、氢键供体/受体、TPSA、可旋转键、环等
  • 交互式 UI — 输入自己的 SMILES、点击示例分子,无需离开对话
  • 由 RDKit 提供支持(制药和生物技术行业使用的同款化学信息学工具包)

如需更多功能,请试试:ChemIllusion

前置条件

  • Node.js 18+ — 在此下载
  • Claude Desktop(推荐)或付费版 Claude.ai 计划(Pro/Max/Team)——交互式分子查看器需要支持 MCP Apps 的宿主

注意:Claude Desktop 完整支持 MCP Apps。Claude.ai 自定义连接器仍处于实验阶段,可能存在阻止 RDKit.js 加载的 CSP 限制。如果你在 Claude.ai 中看到“RDKit.js failed to load”,请改用 Claude Desktop。


设置:Claude Desktop

Claude Desktop 开箱即支持本地 MCP 服务。无需隧道或远程托管。

第 1 步:安装 ChemCP
npm install -g chemcp

验证安装是否成功:

chemcp --help

(这会通过 stdio 启动 MCP 服务——你可以按 Ctrl+C 停止它。)

第 2 步:配置 Claude Desktop

打开 Claude Desktop 配置文件:

操作系统路径
macOS~/Library/Application Support/Claude/claude_desktop_config.json
Windows%APPDATA%\Claude\claude_desktop_config.json

在 mcpServers 部分添加 ChemCP:

{
  "mcpServers": {
    "chemcp": {
      "command": "npx",
      "args": ["chemcp"]
    }
  }
}

提示:如果你已经配置了其他 MCP 服务,只需在现有的 "mcpServers" 对象中添加 "chemcp" 条目即可。

第 3 步:重启 Claude Desktop

退出并重新打开 Claude Desktop。你应该能在 MCP 工具列表中看到 ChemCP(点击聊天输入框底部的锤子图标)。

第 4 步:试用

输入类似这样的消息:

  • “显示阿司匹林的分子结构”
  • “渲染咖啡因的结构”
  • “显示 SMILES:CC(=O)Oc1ccccc1C(=O)O”

Claude 会调用 render_molecule 工具,并在对话中显示交互式分子查看器,其中包含 2D 结构和分子属性。


设置:Claude.ai(网页)——实验性

⚠️ 实验性:Claude.ai 自定义连接器对 MCP Apps 的支持仍处于实验阶段。CSP 限制可能会阻止 RDKit.js 加载。为获得最佳体验,请使用 Claude Desktop。

Claude.ai 通过自定义连接器支持远程 MCP 服务。这需要付费 Claude 计划(Pro、Max 或 Team)。

第 1 步:安装并启动服务
npm install -g chemcp

以 HTTP 模式启动:

chemcp --http

这会在 http://localhost:3001/mcp 启动服务。

第 2 步:通过隧道公开服务

在单独的终端中,创建一条通往本地服务的公共隧道:

npx cloudflared tunnel --url http://localhost:3001

复制生成的 URL(例如,https://random-name.trycloudflare.com)。

第 3 步:在 Claude.ai 中添加自定义连接器
  1. 前往 claude.ai
  2. 点击你的个人资料图片(左下角)
  3. 前往设置 > 连接器
  4. 点击添加自定义连接器
  5. 粘贴隧道 URL + /mcp(例如,https://random-name.trycloudflare.com/mcp)
  6. 为其命名,例如“ChemCP”
  7. 保存
步骤 4:试用

开始新的聊天,并让 Claude 为你展示一个分子:

  • "Show me the structure of ibuprofen"
  • "What does benzene look like? Render it for me"
  • "Render SMILES: CN1C=NC2=C1C(=O)N(C(=O)N2C)C"

交互式分子查看器会直接在聊天中渲染。


示例提示词

连接后,试试这些:

提示词会发生什么
"Show me aspirin"渲染阿司匹林的 2D 结构和性质
"Render SMILES: CCO"根据 SMILES 代码渲染乙醇
"What's the structure of testosterone?"Claude 提供 SMILES 并渲染分子
"Compare the structures of caffeine and theobromine"并排渲染这两种分子

SMILES 示例

分子SMILES
乙醇CCO
苯c1ccccc1
阿司匹林CC(=O)Oc1ccccc1C(=O)O
咖啡因CN1C=NC2=C1C(=O)N(C(=O)N2C)C
睾酮CC12CCC3C(C1CCC2O)CCC4=CC(=O)CCC34C
葡萄糖OC[C@H]1OC(O)[C@H](O)[C@@H](O)[C@@H]1O

故障排除

“我看不到分子查看器,只看到文本”

交互式 UI 仅适用于支持 MCP Apps 的宿主:

  • Claude Desktop(最新版本)
  • Claude.ai(网页端,使用自定义连接器)

如果你使用的是 Claude Code(CLI)或其他不支持 MCP Apps 的 MCP 客户端,工具仍会以文本形式返回 SMILES 数据,但不会显示可视化渲染。

“找不到工具”或未列出 ChemCP
  • Claude Desktop:编辑配置文件后,请确保重启了应用。检查 npx chemcp 是否能在终端中运行。
  • Claude.ai:确保隧道仍在运行,且连接器 URL 以 /mcp 结尾。
“从 CDN 加载 RDKit.js 失败”

Claude.ai 自定义连接器:使用自定义连接器时,CSP 限制可能会阻止 RDKit.js 加载。解决方案:改用 Claude Desktop,它完整支持 MCP Apps。

Claude Desktop:如果 RDKit.js 加载失败,通常意味着:

  • 没有互联网连接(RDKit.js 从 unpkg.com 加载,约 8 MB)
  • CDN 被网络防火墙拦截
  • 首次加载超时——重新加载聊天并重试
Node.js 版本

ChemCP 需要 Node.js 18 或更高版本。使用以下命令检查:

node --version

面向开发者

本地开发
git clone https://github.com/scottmreed/ChemCP.git
cd ChemCP
npm install
npm run build
npm run serve:http    # HTTP mode for testing
项目结构
文件用途
server.tsMCP 服务——注册 render_molecule 工具并提供 UI 资源
src/mcp-app.htmlHTML 入口点,从 CDN 加载 RDKit.js
src/mcp-app.tsxReact UI——初始化 RDKit WASM,根据 SMILES 渲染 SVG,并计算描述符
bin/chemcp.jsnpm 二进制入口点
dist/构建输出(编译后的服务和打包成单文件的 HTML)
工作原理
  1. Claude 使用 SMILES 字符串调用 render_molecule 工具
  2. 服务将 SMILES 返回给 MCP App UI
  3. UI 在浏览器中加载 RDKit.js(WebAssembly)
  4. RDKit 解析 SMILES 并渲染 2D SVG 结构图
  5. 在客户端计算分子描述符(MW、LogP、TPSA 等)
  6. 所有内容都显示在聊天中的沙盒 iframe 内
使用 basic-host 测试

ext-apps 仓库包含用于 MCP App 开发的测试宿主:

# Terminal 1 — run ChemCP in HTTP mode
npm run serve:http

# Terminal 2 — run the test host
git clone https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps/examples/basic-host
npm install
SERVERS='["http://localhost:3001/mcp"]' npm start
# Open http://localhost:8080

链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。