Molecule Visualizer MCP Server について
Claude Desktop などの LLM アプリ向けの化学 MCP サーバーです。分子名や SMILES から 2D 画像を生成し、分子特性を取得できます。一般的な分子のデータベースも備えています。
主な機能
- 01名前または SMILES から 2D 分子画像を生成
- 02分子式、分子量、原子数、結合数の取得
- 03LogP などの Lipinski 特性の計算
- 04一般的な分子と SMILES の参照
- 05原子番号の表示と画像サイズの指定
活用シーン
- 01Claude Desktop で分子構造を表示
- 02分子の基本特性を調べる
- 03教育コンテンツ用の分子図を作成
- 04一般的な分子の SMILES を検索
MCP 対応
分子の可視化と特性取得のツール、および一般的な分子のリソースを MCP クライアントに提供します。画像は MCP Image オブジェクトまたは画像を埋め込んだ Markdown で返せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Molecule Visualizer MCP サーバー
SMILES コードを使用して分子を可視化し、分子特性を取得するツールを提供する Model Context Protocol(MCP) サーバーです。このサーバーは Claude Desktop などの LLM アプリケーションと連携し、化学分野に特化した機能を提供します。
目次
概要
Molecule Visualizer MCP サーバーは、LLM アプリケーションに次の機能を提供します。
- SMILES 文字列から分子の 2D 可視化を生成する
- 分子特性を計算して表示する
- 名前で一般的な分子のデータベースにアクセスする
これにより、分子構造の探索、化学特性の分析、教育コンテンツや研究支援向けの分子可視化の生成など、化学関連のユースケースに対応できます。
スクリーンショット
Claude で MCP サーバーを使用する

Claude が Molecule Visualizer MCP サーバーを使用して分子構造を表示しています。
SMILES を使用した分子の可視化

SMILES コードを直接指定して、分子の可視化を生成します。
Web アクセスとの比較

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)
インストール手順
-
このリポジトリをクローンします:
git clone https://github.com/yourusername/molecule-visualizer.git cd molecule-visualizer -
セットアップスクリプトを実行します。仮想環境が作成され、依存関係がインストールされます:
chmod +x setup.sh ./setup.sh -
仮想環境を有効化します:
source venv/bin/activate
uv を使った別のインストール方法
高速な uv パッケージマネージャーも使用できます(MCP のドキュメントで推奨されています)。
-
uv がまだインストールされていない場合は、インストールします:
pip install uv -
仮想環境を作成します:
uv venv -
依存関係をインストールします:
uv pip install -r requirements.txtまたは、依存関係を直接インストールします:
uv add "mcp[cli]" uv add "rdkit>=2023.3.1" uv add "pillow>=10.0.0" -
仮想環境を有効化します:
source .venv/bin/activate
使い方
サーバーの起動
サーバーを直接起動するには:
python molecule_server.py
サーバーが起動し、MCP 接続を待ち受けます。
Claude Desktop を使用する
-
Claude Desktop をインストールします
-
Claude Desktop の設定ファイルを編集します:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
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"
]
}
}
}
-
Claude Desktop を再起動します
-
これで、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 ファイルをご覧ください。
コントリビューション
コントリビューションを歓迎します!以下の方法で貢献できます:
- 新しい分子可視化オプションを追加する
- 一般的な分子のデータベースを拡充する
- 分子プロパティの計算機能を追加する
- エラー処理とドキュメントを改善する
- 追加の使用例を作成する
コントリビューションの手順:
- リポジトリをフォークする
- フィーチャーブランチを作成する
- 変更を加える
- プルリクエストを送信する
既存のスタイルに従い、適切なテストとドキュメントを含めてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。