Catalysis Hub MCP Server について
Catalysis Hub の GraphQL API に接続し、触媒研究データをプログラムから取得する MCP サーバーです。研究者などが反応、材料、出版物、表面反応データを柔軟に検索できます。
主な機能
- 01Catalysis Hub への GraphQL クエリ
- 02反応と触媒の検索
- 03材料システムと特性へのアクセス
- 04出版物と表面反応データの取得
- 05変数付きクエリとエラー詳細
活用シーン
- 01触媒反応と条件の検索
- 02材料構造と特性の取得
- 03出版物情報と表面データの確認
MCP 対応
MCP クライアントに Catalysis Hub の GraphQL API を公開し、変数を使ったクエリと、クエリや接続に関するエラー情報を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Catalysis Hub MCP サーバー
Catalysis Hub の GraphQL API 用 Model Context Protocol(MCP)サーバーインターフェースです。柔軟な GraphQL クエリを通じて、触媒研究データにプログラムからアクセスできます。
主な機能
- GraphQL への直接アクセス:Catalysis Hub の API に対して、有効な GraphQL クエリを実行できます
- 包括的なデータアクセス:
- 触媒反応(反応式、条件、触媒)
- 材料系(構造、特性、記述子)
- 研究論文(タイトル、DOI、著者)
- 表面反応データ(吸着エネルギー、結合部位)
- MCP 標準への準拠:AI エージェント間の相互運用性を実現するため、Model Context Protocol を実装しています
- 柔軟なクエリのサポート:変数をパラメーター化した複雑なクエリを実行できます
- エラー処理:API 接続およびクエリ実行に関する堅牢なエラー報告機能を備えています
ライセンスと引用
このプロジェクトは、学術引用要件付きの MIT License の下で提供されています。コードは自由に使用、変更、配布できますが、このソフトウェアを使用した学術論文または科学論文では、適切な帰属表示が必要です。
学術・研究での利用:
このソフトウェアを、出版物、発表、または報告書につながる研究プロジェクトで使用する場合は、CITATION.md に記載されている形式に従って、必ずこの成果を引用してください。
商用・非学術での利用:
商用および非学術での利用には、引用要件のない標準的な MIT License の条項が適用されます。
このソフトウェアを使用することで、これらの条項に同意したものとみなされます。ライセンスの全文については、LICENSE.md をご覧ください。
実装の詳細
- サーバー設定(
claude_desktop_config.jsonに対応):{ "command": "/Users/quentincody/.env/bin/python3", "args": ["/Users/quentincody/catalysishub-mcp-server/catalysishub_mcp_server.py"], "options": { "cwd": "/Users/quentincody/catalysishub-mcp-server" } } - コア依存関係:非同期 HTTP リクエスト用の
httpx - トランスポート:MCP 仕様に準拠した標準入力/出力通信
セットアップとインストール
-
リポジトリをクローンする:
git clone <repository_url> cd catalysishub-mcp-server -
依存関係をインストールする:
pip install -r requirements.txt -
インストールを確認する:
python3 catalysishub_mcp_server.py --version # Should output: catalysishub-mcp-server 0.1.0
使用例
基本的なクエリの実行
from mcp.client import MCPClient
async with MCPClient("catalysishub") as hub:
result = await hub.catalysishub_graphql(
query="""{
reactions(first: 5) {
edges {
node {
id
Equation
Temperature
}
}
}
}"""
)
print(json.loads(result))
変数を使用したパラメーター化クエリ
variables = {
"materialId": "mp-1234",
"firstResults": 5
}
response = await hub.catalysishub_graphql(
query="""query GetMaterial($materialId: String!, $firstResults: Int!) {
systems(uniqueId: $materialId) {
edges {
node {
energy
Cifdata
relatedReactions(first: $firstResults) {
edges {
node {
id
Equation
}
}
}
}
}
}
}""",
variables=variables
)
クエリ最適化のヒント
-
GraphQL フラグメントを使用する:
fragment ReactionDetails on Reaction { id Equation ActivationEnergy Catalyst { formula surface } } query { reactions(first: 10) { edges { node { ...ReactionDetails } } } } -
関連するクエリをまとめて実行する:
query BatchQuery { reactions: reactions(first: 5) { edges { node { id Equation } } } materials: systems(first: 5) { edges { node { formula energy } } } }
レスポンスの構造
成功時のレスポンスは、次の構造になります:
{
"data": { /* Query results */ },
"extensions": {
"responseMetadata": {
"requestDuration": 145,
"apiVersion": "2024-06"
}
}
}
エラーレスポンスには、詳細な診断情報が含まれます:
{
"errors": [{
"message": "Cannot query field 'invalidField' on type 'Reaction'",
"locations": [{"line": 5, "column": 21}],
"path": ["query", "reactions", "edges", "node", "invalidField"]
}]
}
トラブルシューティング
よくある問題:
HTTP Request Error:api.catalysis-hub.orgへのネットワーク接続を確認してくださいJSON Decode Error:Catalysis Hub の GraphQL Playground を使用して、クエリの構文を確認してくださいTimeout Errors:複雑なクエリにtimeoutパラメーターを追加してください
謝辞
このプロジェクトは Model Context Protocol(MCP)フレームワークを基盤とし、触媒研究データの包括的なリソースである Catalysis Hub データベースとのインターフェースとして設計されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。