🚀 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。
⭐ 如果您喜欢这个项目,别忘了给它加星!