🦁
【Error: fetch is not defined】Claude MCPのBrave Search使用時に発生するエラーへの対応
状況
MCPでBrave Searchを利用したいと思い設定を進めていました。
Macを使用しており、状況としては以下の通りです。
-
MCPサーバへの接続は成功している
- MCPログに
Connected to MCP server brave-search!と出ている
- MCPログに
- しかし検索実行時になると
Error: fetch is not definedと表示されて検索に失敗する
→MCPサーバには接続できているが、検索が実行できないという状況

解決方法
こちらの記事を参考にトランスパイルしたjsファイルを直接指定し、commandにはnodeをフルパスで指定することで無事動きました。
記事内で紹介されているエラーとは異なりますが解決しました。
リポジトリのクローン
MCP serversのリポジトリをクローンします。
git clone https://github.com/modelcontextprotocol/servers.git
ビルド
brave-searchのディレクトリに移動しnpm i(install)で依存関係のインストール後、
npm run buildでビルドを実行します。
cd servers/src/brave-search
npm i
npm run build
次に、npm linkでローカルにあるnpmパッケージを他プロジェクトから参照可能な状態にします。
npm link
npm linkの存在を知らなかったのですが、以下記事が参考になりました。
念の為distディレクトリ配下にindex.jsファイルが生成されているか確認します。
ls dist
ビルドしたindex.jsファイルとnodeのフルパスを取得
- distディレクトリに移動し、
pwdを実行し現在のパスを確認-
/Users/USERNAME/YOUR_PATH/servers/src/brave-search/dist/という感じで現在のパスが確認できます - ビルドしたindex.jsファイルを指定したいので、
/Users/USERNAME/YOUR_PATH/servers/src/brave-search/dist/index.jsとなります
-
-
which nodeでnodeのフルパスを取得
設定ファイル(claude_desktop_config.json)の更新
上のステップで取得した内容をconfigに記載。
claude_desktop_config.json
{
"mcpServers": {
"brave-search": {
- "command": "npx",
+ "command": "<`which node`で取得したフルパス>",
"args": [
- "-y",
- "@modelcontextprotocol/server-brave-search"
+ "/Users/USERNAME/YOUR_PATH/servers/src/brave-search/dist/index.js"
],
"env": {
"BRAVE_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
Claude Desktopの再起動
アプリを再起動して実行すると、無事ClaudeからWeb検索できました!

おまけ
なぜClaudeに明石市について聞いているかというと、筆者の出身地だからです。
明石はいい街🐙
Discussion