MCP vs Manual vs A2A Nginx Installation について
手動での Nginx セットアップのシミュレーション、MCP によるインストール、A2A エージェントの連携シミュレーションを比較する Python プロジェクトです。インフラ自動化を学ぶ DevOps エンジニア向けです。
主な機能
- 013種類の Nginx セットアップを比較
- 02MCP によるインストールワークフロー
- 03A2A エージェント連携のシミュレーション
- 04Python スクリプトと MCP 設定を収録
活用シーン
- 01MCP によるインフラ自動化の学習
- 02手動とエージェント駆動のセットアップ比較
MCP 対応
MCP を使った Nginx の自動インストールワークフローを実行します。A2A による連携もシミュレーションします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP と手動による Nginx のインストールと A2A
はじめに
このプロジェクトでは、サーバー(例:Nginx)のセットアップに関する3つの異なる方法をシミュレーションします。
- 従来の手動インストール(シミュレーションであり、実際のシステムセットアップではありません)。
- Anthropic の MCP(Model Context Protocol)を使用した自動インストール。このプロジェクトでは実際に接続して動作しています(接続手順はファイルの後半で説明します)。
- Google の A2A(Agent2Agent Protocol)を使用した、エージェント同士が連携するセットアップのシミュレーション。
このプロジェクトの目的は、近い将来、DevOps エンジニアが MCP、特に A2A を活用してワークフローを簡素化し、時間と労力を削減し、効率を高め、ツールや環境をまたぐ複雑なインフラストラクチャタスクを自動化できることを示すことです。
MCP とは?
Anthropic の Model Context Protocol(MCP)は、AI アプリケーションがツールやデータソースに接続する方法を標準化するオープンプロトコルです。LLM が利用可能なツールを理解し、それらに安全にアクセスして、ケースごとにハードコードされることなく使い方を判断できるようにします。MCP により、複雑な操作を高レベルの意図に簡素化できます。
A2A とは?
A2A(Agent2Agent Protocol)は、わずか数日前に Google が発表した新しいオープンプロトコルです。エージェントの開発元が異なる場合でも、AI エージェントが異なるシステム間で互いを検出し、通信し、連携できるようにします。A2A により、開発者はエージェントがタスクを共同で調整し、スマートで動的なワークフローを作り出すエコシステムを構築できます。
MCP の実生活での例:
すべての機器をつなぐキッチンツールのようなものだと考えてください。料理のたびにさまざまな機器を取り出して接続する代わりに、すべてをつないで作業を簡素化するシステムを使います。MCP エージェントも同様に機能し、データソースを接続することで、それぞれを個別に手動で統合することなく、サーバーのセットアップなどのタスクをより速く簡単にします。
A2A の実生活での例:
個人的な例:エージェントを使った日々の用事の自動化
いくつかの個人用 AI エージェントがあると想像してください。
- メールエージェント
- ショッピングエージェント
- カレンダーエージェント
A2A がない場合:
各エージェントは単独で動作します。メールの送信、予約、買い物を手動で行う必要があります。
A2A がある場合:
「明日までに新しいヘッドホンを買いたいのですが、空いているのは午後5時から6時までだけです」と伝えます。
- メールエージェントが受信トレイを確認します。
- カレンダーエージェントが空き状況を確認します。
- ショッピングエージェントが条件に合うお得な商品を探します。
- エージェント同士が連携してタスクを完了します。配送情報とカレンダーへの予定登録が通知されます。
前提条件
始める前に、以下が揃っていることを確認してください。
- Python 3.x がインストールされていること
- Docker がインストールされていること(MCP エージェントの実行に必要)
- Visual Studio Code(VSCode)がインストールされていること
- VSCode に Copilot プラグインがインストールされていること(MCP エージェントとのやり取りに使用します)
手順
ステップ 2:MCP エージェントによるインストールの自動化
- VSCode に Copilot プラグインをインストールします。
- VSCode で JSON ファイルを開きます。「Start」をクリックして Copilot のチャットウィンドウを開きます。
- Copilot ウィンドウでモードを「Agent」に設定します。
注: MCP の設定を使用するには、GitHub Personal Access Token が必要です。GitHub アカウントで「Settings」→「Developer settings」→「Personal access tokens」の順に移動し、適切な権限を持つトークンを生成します。生成したトークンを、Copilot の入力欄で github_token の入力を求められた箇所に貼り付けます。
以下の JSON コードを使用してください
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}
A2A プロトコルの概要
A2A は、エージェントが通信し、情報を交換し、複雑なタスクで連携できるようにする Google のオープンプロトコルです。開発元が異なるエージェント間でも連携できます。
✅ メリット
- エージェント同士が連携します
- 複雑なマルチエージェントワークフローを実現できます
- 異なるツールを同時に使用できます
- リアルタイムでの拡張、モニタリング、カスタマイズが可能です
⚠️ デメリット
- 初期設定に高度な作業が必要です
- まだ非常に新しい(進化中の)インターフェースです
🧪 実際の DevOps A2A の例:デプロイとクラウドのメンテナンス
AWS、GCP、社内システムでアプリを管理する DevOps エンジニアだと想像してください。
- あるエージェントは Terraform インフラストラクチャを管理します。
- 別のエージェントは Jenkins で CI/CD を実行します。
- 3 つ目のエージェントは Prometheus でパフォーマンスを監視します。
- 4 つ目のエージェントは Slack で更新情報を送信します。
A2A がない場合:
各ステップを手動で統合し、不整合に対処し、すべての接続を手動で管理します。
A2A がある場合:
- Jenkins エージェントがビルドを実行します。
- Terraform エージェントにデプロイするための「タスク」を送信します。
- エラーが発生すると、監視エージェントが Slack エージェントに通知します。
これで、異なるツールで構築されていても、すべてのエージェントが通信して同期できます。
🎯 メリット:
あなたにとって: デジタルタスクをスマートに自動化できます。
DevOps にとって: 追加の統合なしで相互に通信する、モジュール式のエージェントベースシステムを構築できます。
効率が向上し、時間の無駄が減り、インフラストラクチャの拡張性と透明性が高まります。
📁 プロジェクト構成
MCP-MANUAL-A2A-nginx-install/
├── install_nginx.sh
├── mcp_config.json
├── mcp_nginx_install.py
├── nginx_install.py
├── a2a_simulation.py
├── requirements.txt
└── README.md
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。