GCP IAM角色推荐器MCP服务器
MCP(模型上下文协议)服务器,帮助用户发现和分析在Google Cloud Platform上执行特定操作所需的最低权限IAM角色。
概述
此服务器提供:
- 交互式项目ID提示:向用户询问他们的GCP项目ID,并提供有用的指导
- 查询可授予的角色:分析GCP项目的所有可用IAM角色,并建议特定操作所需的最低权限
- 获取所有角色:检索并缓存所有GCP IAM角色以供分析
先决条件
- 转到1.24或更高版本
- 已安装并验证Google Cloud SDK(gcloud)
- 正确的GCP项目访问和权限
安装
- 克隆或导航到此目录
- 安装依赖项:
go mod tidy- 构建服务器:
make build配置
服务器使用Google Cloud应用程序默认凭据。确保您已通过身份验证:
gcloud auth application-default login可用提示
get_project_id
交互式地询问用户他们的GCP项目ID,并提供如何找到它的有用指导。
参数:
action(可选):用户想要执行的操作(提供上下文)
例子:
{
"name": "get_project_id",
"arguments": {
"action": "add new secret value to secret manager"
}
}提示将引导用户使用以下方式查找他们的项目ID:
gcloud config get-value project- 谷歌云控制台
gcloud projects list
可用工具
1. query_grantable_roles
查询指定GCP项目的所有可授予IAM角色,并根据您要执行的操作提供智能建议。
参数:
project_id(必填):用于查询角色的GCP项目IDaction_description(必填):描述您想做什么(例如,“部署云功能”、“读取存储桶”)
例子:
{
"name": "query_grantable_roles",
"parameters": {
"project_id": "my-gcp-project",
"action_description": "deploy cloud functions and read from storage buckets"
}
}该工具将:
- 列出项目的所有可授予角色
- 使用关键字匹配分析您的动作描述
- 推荐最合适的最低权限角色
- 提供所有可用角色的综合表
2. fetch_all_roles
从Google Cloud获取所有IAM角色并将其缓存在本地以进行更快的分析。
参数:
force_refresh(可选):设置为“true”以强制刷新缓存,即使缓存存在
例子:
{
"name": "fetch_all_roles",
"parameters": {
"force_refresh": "false"
}
}此工具将:
- 从Google Cloud获取所有可用的IAM角色
- 在本地缓存它们以提高性能
- 提供已提取角色的摘要
3. get_instructions
获取AI代理选择正确IAM角色的说明。此工具提供了选择最低权限角色的指南。
工作流示例
角色发现工作流
- 了解您需要什么:
# Use the MCP tool through Cursor or direct API call
query_grantable_roles(
project_id="my-project",
action_description="deploy cloud functions"
)- 获取建议:
该工具分析您的行为并推荐以下角色:
- roles/cloudfunctions.developer - roles/storage.objectViewer (如果功能需要存储访问) - roles/logging.logWriter (用于功能日志)
- 使用推荐的角色:
然后,您可以使用这些角色建议来:
- 在您的基础架构中以代码形式配置IAM策略 - 向管理员请求适当的权限 - 设置具有最低权限的服务帐户
智能角色分析
服务器包括智能关键字分析,以推荐适当的角色:
按服务划分的GCP IAM角色:
- 存储/GCS:
storage.objectViewer,storage.objectCreator,storage.objectAdmin - 计算/VM:
compute.viewer,compute.instanceAdmin,compute.admin - GKE/Kubernetes:
container.viewer,container.clusterViewer,container.clusterAdmin - 云功能:
cloudfunctions.viewer,cloudfunctions.developer,cloudfunctions.admin - 云运行:
run.viewer,run.developer,run.admin - 云SQL:
cloudsql.viewer,cloudsql.client,cloudsql.admin - 发布/订阅:
pubsub.viewer,pubsub.subscriber,pubsub.publisher,pubsub.admin - 国际机械师协会:
iam.roleViewer,iam.securityReviewer,iam.roleAdmin - 秘密:
secretmanager.viewer,secretmanager.secretAccessor,secretmanager.admin
建立和运行
# Build the server
make build
# Run the server locally
make run
# Install globally to PATH as 'gcp-iam-server'
make install
# Uninstall from PATH
make uninstall
# Clean build artifacts
make clean运行后 make install,二进制文件将作为可用 gcp-iam-server 从系统中的任何地方。
项目结构
.
├── bin/ # Compiled binaries
├── cmd/
│ ├── main.go # Main application entry point
│ └── tools/ # MCP tool implementations
│ ├── query_grantable_roles.go
│ └── fetch_roles.go
├── Makefile # Build commands
├── README.md # This file
└── go.mod # Go module definition错误处理
服务器为常见问题提供明确的错误消息:
- 项目ID无效或不存在
- 身份验证失败
- 网络连接问题
- 缺少缓存的角色数据
安全考虑
- 服务器遵循最小特权原则
- 角色建议优先考虑最低限度的必要权限
- 所有分析都是使用缓存的角色数据在本地执行的
- 服务器在提出建议之前验证项目访问权限
与Cursor集成
此MCP服务器旨在与Cursor IDE无缝协作:
- 服务器使用MCP协议进行自然语言交互
- 通过表情符号和标记提供丰富的格式化输出
- 包括全面的错误处理和用户指导
- 支持交互式查询和程序化使用
光标MCP服务器配置
要将此GCP IAM服务器与Cursor一起使用,请将以下配置添加到Cursor设置中:
- 打开光标设置首选
Cursor→Settings→Features→MCP Servers - 添加配置 (选择以下方法之一):
选项A:使用环境变量(推荐)
{
"mcpServers": {
"gcp-iam": {
"name": "GCP IAM Recommender",
"command": "${MCP_SERVERS_PATH}/iam/bin/server"
}
}
}在shell中设置环境变量:
export MCP_SERVERS_PATH="/path/to/your/mcp-servers"选项B:使用主目录中的相对路径
{
"mcpServers": {
"gcp-iam": {
"name": "GCP IAM Recommender",
"command": "~/path/to/gcp-iam-recommender/bin/server"
}
}
}选项C:全局安装并使用二进制名称
{
"mcpServers": {
"gcp-iam": {
"name": "GCP IAM Recommender",
"command": "gcp-iam-server"
}
}
}对于选项C,全局安装服务器:
make install # This should install the binary to your PATH重要提示:
- 选择最适合您设置的选项
- 确保服务器二进制文件是使用
make build添加此配置之前 - 服务器将自动缓存IAM角色以提高性能
- 使用Google Cloud进行身份验证
gcloud auth application-default login
- 重新启动MCP 使更改生效
- 游标中的用法:配置后,您可以自然地与服务器交互:
- “从数据存储中删除记录需要什么IAM角色?” - “查找部署云功能的角色” - “获取从存储桶读取的最低权限角色”
服务器将根据您的操作描述提供智能建议,并帮助您了解GCP任务所需的确切权限。
故障排除
常见问题
- 身份验证错误:
# Re-authenticate with Google Cloud
gcloud auth application-default login- 项目访问被拒绝:
- 确保您拥有查看项目IAM角色所需的权限 - 验证项目ID是否正确且处于活动状态
- 缺少角色缓存:
- 使用 fetch_all_roles 填充角色缓存的工具 - 确保您有互联网连接可以从Google Cloud获取
