🚀 MCP Cloud Services Server
MCP Cloud Services Serverは、クラウドサービス管理のための包括的なMCP(Model Context Protocol)サーバーです。AWS、Azure、GCPをサポートし、リソース管理、コスト分析、監視、セキュリティ機能を備えています。
🚀 クイックスタート
MCP Cloud Services Serverは、AIアシスタント(Cursor、Claude Desktopなど)がクラウドリソースを管理し、コストを分析し、監視を行い、セキュリティチェックを実行するための包括的なMCPサーバーです。
✨ 主な機能
- ☁️ マルチクラウド対応: AWS、Azure、GCPをサポート
- 📊 リソース管理: リスト、作成、削除、開始、停止操作
- 💰 コスト分析: コスト内訳、トレンド、請求分析
- 📈 監視: メトリクス、アラーム、ヘルスチェック
- 🔒 セキュリティ: セキュリティスキャン、コンプライアンスチェック、暗号化分析
- 🔐 資格情報管理: 安全な資格情報の保存と管理
🚀 仕組み
MCP Cloud Services Serverは、Model Context Protocol(MCP)標準を使用して、AIアシスタントにクラウド管理機能を提供します。サーバーは、MCPプロトコルを介してツールを公開し、AIアシスタントはこれらのツールを使用してクラウド操作を実行できます。
アーキテクチャ
AI Assistant (Cursor/Claude)
↓ (MCP Protocol)
MCP Cloud Services Server
↓ (SDK Calls)
Cloud Provider APIs (AWS/Azure/GCP)
サーバーは、各クラウドプロバイダーに対してアダプターパターンを使用してSDK呼び出しを管理します。資格情報は安全に保存および管理されます。
📦 インストール
必要条件
- Node.js 18以上
- npmまたはyarn
- TypeScript(開発依存関係)
- クラウドプロバイダーの資格情報(AWS、Azure、またはGCP)
手順
- リポジトリをクローンします:
git clone https://github.com/code-alchemist01/Cloud-mcp_server.git
cd Cloud-mcp_server
- 依存関係をインストールします:
npm install
- プロジェクトをビルドします:
npm run build
- クラウド資格情報を構成します(以下のセクションを参照)
- テストします:
npm start
🔐 資格情報の構成
資格情報が必要な理由
クラウドプロバイダー(AWS、Azure、GCP)は、セキュリティ上の理由からすべてのAPI呼び出しで認証を要求します。これらの資格情報は、認証と承認に使用されます。サーバーは、これらの資格情報を使用してクラウドAPIに安全に接続します。
AWS資格情報
AWSには、アクセスキーIDとシークレットアクセスキーが必要です。これらの資格情報は、AWS IAMで作成され、必要なアクセス許可を持っている必要があります。
方法1: 環境変数(推奨)
export AWS_ACCESS_KEY_ID=your_access_key_id
export AWS_SECRET_ACCESS_KEY=your_secret_access_key
export AWS_REGION=us-east-1
方法2: AWS資格情報ファイル
~/.aws/credentials (Linux/Mac)
C:\Users\YourUsername\.aws\credentials (Windows)
[default]
aws_access_key_id = your_access_key_id
aws_secret_access_key = your_secret_access_key
方法3: MCP構成内
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": ["..."],
"env": {
"AWS_ACCESS_KEY_ID": "your_access_key_id",
"AWS_SECRET_ACCESS_KEY": "your_secret_access_key",
"AWS_REGION": "us-east-1"
}
}
}
}
必要なIAMアクセス許可:
ec2:DescribeInstances, ec2:StartInstances, ec2:StopInstances
s3:ListBuckets, s3:GetBucketLocation
lambda:ListFunctions, lambda:GetFunction
rds:DescribeDBInstances
cloudwatch:GetMetricStatistics
ce:GetCostAndUsage
Azure資格情報
Azureには、サービスプリンシパル(クライアントID、クライアントシークレット、テナントID)またはAzure CLIログインが必要です。また、サブスクリプションIDが必須です。
方法1: 環境変数
export AZURE_CLIENT_ID=your_client_id
export AZURE_CLIENT_SECRET=your_client_secret
export AZURE_TENANT_ID=your_tenant_id
export AZURE_SUBSCRIPTION_ID=your_subscription_id
方法2: Azure CLIログイン(最も簡単)
az login
export AZURE_SUBSCRIPTION_ID=your_subscription_id
方法3: MCP構成内
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": ["..."],
"env": {
"AZURE_CLIENT_ID": "your_client_id",
"AZURE_CLIENT_SECRET": "your_secret",
"AZURE_TENANT_ID": "your_tenant_id",
"AZURE_SUBSCRIPTION_ID": "your_subscription_id"
}
}
}
}
サービスプリンシパルの作成:
az ad sp create-for-rbac --name "mcp-cloud-services" --role contributor
必要なRBACアクセス許可:
Reader(リソースをリストするため)
Virtual Machine Contributor(VM管理のため)
Storage Account Contributor(ストレージ管理のため)
GCP資格情報
GCPには、サービスアカウントJSONファイルまたはgcloud CLIが必要です。また、プロジェクトIDが必須です。
方法1: サービスアカウントJSON(推奨)
export GCP_PROJECT_ID=your_project_id
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service-account-key.json
方法2: gcloud CLI
gcloud auth application-default login
gcloud config set project YOUR_PROJECT_ID
export GCP_PROJECT_ID=$(gcloud config get-value project)
方法3: MCP構成内
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": ["..."],
"env": {
"GCP_PROJECT_ID": "your_project_id",
"GOOGLE_APPLICATION_CREDENTIALS": "C:\\path\\to\\service-account-key.json"
}
}
}
}
サービスアカウントの作成:
- GCPコンソール → IAM & Admin → サービスアカウント
- サービスアカウントを作成
- ロールを付与:
Compute Viewer, Storage Viewer, Cloud Functions Viewer
- JSONキーを作成してダウンロード
必要なIAMロール:
Compute Viewer(コンピュートインスタンスを表示するため)
Storage Viewer(ストレージバケットを表示するため)
Cloud Functions Viewer(関数を表示するため)
Monitoring Viewer(メトリクスのため)
Billing Account Viewer(コスト分析のため)
📦 MCPクライアントへのインストール
Cursor IDE
1. MCP構成ファイルを作成/編集します
Windows:
%APPDATA%\Cursor\User\globalStorage\mcp.json
macOS/Linux:
~/.config/Cursor/User/globalStorage/mcp.json
ワークスペース固有(推奨):
<project-root>/.cursor/mcp.json
2.構成内容
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": [
"C:\\Users\\YourUsername\\path\\to\\Cloud-mcp_server\\dist\\index.js"
],
"env": {
"AWS_ACCESS_KEY_ID": "your_key",
"AWS_SECRET_ACCESS_KEY": "your_secret",
"AWS_REGION": "us-east-1"
}
}
}
}
3. Cursorを再起動します
Claude Desktop
1. MCP構成ファイルを作成/編集します
Windows:
%APPDATA%\Claude\claude_desktop_config.json
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Linux:
~/.config/Claude/claude_desktop_config.json
2.構成内容
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": [
"/absolute/path/to/Cloud-mcp_server/dist/index.js"
],
"env": {
"AWS_ACCESS_KEY_ID": "your_key",
"AWS_SECRET_ACCESS_KEY": "your_secret"
}
}
}
}
その他のMCPクライアント
任意のMCPプロトコルをサポートするクライアントの場合、サーバーをstdioトランスポートで起動します:
{
"mcpServers": {
"cloud-services": {
"command": "node",
"args": ["/path/to/dist/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "...",
"AWS_SECRET_ACCESS_KEY": "..."
}
}
}
}
🛠️ 使用方法
MCPクライアントでの使用
MCPサーバーをインストールした後、クライアントのチャットインターフェイスで自然言語コマンドを使用してクラウド操作を実行できます。
使用例
AWS:
AWSのすべてのEC2インスタンスをリストする
S3バケットを表示する
i-1234567890abcdef0インスタンスを起動する
Lambda関数をリストする
Azure:
Azureのすべての仮想マシンをリストする
ストレージアカウントを表示する
GCP:
GCPのすべてのコンピュートインスタンスをリストする
ストレージバケットを表示する
Cloud関数をリストする
コスト分析:
AWSのコストを分析する: 2024年1月1日から2024年1月31日まで
サービス別のコスト内訳を表示する
監視:
i-1234567890abcdef0インスタンスのCPU使用率を表示する
AWSアラームをリストする
セキュリティ:
AWSリソースのセキュリティ脆弱性をスキャンする
CISコンプライアンスチェックを実行する
暗号化の状態を確認する
📋 MCPツール (26個のツール)
AWSツール (6個)
aws_list_ec2_instances - EC2インスタンスをリストする
aws_list_s3_buckets - S3バケットをリストする
aws_list_lambda_functions - Lambda関数をリストする
aws_list_rds_instances - RDSインスタンスをリストする
aws_start_ec2_instance - EC2インスタンスを起動する
aws_stop_ec2_instance - EC2インスタンスを停止する
Azureツール (2個)
azure_list_virtual_machines - 仮想マシンをリストする
azure_list_storage_accounts - ストレージアカウントをリストする
GCPツール (3個)
gcp_list_compute_instances - コンピュートインスタンスをリストする
gcp_list_storage_buckets - ストレージバケットをリストする
gcp_list_cloud_functions - Cloud関数をリストする
リソース管理ツール (5個)
list_resources - すべてのクラウドリソースをリストする
get_resource - リソースの詳細を取得する
start_resource - リソースを起動する
stop_resource - リソースを停止する
delete_resource - リソースを削除する(注意して使用)
コスト分析ツール (3個)
analyze_costs - コスト分析を実行する
get_cost_by_service - サービス別のコスト内訳を取得する
estimate_monthly_cost - 月次コストを推定する
監視ツール (3個)
get_metrics - リソースのメトリクスを取得する
list_alarms - 監視アラームをリストする
get_resource_health - リソースのヘルス状態を確認する
セキュリティツール (4個)
scan_security_issues - セキュリティ脆弱性をスキャンする
check_compliance - コンプライアンスチェックを実行する
analyze_permissions - IAMアクセス許可分析を実行する
check_encryption - 暗号化の状態を確認する
📁 プロジェクト構造
Cloud-mcp_server/
├── src/
│ ├── index.ts # MCPサーバーの主要なエントリポイント
│ ├── server.ts # MCPサーバーの実装
│ ├── tools/ # MCPツール
│ │ ├── aws-tools.ts # AWS固有のツール
│ │ ├── azure-tools.ts # Azure固有のツール
│ │ ├── gcp-tools.ts # GCP固有のツール
│ │ ├── resource-management.ts # リソース管理ツール
│ │ ├── cost-analysis.ts # コスト分析ツール
│ │ ├── monitoring.ts # 監視ツール
│ │ └── security.ts # セキュリティツール
│ ├── adapters/ # クラウドプロバイダーアダプター
│ │ ├── aws-adapter.ts # AWS SDKアダプター
│ │ ├── azure-adapter.ts # Azure SDKアダプター
│ │ └── gcp-adapter.ts # GCP SDKアダプター
│ ├── utils/ # ユーティリティ関数
│ │ ├── credential-manager.ts
│ │ ├── formatters.ts
│ │ └── validators.ts
│ └── types/ # TypeScript型定義
│ └── index.ts
├── dist/ # コンパイルされたJavaScriptファイル
├── package.json
├── tsconfig.json
└── README.md
🔧 開発
開発モード
npm run dev
ビルド
npm run build
テスト
npm test
🔒 セキュリティ
- 資格情報は安全に保存されます(~/.cloud-services-mcp/credentials.json)
- 環境変数のサポート
- 入力検証とサニタイズ
- エラーハンドリング
- 安全な資格情報管理
重要: 資格情報をコードにハードコードしないでください。常に環境変数または安全な資格情報ストアを使用してください。
📊 出力形式
- JSON - 構造化されたデータ応答
- Markdown - レポートとドキュメント
- テキスト - プレーンテキスト出力
🤝 貢献方法
- フォークします
- 機能ブランチを作成します (
git checkout -b feature/amazing-feature)
- コミットします (
git commit -m 'Add amazing feature')
- プッシュします (
git push origin feature/amazing-feature)
- プルリクエストを作成します
📄 ライセンス
MITライセンス - 詳細についてはLICENSEファイルを参照してください。
🔗 MCPクライアントのサポート
このMCPサーバーは、以下のクライアントと互換性があります:
- ✅ Cursor IDE - 完全サポート
- ✅ Claude Desktop - 完全サポート
- ✅ Anthropic API - MCPプロトコルを介して
- ✅ その他のMCPクライアント - 標準MCPプロトコルをサポートするすべてのクライアント
🙏 謝辞
📞 連絡先
質問や提案がある場合は、イシューを作成してください。
⭐ このプロジェクトを気に入った場合は、星をつけるのを忘れないでください!