返回 MCP 目录
public公开dns本地运行

cloud-mcp_server

一个支持AWS、Azure和GCP云服务的MCP服务器,提供资源管理、成本分析、监控和安全功能,使AI助手能够管理云基础设施。

article

README

🚀 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)

步骤

  1. 克隆仓库
git clone https://github.com/code-alchemist01/Cloud-mcp_server.git
cd Cloud-mcp_server
  1. 安装依赖
npm install
  1. 构建项目
npm run build
  1. 配置云凭据(见下文)

  2. 测试运行

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
# 使用默认的 Azure 凭据
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"
      }
    }
  }
}

创建服务账号

  1. GCP 控制台 → IAM 与管理 → 服务账号
  2. 创建服务账号
  3. 授予角色:Compute Viewer, Storage Viewer, Cloud Functions Viewer
  4. 创建 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 - 报告和文档
  • 文本 - 纯文本输出

🤝 贡献指南

  1. Fork 仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add amazing feature')
  4. 推送分支 (git push origin feature/amazing-feature)
  5. 发起 Pull Request

📄 许可证

本项目采用 MIT 许可证,详情请查看 LICENSE 文件。

🔗 MCP 客户端支持

此 MCP 服务器与以下客户端兼容:

  • Cursor IDE - 完全支持
  • Claude Desktop - 完全支持
  • Anthropic API - 通过 MCP 协议
  • 其他 MCP 客户端 - 所有支持标准 MCP 协议的客户端

🙏 致谢

📞 联系我们

如果您有任何问题或建议,请创建 issue。


⭐ 如果您喜欢这个项目,别忘了给它加星!

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端