Claude Media
MCPのstored credentialsエラー — Couldn't readが出る原因と対処

MCPのstored credentialsエラー — Couldn't readが出る原因と対処

MCPサーバーの保存済みサインインを読めずリクエストが走らないエラーの読み方です。Macのキーチェーンがロックされた場合の解除手順と、似た3つのメッセージの見分け方を扱います。

MCPサーバーを呼んだ直後に次のメッセージが出たら、サインインが切れたのではありません。Claude Codeが認証情報の保管場所を読めず、リクエストそのものを送らなかった状態です。

Couldn't read the stored credentials for MCP server "<name>", so the request didn't run. If your Mac's keychain is locked, unlock it, then try again.

保存済みのサインインは変わっていません。保管場所が読めるようになってから再試行すれば足り、サーバー側で再認証が求められたときだけサインインし直します。この記事では、似た文言が並ぶ認証まわりのメッセージの見分け方と、Macで最初にやることを順に書きます。

このエラーが示す状態

Claude Codeは、OAuthで使うMCPサーバーのサインイン情報を認証情報の保管場所(credential store)に置いています。Couldn't read the stored credentialsは、その保管場所を読めなかったときのメッセージです。読めなかったので、サーバーへのリクエストは実行されません。

文言は2通りあります。

文言の末尾意味
If your Mac's keychain is locked, unlock it, then try again.意味Macのキーチェーンのロックが疑われる。解除してから再試行する
Try again.意味読み取りに失敗した。キーチェーンの案内は付かず、再試行を促すだけの形

後者の文言にはキーチェーンへの言及がありません。どちらの文言でも、保存済みのサインインは変わっていない点は共通です。

macOSでは、Claude Codeは認証情報をログインキーチェーンに保存します。キーチェーンが書き込みを拒否した場合、たとえばSSHセッションでロックされているときは、~/.claude/.credentials.jsonに保存する動作にもなります。CLAUDE_CONFIG_DIRを設定している環境では、この.credentials.jsonもキーチェーンの項目も、その設定ディレクトリごとに別々になります。ディレクトリが違うセッションは別の項目を読みます。

macOS以外では、保存先はファイルです。Linuxは~/.claude/.credentials.json、Windowsは%USERPROFILE%\.claude\.credentials.jsonに保存されます。Linuxではファイルモードが0600になり、Windowsではユーザープロファイルのディレクトリのアクセス制御を引き継いで、既定ではそのユーザーだけが読めます。unlock-keychainのコマンドはmacOS専用なので、LinuxやWindowsでは別の対処になります。

似たメッセージ3種の見分け方

認証まわりの文言は似ているので、取り違えると直し方がずれます。見るべきは「サーバーに断られたのか、そもそも送れなかったのか」です。

メッセージ何が起きたか次の行動
Couldn't read the stored credentials for MCP server "<name>", so the request didn't run.何が起きたか保管場所を読めず、リクエストが走っていない次の行動キーチェーンを確認して再試行
A request to MCP server "<name>" was sent without your stored credentials, so the server rejected it. The credentials are available now. Try again.何が起きたか資格情報なしで送信され、サーバーが拒否した。今は読める状態次の行動そのまま再試行
MCP server "<name>" needs you to sign in again (run /mcp to re-authenticate)何が起きたかサーバーが資格情報を拒否した。期限切れか失効次の行動/mcpで再認証

2つ目は、claude -pかAgent SDKをmacOSで動かしたときに出る形です。リクエストを送った後でキーチェーンが読める状態になったため、先に出たリクエストだけが資格情報なしで飛んでしまいます。送った時点では読めず、今は読めるので、やり直せば通る状況です。

3つ目はサーバーが「その資格情報では通せない」と返したときの文言で、保管場所の問題ではありません。こちらは/mcpでサーバーを選んで再度サインインします。ここを混同して/mcpで再認証を繰り返しても、キーチェーンがロックされたままなら状況は変わりません。

もう1つ、claude mcp login <name>で次のように出る場合は、保管場所とは無関係です。

Couldn't complete authentication for "<name>": This server's URL is missing or not a valid URL, so sign-in can't start. Fix the URL in its MCP config (or set the environment variable it uses) and try again.

サーバー設定のurlがURLとして解釈できないため、サインインが始まっていません。urlに実際のエンドポイントを入れるか、${VAR}で参照している環境変数を設定してからやり直します。

Macのキーチェーンがロックされているときの手順

メッセージが「キーチェーンがロックされているなら解除を」と案内しているときの流れです。

手順

キーチェーン起因のエラーを解消する流れ

  1. 1

    claude doctorで警告を見る

    Claude Codeを起動しているシェルでclaude doctorを実行し、キーチェーンの警告があるかを見ます。

  2. 2

    警告があれば解除する

    macOS Keychain is not writableで始まる警告が出ていたら、同じシェルで解除コマンドを実行します。

  3. 3

    同じ場所で再試行する

    エラーを見た場所に応じて、再実行か再接続をします。

まず診断です。

claude doctor

レポートにmacOS Keychain is not writableで始まる警告がある場合、またはシェルにclaudeコマンドがない場合は、そのシェルで次を実行します。パスワードの入力を求められます。

security unlock-keychain ~/Library/Keychains/login.keychain-db

レポートにキーチェーンの警告がなければ、解除コマンドは不要です。実行しなくて構いません。

解除できたかどうかは、もう一度claude doctorを走らせて警告が消えたかで確かめられます。それでも直らないときは、Keychain Accessでloginキーチェーンを選び、Editメニューの「Change Password for Keychain "login"」からアカウントのパスワードと同期し直す手順が、インストール関連のトラブルシューティングに載っています。

再試行は「どこで見たか」で変わる

キーチェーンを直したら、エラーが出た場所に合わせてやり直します。

場所やり直し方
claude -pやり直し方コマンドをもう一度実行する
対話セッションやり直し方/mcpでサーバーが失敗表示なら再接続し、Claudeに再試行を頼む
動き続けるAgent SDKアプリやり直し方TypeScriptはreconnectMcpServer()、PythonはClaudeSDKClient.reconnect_mcp_server()を呼ぶか、新しいセッションを始める

対話セッションで/mcpの画面にサーバーが失敗として出ていなければ、再接続は要りません。Claudeに「もう一度実行して」と頼めば足ります。

再試行後に「サーバーが認証を必要としている」と出た場合は、使えるサインインがClaude Code側に見つからなかった状態です。この場合は対話的にサインインし直します。

claude mcp login <name>

<name>は.mcp.jsonなどに登録したサーバー名です。セッション内なら/mcpからも同じことができます。Agent SDKアプリは、SDKのOAuth2認証の手順に従います。

SSHで入った先のシェルでも、claude mcp loginは使えます。ローカルのブラウザーが無いと検出すると、ブラウザーを開こうとせず認可URLを表示します。そのURLを手元のマシンで開き、認可後にブラウザーのアドレスバーに出るリダイレクト先のURL全体を、プロンプトに貼り戻します。貼り付けの入力には対話端末が要るため、ssh -tで接続します。ブラウザーが検出される環境でもURL入力に切り替えたいときは--no-browserを付けます。

claude mcp login <name> --no-browser

動き続けるAgent SDKアプリでは、再接続の呼び出し(reconnectMcpServer()など)でサーバーとの接続をつなぎ直します。そのあとサーバーが「認証が必要」と返したときは、アプリ側でOAuth2認証の手順を踏みます。手順の詳細はAgent SDKのMCPのドキュメントにあるOAuth2認証の節が扱っています。

保存済みの資格情報を意図して消したいときはclaude mcp logout <name>を使います。/mcpのメニューにある「Clear authentication」でも、そのサーバーへのアクセスを取り消せます。サインインの途中でブラウザーのリダイレクトが接続エラーになった場合は、アドレスバーのコールバックURL全体をClaude Codeに現れるURL入力欄へ貼ると先へ進めます。ただし/logoutは影響が広く、保存済みのMCPサーバーのログインとプラグインの機密値まで消えるので、今回のエラーの対処に使うものではありません。MCPの再認証が増えるだけです。

v2.1.307より前との違い

v2.1.307より前は、ロックされたログインキーチェーンのMacでclaude -pかAgent SDKを動かすと、このメッセージの代わりに「サーバーが認証を必要としている」と報告されていました。古い版でサインインし直しても直らなかった経験があるなら、原因はキーチェーンだった可能性があります。今の版なら、文言が保管場所の問題をそのまま指します。

キーチェーンが関わるもう1つのエラー

claude.aiでログインしたのに完了しないときは、保存側の失敗です。

Couldn't save your login. If your Mac's keychain is locked, unlock it and log in again.

こちらはMCPではなくログイン自体の保存に失敗した状態で、キーチェーンを解除して/loginをやり直します。macOS以外の末尾はTry logging in again.の形になります。

Macでは、同じセッションでClaude Codeがすでにキーチェーンの読み書きをした後に、スリープやアイドルでログインキーチェーンがロックされると、この保存側の失敗が起きることがあります。タイムアウトや読めないストアといった一時的な保存先の不具合でも、同じ文言が出ます。解除しても保存できないときは、インストール関連のトラブルシューティングにある復旧手順に進みます。手順は、claude doctorで警告を確かめる、security unlock-keychainで解除する、解除で直らなければKeychain Accessでパスワードを同期し直す、の順です。

SSHセッションのようにキーチェーンがロックされていると、書き込みは拒否されます。その場合、Claude Codeはログインを平文の~/.claude/.credentials.jsonに保存する動作になります。キーチェーンのパスワードがアカウントのパスワードとずれている場合も、同じ退避が起きます。Consoleログインで作るAPIキーは、キーチェーンが書き込める状態に戻るまで失敗します。SSH先のMacで症状が出たときは、まずclaude doctorをそのシェルで走らせてください。

切り分けの早見表

症状見るもの
Couldn't read the stored credentials、末尾にキーチェーンの案内見るものclaude doctorの警告とキーチェーンのロック
同、末尾がTry again.見るもの再試行する。続くならclaude doctor(Macの場合)
sent without your stored credentials見るもの再試行するだけ。資格情報は今は読める
needs you to sign in again見るもの/mcpで再認証
claude mcp loginがURL is missing or not a valid URL見るものサーバー設定のurl

失敗したサーバーが複数あるときの一括再接続は/mcp reconnect allで失敗したMCPサーバーを一括再接続するに手順があります。毎日サインインが切れる症状はMCP OAuthが毎日Connection expiredになる原因と再接続手順が別の原因を扱っています。Claude Desktopでキーチェーンの許可を何度も求められる場合はClaude Desktopでキーチェーンの許可を毎回求められる原因と対処を参照してください。

まとめ

このエラーは「再認証が必要」ではなく「読めなかったので送っていない」という知らせです。Macならclaude doctorでキーチェーンの警告を確かめ、あれば同じシェルで解除し、エラーが出た場所に合わせて再試行します。再試行後にサーバーが認証を求めたときだけ、/mcpかclaude mcp login <name>でサインインし直します。

この記事を共有:XはてブLinkedIn