🚀 MCP 雲服務服務器
這是一個全面的 MCP(模型上下文協議)服務器,用於雲服務管理。支持 AWS、Azure 和 GCP,具備資源管理、成本分析、監控和安全等功能。
🚀 快速開始
MCP 雲服務服務器使用模型上下文協議(MCP)標準為 AI 助手提供雲管理能力。服務器通過 MCP 協議公開工具,AI 助手可使用這些工具執行雲操作。其架構如下:
AI 助手(Cursor/Claude)
↓ (MCP 協議)
MCP 雲服務服務器
↓ (SDK 調用)
雲服務提供商 API(AWS/Azure/GCP)
服務器針對每個雲服務提供商使用適配器模式來管理 SDK 調用,安全地存儲和管理憑據。
✨ 主要特性
- ☁️ 多雲支持:支持 AWS、Azure 和 GCP。
- 📊 資源管理:支持列出、創建、刪除、啟動和停止操作。
- 💰 成本分析:提供成本明細、趨勢和賬單分析。
- 📈 監控:包含指標、警報和健康檢查。
- 🔒 安全:提供安全掃描、合規性檢查和加密分析。
- 🔐 憑據管理:安全地存儲和管理憑據。
📦 安裝指南
要求
- 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(用於虛擬機管理)
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 與管理 → 服務賬號
- 創建服務賬號
- 授予角色:
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
工作區特定(推薦):
<項目根目錄>/.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": [
"/絕對路徑/到/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": ["/路徑/到/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 上的所有計算實例
顯示存儲桶
列出雲函數
成本分析:
分析 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 - 列出雲函數
資源管理工具(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 - 報告和文檔
- 文本 - 純文本輸出
🤝 貢獻指南
- Fork 倉庫
- 創建功能分支 (
git checkout -b feature/amazing-feature)
- 提交更改 (
git commit -m 'Add amazing feature')
- 推送分支 (
git push origin feature/amazing-feature)
- 發起 Pull Request
📄 許可證
本項目採用 MIT 許可證,詳情請查看 LICENSE 文件。
🔗 MCP 客戶端支持
此 MCP 服務器與以下客戶端兼容:
- ✅ Cursor IDE - 完全支持
- ✅ Claude Desktop - 完全支持
- ✅ Anthropic API - 通過 MCP 協議
- ✅ 其他 MCP 客戶端 - 所有支持標準 MCP 協議的客戶端
🙏 致謝
📞 聯繫我們
如果您有任何問題或建議,請創建 issue。
⭐ 如果您喜歡這個項目,別忘了給它加星!