mcpField
M
Molecule Visualizer MCP Server

Molecule Visualizer MCP Server

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

关于 Molecule Visualizer MCP Server

面向 Claude Desktop 等 LLM 应用的化学 MCP 服务,可将分子名称或 SMILES 字符串转换为二维图像并提供分子属性,也包含常见分子数据库。

主要功能

  1. 01按名称或 SMILES 生成二维分子图像
  2. 02提供分子式、分子量及原子和键数量
  3. 03计算包括 LogP 在内的 Lipinski 属性
  4. 04查询常见分子及其 SMILES 资源
  5. 05可选显示原子编号并设置图像尺寸

适用场景

  1. 01在 Claude Desktop 中查看分子结构
  2. 02查询分子的基本属性
  3. 03为教学内容制作分子示意图
  4. 04查找常见分子的 SMILES

MCP 相关

向 MCP 客户端提供分子可视化和属性工具,以及常见分子资源。图像可作为 MCP Image 对象或内嵌图像的 Markdown 返回。

配置

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

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Molecule Visualizer MCP 服务

Molecule Visualizer Python RDKit License

一个 Model Context Protocol (MCP) 服务,提供使用 SMILES 代码可视化分子和获取分子属性的工具。此服务可与 Claude Desktop 等大模型应用集成,提供面向化学领域的功能。

目录

概述

Molecule Visualizer MCP 服务为大模型应用提供以下功能:

  1. 根据 SMILES 字符串生成分子的二维可视化图像
  2. 计算并显示分子属性
  3. 按名称访问常见分子数据库

这为探索分子结构、分析化学属性,以及为教育内容或研究辅助生成分子可视化图像等化学相关场景提供了支持。

截图

在 Claude 中使用 MCP 服务

MCP in Claude

Claude 使用 Molecule Visualizer MCP 服务显示分子结构。

使用 SMILES 可视化分子

Visualizing with SMILES

直接提供 SMILES 代码以生成分子可视化图像。

与 Web 访问方式比较

Claude with Web Access

尝试通过 Web 访问实现类似的可视化并未成功,因为 Claude 无法从互联网获取正确的 SMILES 代码。若添加 pubchempy 和 chembl 客户端,MCP 可提供更可靠的化学功能。

功能

分子可视化
  • 根据 SMILES 字符串或常见名称生成分子的二维可视化图像
  • 返回标准的 MCP Image 对象,可直接集成到大模型应用中
  • 提供兼容 Markdown 的版本,使用 Base64 编码图像
  • 可自定义图像尺寸和显示选项
  • 可选择显示原子索引,满足教育用途
分子属性
  • 基本属性:
    • 分子式
    • 分子量
    • 原子和键的数量
    • 环的数量
  • Lipinski 五规则属性:
    • 氢键供体
    • 氢键受体
    • 可旋转键
    • LogP(亲脂性)

安装

先决条件
  • Python 3.10 或更高版本
  • RDKit(化学信息学库)
  • MCP Python SDK
  • PIL(Python Imaging Library)
分步安装
  1. 克隆此代码库:

    git clone https://github.com/yourusername/molecule-visualizer.git
    cd molecule-visualizer
    
  2. 运行设置脚本以创建虚拟环境并安装依赖项:

    chmod +x setup.sh
    ./setup.sh
    
  3. 激活虚拟环境:

    source venv/bin/activate
    
使用 uv 安装(替代方案)

你也可以使用快速的 uv 包管理器(MCP 文档推荐):

  1. 如果尚未安装 uv,请先安装:

    pip install uv
    
  2. 创建虚拟环境:

    uv venv
    
  3. 安装依赖项:

    uv pip install -r requirements.txt
    

    或直接安装依赖项:

    uv add "mcp[cli]"
    uv add "rdkit>=2023.3.1"
    uv add "pillow>=10.0.0"
    
  4. 激活虚拟环境:

    source .venv/bin/activate
    

使用方法

运行服务

直接运行服务:

python molecule_server.py

服务将启动并等待 MCP 连接。

使用 Claude Desktop
  1. 安装 Claude Desktop

  2. 编辑 Claude Desktop 配置文件:

    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
  3. 添加 Molecule Visualizer 服务配置:

{
  "mcpServers": {
    "Molecule Visualizer": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "--with",
        "pillow",
        "--with",
        "rdkit",
        "mcp",
        "run",
        "/ABSOLUTE-PATH-TO-MOLECULE-SERVER/molecule_server.py"
      ]
    }
  }
}
  1. 重启 Claude Desktop

  2. 现在可以在 Claude 中使用分子可视化功能:

    Please show me a visualization of aspirin
    
测试客户端

项目附带了一个测试客户端,用于演示如何使用该服务:

python test_client.py

这将连接到服务,并演示使用工具和资源的多个示例。

API 参考

工具
visualize_molecule

将分子生成为 Image 对象形式的 2D 可视化图像。

参数:

  • query(string):分子名称或 SMILES 字符串
  • width(integer,可选):宽度(像素)(默认值:400)
  • height(integer,可选):高度(像素)(默认值:300)
  • show_atom_indices(boolean,可选):是否显示原子索引(默认值:false)

返回:

  • 包含分子可视化图像的 Image 对象(PNG 格式)
visualize_molecule_markdown

将分子生成为 Markdown 字符串形式的 2D 可视化图像,其中嵌入了 Base64 编码的图像。

参数:

  • 与 visualize_molecule 相同

返回:

  • 嵌入 Base64 编码 PNG 图像的 Markdown 字符串
get_molecule_properties

获取分子的属性。

参数:

  • query(string):分子名称或 SMILES 字符串

返回:

  • 以 Markdown 格式呈现的分子属性文本
get_common_molecules

获取可视化的常见分子列表。

参数:

  • 无

返回:

  • 以 Markdown 格式呈现的常见分子名称列表
资源
molecule://{name}/smiles

获取常见分子的 SMILES 字符串。

参数:

  • name(string):常见分子的名称

返回:

  • 该分子的 SMILES 字符串
molecules://common

列出数据库中所有可用的常见分子。

返回:

  • 以 JSON 格式呈现的分子名称及其 SMILES 字符串列表

示例

可视化分子
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client

async def visualize():
    server_params = StdioServerParameters(
        command="python",
        args=["path/to/molecule_server.py"],
        env=None
    )
    
    async with stdio_client(server_params) as (stdin, stdout):
        client = ClientSession(stdin, stdout)
        await client.initialize()
        
        # Visualize aspirin
        result = await client.call_tool("visualize_molecule", {"query": "aspirin"})
        
        # The image data is in result.content[0].image.data
        # The image format is in result.content[0].image.format
        
        # Save the image to a file
        with open("aspirin.png", "wb") as f:
            f.write(result.content[0].image.data)
获取分子属性
# Using the client from above
result = await client.call_tool("get_molecule_properties", {"query": "caffeine"})
print(result.content[0].text)

要求

依赖项列在 requirements.txt 中:

mcp[cli]>=0.1.0
rdkit>=2023.3.1
pillow>=10.0.0

许可证

本项目采用 Apache License 许可,详情请参阅 LICENSE 文件。

贡献

欢迎贡献!以下是参与贡献的方式:

  1. 添加新的分子可视化选项
  2. 扩展常见分子数据库
  3. 添加更多分子属性计算
  4. 改进错误处理和文档
  5. 创建更多示例

贡献步骤:

  1. Fork 此仓库
  2. 创建功能分支
  3. 进行修改
  4. 提交拉取请求

请确保代码遵循现有风格,并包含适当的测试和文档。

评论

支持 Markdown

第一次接触 MCP?

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

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