MUI MCPをClaude Codeに入れてMaterial UIの最新資料を参照させる
MUIの@mui/mcpをclaude mcp addで登録し、CLAUDE.mdに使わせ方を書いて、古いAPIを出させにくくする手順をまとめます。
MUI(Material UI)は、ドキュメントとコード例をAIクライアントに渡すMCPサーバー@mui/mcpを配布しています。Claude Codeにはclaude mcp add1行で登録でき、/mcpで接続を確かめれば使い始められます。ただし登録しただけでは呼ばれないことがあります。本記事は、登録コマンドとスコープの選び方、呼ばれないときの対処、つながらないときの切り分けをまとめます。MCPサーバー追加の一般論はClaude CodeのMCPサーバー設定ガイドにあり、ここではMUI固有の部分に絞ります。
MUI MCPとは何をするサーバーか
@mui/mcpは、MUIが公開しているnpmパッケージです。Material UIのドキュメントとコード例にAIクライアントからアクセスするためのもので、ローカルで動き、stdioトランスポートでクライアントと通信します。
狙いは、複数ページにまたがる込み入った質問で、AIアシスタントが存在しないリンクを示したり、根拠を確かめにくい回答をしたりしがちな点を補うことです。MCP経由では次の3点が変わります。
- 実際のドキュメントを引用して答える
- 実在するドキュメントへリンクする
- 正式に公開されたレジストリのコンポーネントコードを使う
つまり目的は「学習データの時点で止まったAPIを書かせない」ことです。MUIのバージョンが上がるたびに変わるprops名やインポートパスを、Claudeの記憶ではなくMUIのドキュメントから引かせる構図です。
Claude Codeに登録する
Claude Code向けの登録は1行です。
claude mcp add mui-mcp -- npx -y @mui/mcp@latest--より前がClaude Code自身のオプション、後ろがサーバーの起動コマンドです。npx -y @mui/mcp@latestは、@latestタグでパッケージを指定して起動する書式です。この形は、Claude Codeのstdioサーバー追加の書式そのままです。
--を忘れるとどうなるか
npx -y @mui/mcp@latestの-yは、npxに渡すフラグです。--を抜くと、Claude Codeが-yを自分のオプションとして読もうとし、サーバーが意図どおりに起動しません。Claude Codeのドキュメントでは、--以降はサーバーにそのまま渡されると説明されています。claude mcp add --transport stdio myserver -- npx serverがnpx serverを実行する、という対応です。
--envでキーを渡すサーバーでは、--envの直後にサーバー名を置くと、名前が別のKEY=VALUEの組として読まれて失敗します。--envとサーバー名のあいだに--transport stdioのような別のオプションを挟めば避けられます。@mui/mcpは環境変数を要求しないので、この点は他のサーバーを足すときの注意です。
コマンドを打たずにJSONで一括登録したいときは、claude mcp add-jsonも使えます。
claude mcp add-json mui-mcp '{"command":"npx","args":["-y","@mui/mcp@latest"]}'スコープは3つから選ぶ
何も付けずに登録すると、そのプロジェクトだけで使える自分専用のサーバー(ローカルスコープ)になります。用途で次のように選べます。
| スコープ | フラグ | 読み込まれる範囲 | チーム共有 | 保存先 |
|---|---|---|---|---|
| ローカル(既定) | フラグなし | 読み込まれる範囲今のプロジェクトのみ | チーム共有しない | 保存先~/.claude.json |
| プロジェクト | フラグ--scope project | 読み込まれる範囲今のプロジェクトのみ | チーム共有する | 保存先プロジェクト直下の.mcp.json |
| ユーザー | フラグ-s user | 読み込まれる範囲自分の全プロジェクト | チーム共有しない | 保存先~/.claude.json |
全プロジェクトで使うならユーザースコープです。
claude mcp add mui-mcp -s user -- npx -y @mui/mcp@latestMUIを使うリポジトリが決まっているなら、プロジェクトスコープにして.mcp.jsonをコミットする手もあります。チーム全員に同じMCPが配られるためです。その場合、各メンバーは初回に承認を求められます。
claude mcp add mui-mcp --scope project -- npx -y @mui/mcp@latest例えば次のような.mcp.jsonが作られる形になります(Claude CodeのドキュメントにあるmcpServersの書式に沿った例示です)。
{
"mcpServers": {
"mui-mcp": {
"command": "npx",
"args": ["-y", "@mui/mcp@latest"]
}
}
}エディタ向けに配られているJSONは、"type": "stdio"を明示した形です。.mcp.jsonを手で書くときも、この1行を足してかまいません。typeを省いたエントリはstdioサーバーとして読まれるので、commandで起動するこのサーバーでは省いても動きます。
同じ名前のサーバーを複数のスコープに置くと、優先順はローカル、プロジェクト、ユーザーの順です。エントリはフィールド単位でなく丸ごと上書きされます。
登録し直すときは、まずclaude mcp remove mui-mcp --scope <scope>で消します。同じ名前を複数のスコープに残すと、どの定義が読み込まれたのか分かりにくくなります。個人で試して効果を確かめたあと、チーム用にプロジェクトスコープへ移す流れなら、ローカルの登録を消してから--scope projectで入れ直すのが安全です。
どのスコープにするかは、使い方で決まります。
| 使い方 | 向くスコープ | 理由 |
|---|---|---|
| 個人で試す | 向くスコープローカル(既定) | 理由設定が他人に及ばず、消すのも簡単 |
| MUIを使うリポジトリをチームで固定する | 向くスコーププロジェクト | 理由.mcp.jsonのコミットで全員に同じ設定が届く |
| MUIを使う複数のリポジトリを自分だけで扱う | 向くスコープユーザー | 理由一度の登録で全プロジェクトに効く |
つながったかを確かめる
登録後はclaude mcp listで状態を見ます。✔ Connectedと出れば接続済みです。claude mcp get mui-mcpで個別の詳細も見られます。セッション中なら/mcpのパネルでツール数が分かります。
claude mcp list
claude mcp get mui-mcp接続に成功すると、/mcpのパネルにmui-mcpが並び、ツール数が表示されます。ここでuseMuiDocsとfetchDocsの2つが見えていれば、前節のルールが指すツールはそろっています。見えないなら、claude mcp get mui-mcpの出力を確かめてください。
プロジェクトスコープで入れた場合は、⏸ Pending approvalと出ることがあります。claudeを対話で起動して承認すると接続されます。
登録しただけでは使われないときの対処
よくあるつまずきが、インストールしたのに質問しても使われないケースです。対処は、AIクライアントにルールを与えてMCPを使うよう指示することです。
VS Codeでは.github/instructions/mui.mdにルールを書く形が示されていて、同じ文面は他のIDEのルールにも流用できます。内容は次の手順です。
useMuiDocsツールで、質問に関係するパッケージのドキュメントを取得する- 必要なら
fetchDocsツールで追加の資料を取る。使うURLは返された内容にあるものだけにする - 1と2を、質問に必要なドキュメントがそろうまで繰り返す
- 取得した内容を使って答える
Claude Codeでは、この種のルールを置く場所はCLAUDE.mdです。MUIのMCPページが示すルールはVS Code向けの文面だけなので、以下はそれをCLAUDE.mdに置き換えた適用例です。
## MUI(Material UI)について
MUIのコンポーネントやpropsを書く・直すときは、記憶で書かない。
1. mui-mcpの`useMuiDocs`で該当パッケージのドキュメントを取得する
2. 足りなければ`fetchDocs`で追加取得する。URLは返却内容にあるものだけを使う
3. 取得した内容に書かれたAPIだけを使ってコードを書くCLAUDE.mdの書き方そのものは、テストコマンドの書き方を扱ったVitestのCLAUDE.md記述が具体例として参考になります。
古いAPIが出たときの確かめ方
ルールを書いたあとも、生成されたコードに非推奨のpropsが残ることはあります。確かめ方は、依頼文で取得先をドキュメントに固定することです。例えば次のように頼みます。
Dialogのコード中に非推奨のpropsが残っていないか確認して。
まずmui-mcpのuseMuiDocsでDialogのドキュメントを取得し、足りない情報はfetchDocsで補うこと。
直すときは、取得した内容に載っているpropsだけを使って。期待する動きは、先にuseMuiDocsでDialogのドキュメントが取得され、足りない部分だけfetchDocsが呼ばれ、そのあとでコードの修正案が出る順序です。fetchDocsに渡すURLが、useMuiDocsの返答に含まれるものかどうかも見てください。返答にないURLが渡されていたら、ルールの「返却内容にあるものだけ」が守られていません。
呼び出しが一度も出ないまま答えが返ってきたら、記憶で書かれた可能性が高い状態です。次の順で切り分けます。
/mcpのパネルでmui-mcpが接続済みで、2つのツールが見えているか- CLAUDE.mdに上記のルールが入っていて、作業中のディレクトリから読める位置にあるか
- 依頼文で
useMuiDocsから取得するよう名指ししているか
ツール名はMUI側が示している2つだけを使い、推測で別の名前を呼ばせないでください。
つながらないときの切り分け
接続エラーのときは、MCP Inspectorでサーバー単体を確かめる方法があります。
npx @modelcontextprotocol/inspector起動後にターミナルへ表示されるURL(http://127.0.0.1:6274)を開き、次のように設定します。
| 項目 | 値 |
|---|---|
| Transport type | 値Stdio |
| Command | 値npx |
| Arguments | 値-y @mui/mcp@latest |
Connectを押して接続でき、利用可能なツールの一覧が出れば、サーバー自体は動いています。一覧にuseMuiDocsとfetchDocsが見えるかも、ここで合わせて確かめられます。つながらなければ、Inspectorを起動したターミナルのログに詳細が出ます。
Inspectorで動くのにClaude Codeだけ失敗するなら、Claude Code側を疑います。claude mcp get mui-mcpのIssue:行に失敗の詳細が出ます。起動が遅くタイムアウトしている場合は、MCP_TIMEOUT環境変数で起動の待ち時間を延ばせます。
MCP_TIMEOUT=10000 claude失敗したサーバーをまとめてやり直すなら、/mcp reconnect allが使えます(v2.1.284以降。手順は/mcp reconnect allの解説にあります)。
他のクライアントとの差
Claude Code以外のクライアントでも、同じnpx -y @mui/mcp@latestを、クライアントごとの設定画面へ渡す形で使えます。
- VS Code・Cursor・Windsurf: MCP設定の
mcpServersにmui-mcpを追加。VS Codeはエージェントモードを有効にし、settings.jsonにchat.mcp.enabledとchat.mcp.discovery.enabledをtrueで加える必要があります - JetBrains IDE: SettingsのTools > AI AssistantにあるModel Context Protocol (MCP)で、名前に「MUI MCP」、コマンドに
npx、引数に-y @mui/mcp@latestを指定し、OKとApplyで確定 - Zed: 拡張機能「MUI MCP」を入れるか、カスタムサーバーとして登録
Claude Codeはclaude mcp addの1行で済み、VS Codeのようなエディタ側の有効化設定が要らない点が違いです。
まとめ
@mui/mcpを入れても、Claudeに使わせる指示がなければ呼ばれないことがあります。登録はスコープを決めて1行、使わせ方はCLAUDE.mdにuseMuiDocsから始まる手順として書く、の2段で考えると整理しやすくなります。つながらないときはMCP Inspectorでサーバー単体を確かめ、そのうえでClaude Code側のclaude mcp getに進むと原因を絞れます。同じ「最新ドキュメントを渡す」発想のサーバーとしてはContext7のMCP設定もあります。Claude Code全体の使い方はClaude Code完全ガイドにまとめています。