mcpField
M
Molecule Visualizer MCP Server

Molecule Visualizer MCP Server

ローカル
github.com/leelasd科学・教育276 週間前に更新

Molecule Visualizer MCP Server について

Claude Desktop などの LLM アプリ向けの化学 MCP サーバーです。分子名や SMILES から 2D 画像を生成し、分子特性を取得できます。一般的な分子のデータベースも備えています。

主な機能

  1. 01名前または SMILES から 2D 分子画像を生成
  2. 02分子式、分子量、原子数、結合数の取得
  3. 03LogP などの Lipinski 特性の計算
  4. 04一般的な分子と SMILES の参照
  5. 05原子番号の表示と画像サイズの指定

活用シーン

  1. 01Claude Desktop で分子構造を表示
  2. 02分子の基本特性を調べる
  3. 03教育コンテンツ用の分子図を作成
  4. 04一般的な分子の SMILES を検索

MCP 対応

分子の可視化と特性取得のツール、および一般的な分子のリソースを MCP クライアントに提供します。画像は MCP Image オブジェクトまたは画像を埋め込んだ Markdown で返せます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Molecule Visualizer MCP サーバー

Molecule Visualizer Python RDKit License

SMILES コードを使用して分子を可視化し、分子特性を取得するツールを提供する Model Context Protocol(MCP) サーバーです。このサーバーは Claude Desktop などの LLM アプリケーションと連携し、化学分野に特化した機能を提供します。

目次

概要

Molecule Visualizer MCP サーバーは、LLM アプリケーションに次の機能を提供します。

  1. SMILES 文字列から分子の 2D 可視化を生成する
  2. 分子特性を計算して表示する
  3. 名前で一般的な分子のデータベースにアクセスする

これにより、分子構造の探索、化学特性の分析、教育コンテンツや研究支援向けの分子可視化の生成など、化学関連のユースケースに対応できます。

スクリーンショット

Claude で MCP サーバーを使用する

Claude での MCP

Claude が Molecule Visualizer MCP サーバーを使用して分子構造を表示しています。

SMILES を使用した分子の可視化

SMILES を使用した可視化

SMILES コードを直接指定して、分子の可視化を生成します。

Web アクセスとの比較

Web アクセスを使用した Claude

Claude がインターネットから適切な smiles コードを取得できず、Web アクセスを使った同様の可視化はうまくいきませんでした。pubchempy と chembl client を追加すれば、MCP により、より信頼性の高い化学機能を利用できます。

機能

分子の可視化
  • SMILES 文字列または一般名から分子の 2D 可視化を生成します
  • LLM アプリケーションに直接統合できる適切な MCP Image オブジェクトを返します
  • Base64 エンコード画像を含む、Markdown 互換形式を選択できます
  • 画像サイズと表示オプションをカスタマイズできます
  • 教育目的で原子インデックスを表示するオプションがあります
分子特性
  • 基本特性:
    • 分子式
    • 分子量
    • 原子数と結合数
    • 環の数
  • リピンスキーのルール・オブ・ファイブの特性:
    • 水素結合供与体
    • 水素結合受容体
    • 回転可能結合
    • 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

分子の 2D 可視化を Image オブジェクトとして生成します。

パラメーター:

  • query(文字列):分子名または SMILES 文字列
  • width(整数、任意):幅(ピクセル単位、デフォルト:400)
  • height(整数、任意):高さ(ピクセル単位、デフォルト:300)
  • show_atom_indices(ブール値、任意):原子インデックスを表示するかどうか(デフォルト:false)

戻り値:

  • 分子の可視化を含む Image オブジェクト(PNG 形式)
visualize_molecule_markdown

分子の 2D 可視化を、Base64 エンコードされた画像を埋め込んだ Markdown 文字列として生成します。

パラメーター:

  • visualize_molecule と同じ

戻り値:

  • Base64 エンコードされた PNG 画像を埋め込んだ Markdown 文字列
get_molecule_properties

分子のプロパティを取得します。

パラメーター:

  • query(文字列):分子名または SMILES 文字列

戻り値:

  • 分子のプロパティを含む Markdown 形式のテキスト
get_common_molecules

可視化できる一般的な分子の一覧を取得します。

パラメーター:

  • なし

戻り値:

  • 一般的な分子名の Markdown 形式の一覧
リソース
molecule://{name}/smiles

一般的な分子の SMILES 文字列を取得します。

パラメーター:

  • name(文字列):一般的な分子の名前

戻り値:

  • 分子の SMILES 文字列
molecules://common

データベースで利用できる一般的な分子をすべて一覧表示します。

戻り値:

  • 分子名と SMILES 文字列を含む JSON 形式の一覧

使用例

分子を可視化する
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. リポジトリをフォークする
  2. フィーチャーブランチを作成する
  3. 変更を加える
  4. プルリクエストを送信する

既存のスタイルに従い、適切なテストとドキュメントを含めてください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。