🦁

【Error: fetch is not defined】Claude MCPのBrave Search使用時に発生するエラーへの対応

2024/12/19に公開

状況

MCPでBrave Searchを利用したいと思い設定を進めていました。
Macを使用しており、状況としては以下の通りです。

  • MCPサーバへの接続は成功している
    • MCPログにConnected to MCP server brave-search!と出ている
  • しかし検索実行時になるとError: fetch is not definedと表示されて検索に失敗する

→MCPサーバには接続できているが、検索が実行できないという状況

解決方法

こちらの記事を参考にトランスパイルしたjsファイルを直接指定し、commandにはnodeをフルパスで指定することで無事動きました。
記事内で紹介されているエラーとは異なりますが解決しました。

https://zenn.dev/knziiy/articles/brave-mcp-claude-build#1.-リポジトリのクローンとビルド

リポジトリのクローン

MCP serversのリポジトリをクローンします。

git clone https://github.com/modelcontextprotocol/servers.git

https://github.com/modelcontextprotocol/servers/tree/main/src/brave-search

ビルド

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の存在を知らなかったのですが、以下記事が参考になりました。
https://www.yoheim.net/blog.php?q=20171202

念の為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に明石市について聞いているかというと、筆者の出身地だからです。
明石はいい街🐙

Sun* Developers

Discussion