nebashitaito-web

VSCodeのGitHub CopilotからAWS MCPサーバーに接続してみた。

画像

エディターとプロンプトの行き来が面倒

最近、EC2を作成と削除したりしつつ、Linuxのコマンドで、ミドルウェアの設定をすることがありました。

私は、ミドルウェアやOSなどの低レイヤーの知識が浅いので、AIに頼らざるを得ないです。

この時にLinuxのコマンドをコピーして、VSCodeの拡張機能のGitHub Copoilot Chatに張り付けてAIに相談しつつ作業します。このコピペ作業が凄いめんどくさいんですよね。

画像

そこでMCP!

Model Context Protcol(モデル コンテキスト プロトコル)ことMCP

私と同じ思いをした人がを2024年にいました。Anthropic社(Claude Codeの会社)に勤めるデイビッド ソリア パラさん

彼も、AIが届かない外部と、AIを行き来する作業をしており、この手間を省略できないかと考えました。

そこで生まれたのがMCP

AIが届かない外部と、AI その間を接続する規格を策定した。※サーバーを作ったわけではない。サーバーの規格を作ったのだ。

MCPは、AIと外部サービスの接続が出来て、ただコピペの作業を省略するだけではない。

AIにとって読みやすい(トークンを消費しにくい)形式で、外部の情報を提供する

規格なので、それに則れば、全く別のシステムでも同じことが再現可能なのである。これが大きく普及した理由でもある

今回はAWSのMCPサーバーに対して、ローカルのVSCodeから接続して、クラウドリソースを操作してみる

準備1 サーバーを探す。

MCPサーバーは基本的にサービス側が用意してくれている。社内システムのMCPサーバーなどであれば、自分で作成する必要がある。

今回は、AWSの用意してくれているMCPサーバーを利用する。つい先日、東京リージョン用がリリースされたのでそちらを使用する。

                            

https://aws-mcp.us-east-1.api.aws/mcp

この後の選択肢として、認証情報の設定方法がある。OAuthかSigV4か。

OAuth...VSCodeからAWSのログイン画面が開き、ログインを求められる。

SigV4...AWS CLIの認証情報を流用する。

今回は、SigV4の方で認証します。

2026年10月4日時点では、VSCodeを使用したOAuthは、DCRの問題で使用出来なそうでした。

準備2 AWS CLIを用意する

AWS CLIがうまくインストールできなかった時の話

AWS CLIは、コマンドからAWSのサービスを操作するためのツールです。AWS CLIにあらかじめ認証情報を設定しておき、今回のMCPサーバー接続もその認証情報使用してAWSに接続します。

準備3 uvxを用意する

AWS CLIの認証情報をそのまま使用することは出来ないので、uvxでAWS CLIの認証情報を、MCP認証用に書き加えます。

uvxとは?uvxは、Pythonのツールを一時的な隔離環境で実行するためのコマンドです。必要なツールをその都度利用できるので、PythonのパッケージをPC全体にインストールせずに実行できます。

これまでの準備した情報をVSCodeの設定ファイルへ書き込みます。

.vscodeフォルダをルートへ作成し、その中にmcp.jsonファイルを作成します。

画像

mcp.jsonの中身は以下。

                            {
                                "mcpServers": {
                                    "aws-mcp": {
                                        "command": "uvx",
                                        "args": ["mcp-proxy-for-aws-cli@latest", "https://aws-mcp.us-east-1.api.aws/mcp", "--metadata", "AWS_REGION=ap-northeast-1"]
                                    }
                                }
                            }

準備完了

チャットからAWSリソースを確認してみる。

画像

ツールの利用許可を聞かれるので、許可します。

画像

プライベートな情報が含まれているので、一部隠しますが、しっかりと取得出来ました。

画像

実際のS3バケットと一致しています。