【Claude】 Anthropic Model Context Protocol登場 Macで発生するspawn npx ENOENTエラー解消法含め解説【2024】

新月一2024-11-29DeepLearningAI Claude Mac

画面イメージ

TIP

この記事に載っていること

  • Anthropic Model Context Protocolの公開について
  • Macでnpxを使うMCPサーバを使おうとすると発生するエラー解消法

はじめに

久しぶりの記事です。

Anthropicが2024年11月26日にModel Context Protocolの記事open in new windowを公開しました。これに伴い、Claude Desktopアプリから、SQLite・ローカルファイル・Slack・Githubなどに連携できるようになります。

ただ、ベータ版なこともあって、設定方法は結構複雑・・・

MacOSでエラー解消するのに手間取ったので、同様のエラー解消に困っている人の役に立てればと思います。

MCPとはなんぞや?

Anthropicが「Model Context Protocol (MCP)」をオープンソースとして公開しました。これは以下のような特徴を持つ新しい標準規格です:

AIアシスタントをデータが存在するシステム(コンテンツリポジトリ、ビジネスツール、開発環境など)に接続するための標準プロトコル

主な目的:

AIモデルがより適切な応答を生成できるようにする データソースごとに個別の実装が必要だった従来の問題を解決 情報サイロや従来のシステムによる制約を取り除く

提供されるコンポーネント:

MCPの仕様とSDK Claude DesktopアプリでのローカルMCPサーバーサポート オープンソースのMCPサーバーリポジトリ

対応システム例:

  • Google Drive
  • Slack
  • GitHub
  • Git
  • Postgres
  • Puppeteer

対応システムについての詳細は、Githubopen in new windowに記載があります。(要チェック)

主な採用企業:

Block、Apollo Zed、Replit、Codeium、Sourcegraphなどの開発ツール企業が導入を進めている

このプロトコルは、AIシステムとデータソース間の安全な双方向接続を可能にし、コミュニティベースでオープンソースとして開発されていく予定です。開発者は既存のClaude for Workアカウントを使用して、すぐにMCPサーバーのテストを開始できます。

設定方法

今回はナレッジグラフメモリサーバーと連携する例で説明しようかと思います。

  • ナレッジグラフメモリサーバーとは: ローカル ナレッジ グラフを使用した永続メモリの基本実装。これにより、Claude はチャット間でユーザーに関する情報を記憶できます。

vscodeがインストールされている前提で、ファイルの編集にはcodeコマンドを使います。

code ~/Library/Application\ Support/Claude/claude_desktop_config.json

を編集して、以下を記載します。

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-memory"
      ]
    }
  }
}

保存した後は、Claudeのデスクトップアプリを一度終了して、再度起動すればいいのですが・・・

ログの確認方法

以下コマンドでログを確認できますが、nodebrewを使っているとエラーが出ます。(2024年11月29日時点)

tail -n 20 -f ~/Library/Logs/Claude/mcp*.log

もし以下のエラーが出ている場合は、nodebrewをアンインストールして、brewでnodeをインストールすることで、一旦はエラーが発生しなくなります。これがどうにも設定ファイルのパスとかを変えても動かなかったのですが、nodebrewをやめてhomebrewのnodeに切り替えるとすぐ使えるようになりました。

[error] Error in MCP connection to server filesystem: Error: spawn npx ENOENT
    at ChildProcess._handle.onexit (node:internal/child_process:286:19)
    at onErrorNT (node:internal/child_process:484:16)
    at process.processTicksAndRejections (node:internal/process/task_queues:82:21) {
  errno: -2,
  code: 'ENOENT',
  syscall: 'spawn npx',
  path: 'npx',
  spawnargs: [Array]
}

アンインストール

brew uninstall nodebrew
rm -rf ~/.nodebrew

~/.zshrcなどにnodebrewのPATHを設定している場合はそれも削除します。

nodebrewを使い続けたい場合は自分でなんとか頑張るか、公式の対応を待ちましょう。

インストール

brew install node

メモリーを使うためのプロンプト

メモリー機能を使うためのプロンプトは以下になります。

https://github.com/modelcontextprotocol/servers/tree/main/src/memory

に英語版が載っています。そちらのほうが精度が良くなる可能性はありますのでチェックしてみてください。

各インタラクションについて、以下の手順に従ってください:

1. ユーザーの識別:
   - default_userとインタラクションしていると仮定してください。
   - default_user を識別していない場合は、積極的に識別するようにしてください。

2. 記憶の検索:
   - 常に「覚えている...」とだけ言ってチャットを開始し、ナレッジグラフから関連するすべての情報を取得します。
   - 常にナレッジグラフを 「記憶 」と呼びます。

3. 記憶
   - ユーザーと会話している間、以下のカテゴリーに分類される新しい情報に注意してください:
     a) 基本的な身分(年齢、性別、場所、役職、教育レベルなど)
     b) 行動(興味、習慣など)
     c) 嗜好(コミュニケーションスタイル、好みの言語など)
     d) 目標(ゴール、目標、願望など)
     e) 人間関係(3親等までの個人的および仕事上の関係)

4. 記憶の更新:
   - 対話中に新しい情報が得られた場合は、以下のように記憶を更新する:
     a) 再発する組織、人物、重要な出来事のエンティティを作成する。
     b) 関係を使用して、それらを現在のエンティティに接続する。
     b) それらに関する事実をオブザベーションとして格納する。

さあ、これでメモリ機能が使えるようになりました。

メモリ機能

まとめ

  • Anthropic Model Context Protocolの公開について
  • Macでnpxを使うMCPサーバを使おうとすると発生するエラー解消法

を記載しました。

ローカルやリモートのデータと大規模生成LLMが連携できるようになってくると、期待が膨らみますね。

slackの最新のメッセージ確認して、だとか、gitでリポジトリ作っといて、だとか、小さな連携機能が少しずつ実現していくと、夢が膨らむわい。

将来は私の代わりに仕事しといて、なんて時代が来たら・・・見事自分がクビになるでしょう😭

Last Updated 2024-11-29 12:39:13