Tools

VSCodeのAgentでMCPを活用しよう

投稿日:

はじめに

今回は、VSCodeでCopilot Agentをより活用するために、MCPについて調べました。

VSCodeでのMCP Serverの設定

他のツールと同じように、 mcp.json で定義することで、Agentモード利用時にMCPを使うことができます。VSCodeでの設定方法を紹介します。

グローバルとワークスペース

VSCodeでは mcp.json を「グローバル用」と「ワークスペース用」と使い分けることができます。

  • グローバルに配置する場合は ~/Library/Application Support/Code/User/mcp.json に書きます。
  • ワークスペースに配置する場合は、ワークスペース配下の .vscode/mcp.json に書きます。

MCP Serverの追加

mcp.json を定義することでMCP Serverを追加することができますが、VSCodeでおすすめのMCPを紹介している「Discover and install MCP Servers in VSCode」というページでは、VSCodeで簡単にインストールできるMCPがまとめられています。
ここからインストールすると、 mcp.json に自動的に追加されます。
例えば、今回紹介する playwright と Context7 を追加すると、以下のようになります。

playwrightのargsに --isolated を渡すことで、cookieなどを永続しないようにしています。こうすることで、毎回まっさらなところからスタートできるので、ログイン処理などを毎回初めから実行できるようになります。

今回は、MUIのCRUDテンプレートプロジェクトをお題とし、MCP Serverを使ってみたいと思います。

ユースケース1: Playwright MCPでテストコード生成

Playwright MCPを使うと、自然言語によって Playwright を操作することができ、対話しながらさまざまなWebページを取得・操作することができます。
今回はローカルで立ち上げたReactアプリを実際に分析してもらい、Playwrightのテストコードを書いてもらいます。

まずは、プロンプトです。

これから Playwright MCP を使ってブラウザを操作します。
あなたは、Playwrightテストコードを作成するエージェントです。
以下のルールに従ってテストコードを生成してください。
– Playwright MCP を使うことは何があっても絶対に忘れないでください
– 必ず Playwright MCP を使用して、1ステップずつ処理し、その都度@playwright を利用して、TypeScript形式のテストコードを追記してください。
– Playwright MCPを使わず、シナリオを一括でコード化してはいけません。
– 生成するテストは tests/tmp/one.spec.tstest("E2Eテスト", async ({ page, context }) => {}); の中に追記してください。

シナリオ
1. Playwright MCP を使って「http://localhost:5173」を表示する
2. 「Create」ボタンを押す
3. Nameに任意の文字を入力する
4. Ageに任意の数値を入力する
5. Join dateに任意の日付を入力する
6. Departmentに任意の部署を1つ選択する
7. 「Create」ボタンを押す
8. 新規作成した従業員が一覧に追加されていることを確認する

いろいろと試行錯誤してこのプロンプトになりました。GPT-4.1でうまく動いています。(GPT-5でも動くと思いますが、時間がかかります。)
ポイントをまとめます。

  • 会話履歴の要約をオフにする
    コンテキストが膨れ上がってくると、Copilotが会話履歴の要約をします。しかし、要約後は最初の指示を忘れてしまい、うまくテストの作成ができなくなってしまいます。
    そこで、VSCodeの設定で github.copilot.chat.summarizeAgentConversationHistory.enabled をオフにすることで、会話の要約機能をオフにすることができます。
  • プロンプトの冒頭で「これから Playwright MCP を使ってブラウザを操作します。」を書く
    これを書かないと、Playwright MCPを使用せず、推測でテストコードを書いてしまうことがあり、挙動が不安定になりました。
  • プロンプトにテストケースを書く
    テストケースを書かないと、毎回違ったテストケースとなってしまい、安定しません。テストケースは明示したほうが精度よくテストケースが出てきます。

このプロンプトを実行すると、大まかに問題のないテストコードが生成されますが、実際に実行してみると動かない点がいくつか出てきますが、これをAgentに修正させるのは今のところ難しかったため、これは手作業で修正します。

ユースケース2: Context7 MCPで最新ドキュメントを参照

Context 7 MCPを使うと、さまざまな最新ドキュメントをRAGとして使用できるようになります。その数は膨大で、ReactやTailwind、FastAPIなどはもちろん、MUIやGolangなど、実にさまざまなドキュメントを参照できるようになります。
ドキュメントの対応状況は公式サイトにまとめられています。

使い方は、プロンプトに use context7 と足すと context 7が質問やソースコードをもとに適切なドキュメントを探し、それを参照しながら回答してくれます。
例えば、以下のようなプロンプトになります。

React 19に対応していない箇所がないか調べて use context7

そうすると、以下のような回答が得られます。

React 19の主な非互換・移行ポイント(context7公式情報より):

– <Context.Provider>の代わりに<Context>を直接Providerとして使う新構文が導入され、旧構文は非推奨(ただし自動変換codemodあり)。
– レガシーContext API(contextTypes/getChildContext)は完全削除。React.createContext/ useContext/ contextType への移行必須。
– useContextは引き続き有効だが、React 19では新たにuse(…) APIが追加され、条件付きでContext値を取得できる(useContextは条件分岐内で使えない)。
– PropTypes, defaultProps(関数コンポーネント)は無視される。TypeScript型推奨。
– ReactDOM.render, ReactDOM.unmountComponentAtNode, createFactory, string ref などは削除。createRoot, root.unmount, JSX, ref callbackへ移行。
– ref callbackでreturn値を返すとTypeScriptエラーになる(returnせずブロックで書く)。
– useSyncExternalStore, useEffect, Suspense, Server Componentsなどは引き続き利用可能(APIの大きな破壊的変更なし)。

**workspace内のコード調査結果:**
– レガシーContext API(contextTypes/getChildContext)は未使用。
– <Context.Provider>構文は使われている可能性があるため、<Context>構文への移行を検討。
– useContext, useEffect, useSyncExternalStore, Suspenseは通常通り使われている。
– PropTypes, defaultProps, string ref, createFactory, レガシーライフサイクル(componentWillMount等)は見当たりません。
– ReactDOM.renderは使われておらず、createRootが使われている(index.tsx)。

**結論:**
– 重大なReact 19非対応箇所は現状見当たりません。
– <Context.Provider>→<Context>への書き換え(新構文)を検討するとよりReact 19らしいコードになります。
– 公式codemod(npx codemod@latest react/19/migration-recipe)で自動変換も可能です。

他に特定のファイルやAPIについて追加で調査したい場合は教えてください。

確かに、今回のプロジェクトでは useContextContext.Provider が未だに使われていて、この指摘は正しいと言えます。
こちらは、GPT-4.1で問題なく使えました。

ちなみに、 use context7 せずに依頼すると、これらの指摘はされませんでしたので、最新情報を参照させたいときはかなり使えそうです。
また、ブラウザでドキュメントを探さなくても、IDE上で確認できるので、これは便利に使えそうです。

さいごに

今後は、複数のMCPを組み合わせて活用する方法についても調べてみたいと思います。

おすすめ書籍

直感 LLM ―ハンズオンで動かして学ぶ大規模言語モデル入門 実践 LLMアプリケーション開発 ―プロトタイプを脱却し、実用的な実装に迫るための包括的な手引き LLM入門:しくみから学ぶ生成AIの基礎: “使うだけ”から卒業するための、易しいけど深く言語モデルを探求する本 (LLMマスターシリーズ)

blog-page_footer_336




blog-page_footer_336




-Tools
-, ,

執筆者:

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


関連記事

暗号資産(仮想通貨)を個人で購入・売却した際の損益計算・仕訳について

1 はじめに2 損益計算3 移動平均法と総平均法3.1 移動平均法と総平均法の損益計算3.1.1 総平均法の損益計算3.1.2 移動平均法の損益計算3.1.3 総平均法と移動平均法どちらが良いか3.1 ...

Gitの便利なコマンド

1 はじめに2 cherry-pick2.1 使い方3 stash3.1 使い方3.2 退避した作業の一覧を見る3.3 退避した作業を戻す3.4 退避した作業を消す3.5 退避した作業を元に戻すと同時 ...

Gitでやっちまったときに使えるコマンド

1 はじめに2 コミットを修正したい3 コミットを戻したい3.1 複数のコミットをrevertする4 コミット自体をそもそもなかったことにしたい5 reset –hardした差分を元に戻し ...

【Unity】Standard Assetsでエラーが出た時の対応

1 はじめに2 Standard Assetsのエラー2.1 修正方法3 さいごに4 おすすめ書籍 はじめに こんにちは、suzukiです。本日はunityのStandard AssetsをImpor ...

ToDoアプリ5選

デザインの個性が現れるToDoアプリ5選!!

ToDoアプリ 1 はじめに2 Upper3 Wunderlist4 To:day5 Clear6 SWIPES7 さいごに はじめに こんにちはー!デザイナーのnottyです。 4月から新社会人とし ...

フォロー

blog-page_side_responsive

2025年9月
 123456
78910111213
14151617181920
21222324252627
282930  

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。