MCP服务器已授权


用于AWS多帐户访问的模型上下文协议(MCP)服务器 授予,具有自动凭证缓存、智能命令安全检测和安全第一白名单。
注: 这是一个独立的实现。 授予 是一种产品 共同命运.
特性
- 🔐 安全的AWS访问 -使用授予功能自动缓存凭据
- 🎯 多账户支持 -同时跨多个AWS帐户查询资源
- 🛡️ 智能安全 -自动检测和阻止破坏性操作
- ⚙️ 可配置的配置文件 -后缀过滤或显式配置文件选择
- 📋 命令白名单 -安全第一,持续批准
- 🔍 动态发现 -自动从以下位置发现配置文件
~/.aws/config
快速开始
先决条件
- Node.js 18+
- AWS-CLI
- 授予
- AWS SSO已在中配置
~/.aws/config(或%UserProfile%\.aws\config在Windows上)
安装已授权
macOS(Homebrew):
brew tap common-fate/granted
brew install common-fate/granted/granted窗户:
- 从下载最新的Windows二进制文件 授权发布
- 寻找 granted_x.x.x_windows_x86_64.zip 或 granted_x.x.x_windows_arm64.zip (取决于您的架构)
- 解压缩ZIP文件
- 移动
granted.exe到C:\Program Files\granted\ - 添加
C:\Program Files\granted\到你的路径:
- 开放环境变量:Win+X→ 系统→ 高级系统设置→ 环境变量 - 在“系统变量”下,选择“路径”→ Edit - 点击“新建”并添加: C:\Program Files\granted\ - 单击“确定”并重新启动终端
注: Granted目前在Chocolatey上不可用。如果你想看到它包装在那里,可以考虑 打开一个问题 与格兰特团队。
Linux(APT):
# Add the repository and install
sudo apt update
sudo apt install grantedLinux(手动):
# Download, extract, and add to PATH
curl -OL https://github.com/common-fate/granted/releases/download/v0.38.0/granted_0.38.0_linux_x86_64.tar.gz
sudo tar -zxvf granted_0.38.0_linux_x86_64.tar.gz -C /usr/local/bin/验证安装: granted -v
安装
# Clone and install
cd ~/mcp-server-granted
npm install
# Configuration (choose one):
# Option 1: Interactive setup (recommended for first-time users)
node server.js --setup
# Option 2: Manual configuration
# Create ~/.mcp-granted-config.json with your preferences
# See CONFIGURATION.md for details
# Add to MCP config (~/.copilot/mcp-config.json)
{
"mcpServers": {
"mcp-server-granted": {
"command": "node",
"args": ["/Users/YOUR_USERNAME/mcp-server-granted/server.js"]
}
}
}Windows MCP配置示例:
{
"mcpServers": {
"mcp-server-granted": {
"command": "node",
"args": ["C:\\Users\\YOUR_USERNAME\\mcp-server-granted\\server.js"]
}
}
}基本用法
安装后,询问您的AI助手:
"List S3 buckets in dev/readonly"
"Show VPCs across all prod accounts"
"What's my AWS credential status?"打印服务器版本以验证您运行的是最新版本:
node server.js --version运作原理
配置文件发现
自动从以下位置加载AWS配置文件 ~/.aws/config.配置要使用的配置文件:
- 后缀过滤:包括以结尾的配置文件
/readonly,/admin等等。 - 显式列表:手动选择特定配置文件
安全等级
- 严格 (默认):确认所有破坏性和修改操作
- 正常:仅确认破坏性操作
- 宽松的:最低限度的确认(仅限测试环境)
命令白名单
安全第一的方法,所有AWS命令都必须得到明确批准:
- 第一轮
aws ec2 describe-instances→ ❌ 已屏蔽 - AI呼叫
aws_whitelist_command→ ✅ 被正式接受的 - 后续运行→ ✅ 立即允许
白名单在会话中持续存在——批准一次,永远使用。
凭据缓存
- 为AWS SSO身份验证授予的用途
- 在本地缓存凭据(50分钟有效期)
- 自动刷新过期的凭据
- 临时会话令牌(从不使用长期密钥)
配置
AWS配置示例
[profile dev/readonly]
sso_start_url = https://your-org.awsapps.com/start/
sso_region = us-east-1
sso_account_id = 123456789012
sso_role_name = ReadOnlyRole
region = us-west-2
[profile prod/admin]
sso_start_url = https://your-org.awsapps.com/start/
sso_region = us-east-1
sso_account_id = 987654321098
sso_role_name = AdminRole
region = us-east-1配置选项
选项1:交互式设置(推荐)
node server.js --setup指导您完成:
- 配置文件过滤模式选择
- 安全级别配置
- 提升权限的安全影响
选项2:手动配置
创建 ~/.mcp-granted-config.json 手动:
{
"profileFilter": {
"mode": "suffix",
"suffixes": ["/readonly", "/ro"],
"profiles": []
},
"safetyLevel": "strict",
"setupCompleted": true
}这两个选项都将配置保存到 ~/.mcp-granted-config.json
看 配置.md 了解详细的配置选项。
可用工具
| 工具 | 说明 |
|---|---|
aws_run_command | 在特定配置文件中运行AWS CLI命令 |
aws_run_command_confirmed | 在用户确认破坏性操作后运行AWS CLI命令 |
aws_run_across_profiles | 跨多个配置文件运行命令 |
aws_credential_status | 检查缓存的凭据状态 |
aws_refresh_credentials | 刷新配置文件的凭据 |
aws_list_profiles | 列出可用的AWS配置文件 |
aws_whitelist_command | 批准命令以供将来使用 |
aws_list_whitelist | 查看白名单中的命令 |
aws_view_config | 查看当前配置 |
aws_logout | 清除缓存的凭据 |
项目结构
mcp-server-granted/
├── server.js # MCP server
├── config-manager.js # Configuration & safety
├── test/ # Test suite (115 tests)
├── CONFIGURATION.md # Detailed configuration guide
├── DESTRUCTIVE_OPERATIONS.md # Confirmation flow documentation
└── README.md # This file安全特性
破坏性操作检测与确认
自动检测包含以下内容的命令:
delete,remove,destroy,terminate
智能确认流程:
- 当您请求破坏性操作时,MCP服务器会检测到它
- 返回包含操作详细信息的错误消息
- 然后,您可以使用
aws_run_command_confirmed审核后执行 - 或者选择取消并避免操作
这可以防止意外的破坏性行为,同时允许故意操作。
看 破坏行动.md 以获取详细的示例和配置。
提升配置文件警告
具有管理员/超级权限的配置文件已被标记:
dev/admin ⚠️ ELEVATED
prod/admin ⚠️ ELEVATED多层安全
根据环境选择您的安全级别:
- 生产→ 严格
- 混合→ 正常
- 测试/开发→ 宽松的
团队共享
可以安全地进行版本控制:
- ✅ 没有硬编码凭据
- ✅ 代码中没有帐户ID
- ✅ 所有秘密
~/.aws/config(忽略) - ✅ 每个开发人员都有自己的白名单
测试
npm test # Run all 115 tests
npm run test:coverage # Run with coverage report覆盖:总体约18%,业务逻辑覆盖率90-95%
- 核心功能已全面测试
- 框架样板除外
看 测试\_ SUMMARY.md 了解详情。
故障排除
命令未列入白名单:
Use the aws_whitelist_command tool to approve this command配置文件未显示:
- 跑
node server.js --setup配置筛选 - 检查
~/.mcp-granted-config.json - 验证
~/.aws/config格式
凭据已过期:
"Refresh credentials for dev/readonly"未找到MCP服务器:
- 检查路径
~/.copilot/mcp-config.json - 重新启动Copilot CLI
文档
- 配置.md -详细的配置指南
- 测试\_ SUMMARY.md -测试覆盖率详细信息
许可证
麻省理工学院
学分
免责声明
创建此项目是为了解决一个特定问题:简化原作者跨多个帐户的AWS CLI访问和资产检查。它实现了适用于该用例的安全控制,但可能不适合所有环境。
使用风险自负。 此工具:
- 使用您的凭据执行AWS CLI命令
- 配置后修改AWS资源
- 管理敏感凭据缓存
- 可能不符合贵组织的安全要求
始终首先在非生产环境中审查和测试配置。确保您的安全级别和配置文件过滤符合您的安全策略。
这是一个独立的项目,不隶属于Common Fate或Anthropic,也不受其认可或赞助。
