以下の記事に書いた「Claude for Desktop で MCP を使う」という話の関連です。
●今になって Claude for Desktop で MCP に入門してみた(Claude は Free plan) - Qiita
https://qiita.com/youtoy/items/3ef0af28b530f5c5709c
上記の記事を書いた時は、「Windowsマシン」「MacBook Pro(Intel版)」でのセットアップを行い、簡単なお試しを行っていました。
今回は、さらに以下の M4 Mac mini で同じことをやろうとして、そこで遭遇したエラー関連の対処メモです。
エラーとその対処
エラーの内容
上で書いたように、既にセットアップ・お試しを行っていた「MacBook Pro(Intel版)」でセットアップ手順と同じようにして、「M4 Mac mini」へもセットアップを行おうとしました。
それで、以下のエラーが出ました。
エラーの内容で検索する
とりあえず、エラーの内容そのままに検索をしてみると以下の記事が出てきました。
●【Could not connect to MCP server】ClaudeのMCPサーバ接続エラーを解決する
https://zenn.dev/sun_asterisk/articles/58647adfba4609
その中で書かれている、ログの確認をやってみました。
コマンドを使った手順のほうだと、以下になります。
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
エラーログの内容
そうすると npx コマンドまわりのエラーが出ているという内容でした。
ターミナルではパスが通っていてコマンドが使える状態なのに、Claude for Desktop での npxコマンドの実行で問題が起こっているような感じです。
エラーの解決法
エラーの解決方法は、以下の記事に書いた n の設定変更でした。
●n で Node.js のバージョン管理を行う際のセットアップ時のメモ(自分の Mac の環境での話) - Qiita
https://qiita.com/youtoy/items/6048a87f84b7237ae084
npx のパスが「MacBook Pro(Intel版)」と同じになるようにしました。
(当初は上記の記事の 2つ目のやり方をしていたのを、1つ目の設定方法に変更しました)
2つの Mac でのコマンドのパス
node・npmコマンドを含めた npxコマンドのパスという話について、2つのマシンでの設定は最終的には以下となりました。、
node・npm・npx のパスは同じになりました。
うまくいかなかった方法
問題を解消しようとして、上記の Zenn の記事と同じようなことも試しました。
試した内容は、コンフィグに以下のように「npx」のフルパスを指定するという内容です。
{
"mcpServers": {
"filesystem": {
"command": "【npx のフルパス】",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/【Macでのユーザー名】/Downloads/mcp"
]
}
}
}
上記の対応でエラーの一部は解消したのですが、なぜかサーバー接続に関するエラーを解消できませんでした。
エラーの発生原因を探った時の情報
今回のエラー発生とその背景について、既にセットアップ・お試しを行っていた「MacBook Pro(Intel版)」でやったことを、「M4 Mac mini」で行った時にエラーが発生したと書きました。またそれが npxコマンド周りの話のようでした。
そのため、2つのデバイス間で npxコマンド周りの違いを確認することからやってみていました。
調べてみた結果、以下の記事でも書いた Node.js のバージョン管理に使っている「n」の設定の違いが、エラー発生の有無に影響していると思われました。
●n で Node.js のバージョン管理を行う際のセットアップ時のメモ(自分の Mac の環境での話) - Qiita
https://qiita.com/youtoy/items/6048a87f84b7237ae084
上記の記事の中で、「/usr/local への書き込み権限関連の話」の対応というのを書いていますが、この対応の部分に関して「MacBook Pro(Intel版)」と「M4 Mac mini」で差異があったためです。
さらに、上記の差異は node・npmコマンドを含めた npxコマンドのパスに影響を及ぼしていました。
それで、上でうまくいかなかった事例として書いた、最初に試した「コンフィグでのフルパスの指定」という対処をとっていました。