AWS MCP Server with Agno Agent について
FastMCPとAgnoでAWS機能をMCPクライアントに公開するデモで、自然言語でAWS環境を調べたい開発者向けです。ローカルのOllamaモデルを使う対話型エージェントも含みます。
主な機能
- 01セキュリティグループとルールの一覧
- 02S3バケット情報の一覧
- 03VPC接続の分析
- 04対話型Agnoエージェント
- 05ローカルOllamaモデルの利用
活用シーン
- 01AWSセキュリティグループのルール確認
- 02S3バケットとアクセス方針の確認
- 03VPCネットワーク接続の分析
MCP 対応
MCPサーバーはSSE経由でAWSツールを公開し、互換クライアントからセキュリティグループやS3バケットの一覧、VPC接続分析を呼び出せます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Agno エージェントを使用した AWS MCP サーバー
このプロジェクトでは、FastMCP と Agno フレームワークを使用して、複数の AWS ツールを MCP(Model Context Protocol)サーバーに統合します。このサーバーは、セキュリティグループの一覧表示、S3 バケットの一覧表示、VPC 接続の分析などの AWS 機能を公開し、リモートクライアントが標準化された MCP 経由でこれらの機能を利用できるようにします。
これは aws meetup 向けのデモでした。主に、MCP とローカルエージェントでできることを紹介するデモです。
特長
- AWS セキュリティグループツール:インバウンドルールとアウトバウンドルールの詳細を含む AWS セキュリティグループを一覧表示します。
- AWS S3 バケットツール:リージョン、作成日、アクセス権限ポリシーの情報を含む S3 バケットを一覧表示します。
- AWS VPC 接続ツール:ピアリング、エンドポイント、トランジットゲートウェイ、ルートテーブル、ネットワーク ACL など、VPC 接続を分析します。
- MCP サーバー:上記のツールをネットワークエンドポイント経由で公開し、MCP に準拠した任意のクライアントから呼び出せるようにします。
- 対話型 Agno エージェント:タスク管理、コマンド履歴、リアルタイムのツール呼び出しストリーミング機能を備えた高機能エージェントです。
- Ollama 連携:ローカルの Ollama モデルを AI 機能に使用し、外部 API への依存を軽減します。
前提条件
- Python 3.11 以降
boto3用に設定された AWS 認証情報(環境変数、または AWS の設定/認証情報ファイル経由)- Ollama がインストールされ、ローカルで実行されていること(エージェントコンポーネント用)
- 必要な Python パッケージ:
boto3agnofastmcp(サーバーコンポーネント用)rich(対話型コンソール用)
インストール
-
リポジトリをクローンします:
git clone https://github.com/skjortans/aws-mcp-server.git cd aws-mcp-server -
仮想環境を作成します(任意ですが、推奨):
python -m venv venv source venv/bin/activate # On Windows use: venv\Scripts\activate -
依存関係をインストールします:
requirements.txtがある場合は、次を実行します:pip install -r requirements.txtない場合は、依存関係を手動でインストールします:
pip install boto3 agno fastmcp rich click -
Ollama をインストールして起動します:
使用するプラットフォームに応じた Ollama のインストール手順に従い、その後、モデルを取得します:
ollama pull qwen3 # or another model of your choice
使用方法
MCP サーバーの実行
メインスクリプトは AWS ツールを FastMCP サーバーにまとめ、SSE トランスポートで起動します。サーバーを実行するには、次のコマンドを実行します:
python src/aws-security-mcp-server.py
実行すると、次のように表示されます:
[MCP Server] Listening on 127.0.0.1:5678 (TCP transport)
注:メッセージでは TCP トランスポートに言及していますが、コードではサーバーは SSE トランスポートを使用するように設定されています。
サーバーは受信した MCP リクエストを適切な AWS ツールに振り分けて処理します。
対話型エージェントの実行
このプロジェクトには、MCP サーバーに接続する対話型エージェントのサンプルが含まれています。エージェントを実行するには、次のコマンドを実行します:
python src/aws-demo-agent.py
これにより、次の操作ができる対話型コンソールが起動します:
- バックグラウンドで実行されるクエリを実行する
- 複数のタスクを同時に管理する
- ツール呼び出しのストリーミングをリアルタイムで確認する
- コマンド履歴とヘルプを利用する
コマンドの例:
red-team> list_security_groups us-east-1
red-team> list_s3_buckets
red-team> analyze_vpc_connections us-east-1
red-team> tasks # List all running tasks
red-team> help # Show help information
シンプルなエージェントの使用
よりシンプルな実装として、基本的なエージェントを使用できます:
python src/aws-agent.py
カスタムクライアントでの接続
MCP に準拠した任意のクライアントを使用して、MCP サーバーに接続することもできます。たとえば、Agno の MCPTools を使用する場合:
from agno.agent import Agent
from agno.tools.mcp import MCPTools
from agno.models.ollama import Ollama
# Connect to the MCP server
mcp_tools = MCPTools(url="http://127.0.0.1:8000/sse/", transport='sse') # Adjust URL as needed for your setup
# Create an agent with the MCP tools
model = Ollama(id="qwen3")
agent = Agent(
model=model,
tools=[mcp_tools],
instructions="You are an AWS security expert."
)
# Run a query
result = agent.run("What VPC connections do I have?")
print(result)
クライアントコードを実行する前に、MCP サーバーが起動していることを確認してください。
プロジェクト構成
aws-mcp-server/
├── README.md
├── requirements.txt # List of dependencies
├── src/
│ ├── aws-security-mcp-server.py # MCP server implementation with AWS tools
│ ├── aws-demo-agent.py # Interactive Agno agent with task management
│ └── aws-agent.py # Simple agent implementation
貢献
貢献を歓迎します。提案や改善案がある場合は、次の手順に従ってください:
- リポジトリをフォークします。
- 機能追加またはバグ修正用の新しいブランチを作成します。
- 変更内容の詳しい説明を添えて、プルリクエストを送信します。
アーキテクチャ
MCP サーバー
MCP サーバーは FastMCP を使用して構築され、AWS ツールを MCP に準拠したエンドポイントとして公開します。クライアントとのリアルタイム通信には、Server-Sent Events(SSE)トランスポートを使用します。
エージェントアーキテクチャ
このプロジェクトには、2 種類のエージェント実装が含まれています。
-
対話型 Agno エージェント(
aws-demo-agent.py):- Agno フレームワークをベースに構築されています
- AI 機能にローカルの Ollama モデルを使用します
- リッチな書式設定に対応した、ブロッキングしない対話型コンソールを備えています
- タスクの並列実行と管理に対応しています
- ツール呼び出しと応答をリアルタイムにストリーミングします
- コマンド履歴とヘルプ機能を備えています
-
シンプルなエージェント(
aws-agent.py):- smolagents ライブラリを使用します
- 基本的なユースケース向けのシンプルな実装です
- AWS ツールにアクセスするため、MCP サーバーに接続します
- 注:この実装では MCPClientParameters のインポートが不足しているため、更新が必要な場合があります
ライセンス
すべての方が無料で利用できます!
このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細については、LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。