Closed3

miseを使用している際のMCPの設定

oxonoxon

課題

miseでnodeなどを入れている環境の際に、MCPの設定で通常通りnpxなどのcommandを指定すると
[error] spawn npx ENOENT

env: node: No such file or directory
などでパスを認識してくれない。

brewなどでnodeをグローバルに入れると解決するのだがせっかくmiseで管理している意味がなくなってくるのでやりたくない。

oxonoxon

解決策1

miseは動的に環境変数を書き換えているとのことで、mise activate zshなどが実行されないとnodeやnpxのパスが未定義になる。

※ 詳細は把握できてないがこちらを参考にさせて頂いた。
https://anatofuz.hatenablog.com/entry/2024/01/05/122649

また、こちらの記事やclineのMCPのissueなどを見る限り、フルパスの指定が必要なようだ。
https://zenn.dev/daylight55/articles/949da09cffa981#claude-desktopの設定ファイルを編集

つまり解決策としては

  1. miseのshimsを有効にする
  2. mcpの設定時にフルパスを記載する

となる。

echo 'export PATH="$HOME/.local/share/mise/shims:$PATH"' >> ~/.zprofile
which npx
> /Users/[uname]/.local/share/mise/shims/npx

e.g.) sitemcpの場合

mcp.json
{
  "mcpServers": {
    "daisy-ui": {
      "command": "/Users/[uname]/.local/share/mise/shims/npx",
      "args": [
        "-y",
        "sitemcp",
        "https://daisyui.com",
        "-m",
        "'/components/**'"
      ]
    }
  }
}
oxonoxon

解決策2

解決策1で動作は確認できたが、なんとなくフルパスを指定するのも気分が晴れない。

miseにはNeither shims nor PATHで実行するmise execがある。
https://mise.jdx.dev/dev-tools/shims.html#neither-shims-nor-path
これはshimsもPATHも無しでmiseから各環境を"正確に"呼べるものらしい。

設定 (e.g. sitemcp)

mcp.json
{
  "mcpServers": {
    "daisy-ui": {
      "command": "mise",
      "args": [
        "exec",
        "node@22",
        "--",
        "npx",
        "-y",
        "sitemcp",
        "https://daisyui.com",
        "-m",
        "'/components/**'"
      ]
    }
  }
}

こっちのほうが何も設定をしなくて良いしフルパスも必要ないので良い感じ。
少しコマンドが冗長だが、miseのdocsを読む限り短縮aliasが使えそうなのでもう少しスッキリできるかも。

このスクラップは5ヶ月前にクローズされました