云抽象层MCP服务器
一个模型上下文协议(MCP)服务器,为谷歌云平台(GCP)和微软Azure提供统一的工具,使人工智能助手能够在两个平台上与云资源进行交互。
特性
谷歌云平台(GCP)工具
gcloud命令执行
- 在安全限制下安全执行gcloud命令
- 支持特定于项目的命令
- 内置超时和缓冲限制
谷歌云存储(GCS)工具
- 列出桶和对象
- 读取对象内容和元数据
- 支持过滤和分页
微软Azure工具
Azure CLI命令执行
- 在安全限制下安全执行az命令
- 支持特定于订阅的命令
- 内置超时和缓冲限制
Azure存储工具
- 列出存储帐户
- 列出容器和blob
- 读取blob内容和元数据
- 支持过滤和分页
安装
npm install
npm run build用法
作为MCP服务器
服务器在stdio上运行,可以在MCP客户端中配置:
{
"servers": {
"cloud-abstraction-layer": {
"command": "node",
"args": ["dist/index.js"]
}
}
}可用工具
GCP工具
gcp_run_gcloud_command:执行gcloud命令(有安全限制)gcp_list_buckets:列出项目中的所有GCS存储桶gcp_list_objects:列出GCS存储桶中的对象gcp_read_object_content:读取地面军事系统对象的内容gcp_get_object_metadata:获取地面军事系统对象的元数据
Azure工具
azure_run_az_command:执行Azure CLI命令(有安全限制)azure_list_storage_accounts:列出订阅中的所有存储帐户azure_list_containers:列出Azure存储帐户中的容器azure_list_blobs:列出Azure存储容器中的Blobazure_read_blob_content:读取Azure存储blob的内容azure_get_blob_metadata:获取Azure存储blob的元数据
安全
服务器包括安全限制:
- 谷歌云平台:阻止执行身份验证、配置和init命令
- Azure:阻止执行登录、帐户和配置命令
- 限制命令执行时间(默认30秒)
- 限制缓冲区大小(默认为10MB)
认证
谷歌云平台
服务器使用Google Cloud应用程序默认凭据。确保您已通过身份验证:
gcloud auth application-default login或者,设置 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向服务帐户密钥文件。
微软 Azure
服务器使用Azure默认凭据。确保您已通过身份验证:
az login对于存储操作,您可以:
- 使用DefaultAzureCredential(建议用于开发)
- 提供存储帐户密钥作为参数(用于服务帐户)
发展
npm run dev # Watch mode
npm run build # Build TypeScript
npm run lint # Lint code
npm start # Run the server项目结构
.
├── src/
│ ├── index.ts # Main MCP server entry point
│ ├── tools/
│ │ ├── gcp-tools.ts # GCP tool implementations
│ │ └── azure-tools.ts # Azure tool implementations
│ └── utils/
│ ├── security.ts # Security validation utilities
│ └── command-executor.ts # Command execution utilities
├── dist/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md例子
列出GCP铲斗
{
"name": "gcp_list_buckets",
"arguments": {
"projectId": "my-gcp-project"
}
}执行Azure CLI命令
{
"name": "azure_run_az_command",
"arguments": {
"command": "resource list --output table",
"subscriptionId": "my-subscription-id"
}
}读取Azure Blob内容
{
"name": "azure_read_blob_content",
"arguments": {
"accountName": "mystorageaccount",
"containerName": "mycontainer",
"blobName": "path/to/file.txt",
"maxBytes": 1024
}
}许可证
阿帕奇-2.0
贡献
欢迎投稿!请随时提交拉取请求。
