概要
PubChem MCP (PhelanShao) は、MCP 対応の AI クライアントを PubChem データベースの化合物情報に接続します。これはアクセス層を実装した独立したリポジトリであり、上流のデータベースそのものでも、化学予測モデルでもありません。文書で説明されている役割は、MCP ツールを通じて化合物特性、二次元構造、三次元分子座標を利用できるようにすることです。
主な取得ツール get_pubchem_data は、化合物名または PubChem CID を受け取ります。文書に記載された特性フィールドには、IUPAC 名、分子式、分子量、SMILES、InChI、InChIKey が含まれます。結果は JSON、CSV、XYZ 形式で要求できます。include_3d オプションは XYZ 出力にのみ適用されます。もう一つのツール download_structure は CID を受け取り、SDF、MOL、SMI ファイルをダウンロードします。カスタムファイル名も指定できます。これらのインターフェースにより、AI を使った検索から構造化データやローカルの構造ファイルを扱うワークフローへと移行できます。
README には、API 応答のメモリ内キャッシュ、3D データのディスクキャッシュ、自動再試行、PubChem の座標を利用できない場合の代替 3D 生成が記載されています。必要要件として Python 3.8+ と Requests が挙げられ、RDKit は 3D 処理を強化するための任意の依存関係です。提示された根拠からは、取得精度、実行性能、生成座標の科学的な適切性は確認できません。また、インストール例にはプレースホルダーのリポジトリ URL が含まれているため、そのまま流用せず、リンク先のリポジトリに基づいてセットアップ方法を確認してください。
主な機能
- `get_pubchem_data` を使い、名前または PubChem CID で化合物を検索します。
- IUPAC 名、分子式、分子量、SMILES、InChI、InChIKey を取得します。
- JSON、CSV、XYZ 形式での取得に対応します。`include_3d` は XYZ でのみ有効です。
- `download_structure` を使って SDF、MOL、SMI 構造ファイルをダウンロードできます。カスタムファイル名も指定できます。
- API 応答をメモリ内に、3D 構造データを `~/.pubchem-mcp/cache/` にキャッシュし、自動再試行の仕組みも備えています。
- PubChem の 3D データを利用できない場合の代替 3D 構造生成について説明しており、3D 処理の強化には任意で RDKit を利用できます。
用途
- 評価案:MCP 対応アシスタントを化合物検索に接続し、代表的な名称や CID について返される識別子と特性を比較する。
- 評価案:CSV 形式の化合物データ、または SDF、MOL、SMI ファイルを取得し、下流のケモインフォマティクスのワークフローで確認する。
- 評価案:XYZ 座標を要求し、PubChem の 3D データが利用できない場合や代替生成が行われる場合に、構造処理のワークフローへどのような影響があるかを評価する。
使い方
- 要件、ツールのパラメーター、設定について、公式 READMEを確認してください。目的のワークフローが特性予測ではなくデータベース検索を必要としていることを確認します。
- インストール前にリポジトリを確認してください。README には Python 3.8+、Requests、任意の RDKit が記載されていますが、クローンの例には所有者名のプレースホルダーが含まれています。その URL をプロジェクトの場所として扱わないでください。
- 文書に記載された MCP 設定パターンに従い、
python_version/mcp_server.pyへのローカルパスに置き換えてください。例にあるツールの自動承認設定が、利用するクライアントの権限に関する設定方針と合っているか確認してください。 aspirinのような代表的な名前、または既知の CID を使ってget_pubchem_dataを評価してください。特性には JSON または CSV、座標には XYZ を選びます。include_3dは XYZ の場合にのみ使用してください。返された識別子を目的の化合物と照合します。- CID と SDF、MOL、SMI のいずれかの出力を指定して
download_structureを評価してください。下流の科学的利用に進む前に、ダウンロードしたファイルと、代替生成された座標があればそれも確認してください。これらは推奨される評価手順であり、報告済みのテスト結果ではありません。