2026/1/28現在、MPResterを利用してMaterials projectのAPIへアクセスするとエラーが発生します。
参考:https://github.com/materialsproject/api/issues/1055#issuecomment-3809363619
問題の概要
以下のコードを実行するとJSONDecodeErrorが発出されます。
from mp_api.client import MPRester
MPRester("YOUR_API_KEY")
対処法
Materials projectのサーバーサイドのエラーと推測されるため、ユーザーサイドでの対処法はありません。
Materials projectによって、サーバーサイドでの設定変更が行われると想像されますので、そちらの対処をお待ちください。
プログラムのエラーではないため、Materials project側の設定が従来のものに戻りましたら、既存のコードが再度動くようになると考えております。
詳細
Materials projectでは、システムの稼働確認のためのエンドポイントとして、"https://api.materialsproject.org/heartbeat/"というURLが用意されているようです。
mp-apiのコードから推察するに、通常時はこちらへのアクセスは認証不要と見受けられます。
現在このURLへアクセスすると403エラー(アクセスに必要な認証がないというエラー)が返却されます。
1/27から始まったMaterials ProjectへのBot攻撃により、一時的にサーバー側でエラーが生じており、ユーザー側で対応できることはないと考えられます。
heartbeatから403エラーが返却されることを確認する最小限のコードは以下です。
from requests import get endpoint = "https://api.materialsproject.org/" response = get(url=endpoint + "heartbeat") print(response.status_code)
このコードはJSONDecodeErrorが発生する以下の行の記載内容と対応させております。
mp-api==0.45.15の場合:
https://github.com/materialsproject/api/blob/v0.45.15/mp_api/client/mprester.py#L494