返回市场
麦克服AWS单点登录

麦克服AWS单点登录

作者:aashari7 星标更新:2025-11-20

项目介绍

将AI连接到您的AWS资源

通过Single Sign-On将Claude、Cursor AI和其他AI助手直接连接到您的AWS账户,从而改变您管理和访问AWS基础设施的方式。使用自然语言即时访问您的云资源,执行命令并管理EC2实例。

NPM 版本

您可以做什么

询问AI关于您的AWS账户"显示我所有的AWS账户和可用角色"
执行AWS命令"列出生产账户中的所有S3桶"
管理EC2实例"检查服务器i-123456789的磁盘使用情况"
访问多账户设置"切换到测试环境账户并描述VPC"
监控资源"获取所有正在运行的EC2实例的状态"
运行shell命令"通过SSM在web服务器上执行'df -h'"

完美适用于

  • DevOps工程师 管理多账户AWS环境和基础设施自动化
  • 云架构师 需要快速访问跨AWS账户的资源信息
  • 开发者 想要检查部署并通过AI运行AWS CLI命令
  • SRE团队 使用自然语言监控和故障排除AWS资源
  • IT管理员 管理EC2实例并安全地执行远程命令
  • 任何人 希望使用对话式AI与AWS交互

快速开始

两分钟内启动:

1. 设置您的AWS SSO

设置AWS IAM身份中心:

  1. 在您的AWS账户中启用AWS IAM身份中心
  2. 配置您的身份源(AWS目录、Active Directory或外部IDP)
  3. 设置权限集并将用户分配给AWS账户
  4. 记录您的AWS SSO启动URL(例如,https://your-company.awsapps.com/start

2. 即刻尝试

# 设置您的AWS SSO配置
export AWS_SSO_START_URL="https://your-company.awsapps.com/start"
export AWS_REGION="us-east-1"

# 启动认证流程
npx -y @aashari/mcp-server-aws-sso login

# 列出可访问的账户和角色
npx -y @aashari/mcp-server-aws-sso ls-accounts

# 执行AWS命令
npx -y @aashari/mcp-server-aws-sso exec-command \
  --account-id 123456789012 \
  --role-name ReadOnly \
  --command "aws s3 ls"

连接到AI助手

对于Claude桌面用户

在您的Claude配置文件(~/.claude/claude_desktop_config.json)中添加以下内容:

{
  "mcpServers": {
    "aws-sso": {
      "command": "npx",
      "args": ["-y", "@aashari/mcp-server-aws-sso"],
      "env": {
        "AWS_SSO_START_URL": "https://your-company.awsapps.com/start",
        "AWS_REGION": "us-east-1"
      }
    }
  }
}

重启Claude桌面,您将在状态栏看到“🔗 aws-sso”。

对于其他AI助手

大多数AI助手支持MCP。全局安装服务器:

npm install -g @aashari/mcp-server-aws-sso

然后配置您的AI助手以使用具有STDIO传输的MCP服务器。

可选:配置文件

创建~/.mcp/configs.json进行系统范围的配置:

{
  "aws-sso": {
    "environments": {
      "AWS_SSO_START_URL": "https://your-company.awsapps.com/start",
      "AWS_REGION": "us-east-1",
      "DEBUG": "false"
    }
  }
}

替代配置键:系统也接受"@aashari/mcp-server-aws-sso""mcp-server-aws-sso"而不是"aws-sso"

实际示例

🔐 认证和探索

询问您的AI助手:

  • "登录AWS SSO并显示我的认证状态"
  • "列出我所有的AWS账户和我可以承担的角色"
  • "检查我是否仍然认证到AWS"
  • "显示我有权访问的AWS账户"

🛠️ 执行AWS命令

询问您的AI助手:

  • "使用ReadOnly角色列出生产账户中的所有S3桶"
  • "显示us-west-2区域中所有正在运行的EC2实例"
  • "描述测试环境AWS账户中的VPC"
  • "获取账户123456789012中的RDS数据库状态"

🖥️ 管理EC2实例

询问您的AI助手:

  • "检查EC2实例i-1234567890abcdef0的磁盘使用情况"
  • "通过系统管理器在我的web服务器上运行'uptime'"
  • "在生产中的实例i-abc123上执行'systemctl status nginx'"
  • "从我的所有应用服务器获取内存使用情况"

🔍 基础设施监控

询问您的AI助手:

  • "列出开发账户中的所有Lambda函数"
  • "显示us-east-1中的CloudFormation堆栈"
  • "检查我的负载均衡器的健康状况"
  • "获取处于ALARM状态的最新CloudWatch警报"

🔄 多账户操作

询问您的AI助手:

  • "切换到账户987654321098并使用AdminRole列出所有安全组"
  • "比较测试环境和生产账户之间的运行实例"
  • "检查我在所有AWS账户中的备份策略"
  • "审核安全账户中的IAM用户"
<details> <summary><b>MCP工具示例(点击展开)</b></summary>

aws_sso_login

基本登录:

{}

自定义登录选项:

{
  "launchBrowser": false
}

aws_sso_status

检查认证状态:

{}

aws_sso_ls_accounts

列出所有账户和角色:

{}

aws_sso_exec_command

列出S3桶:

{
  "accountId": "123456789012", 
  "roleName": "ReadOnly",
  "command": "aws s3 ls"
}

描述特定区域中的EC2实例:

{
  "accountId": "123456789012",
  "roleName": "AdminRole",
  "command": "aws ec2 describe-instances --query 'Reservations[*].Instances[*].[InstanceId,State.Name,InstanceType]' --output table",
  "region": "us-west-2"
}

aws_sso_ec2_exec_command

检查系统资源:

{
  "instanceId": "i-0a69e80761897dcce",
  "accountId": "123456789012",
  "roleName": "InfraOps",
  "command": "uptime && df -h && free -m"
}
</details>

传输模式

此服务器支持两种传输模式,用于不同的集成场景:

STDIO传输(默认用于MCP客户端)

  • 通过stdin/stdout的传统子进程通信
  • 适合本地AI助手集成(如Claude桌面、Cursor AI)
  • 使用基于管道的通信进行直接MCP协议交换
# 使用STDIO传输(默认用于AI助手)
TRANSPORT_MODE=stdio npx @aashari/mcp-server-aws-sso

# 使用npm脚本(安装后)
npm run mcp:stdio

HTTP传输(默认用于服务器模式)

  • 基于现代HTTP的传输,带有服务端发送事件(SSE)
  • 支持多个并发连接
  • 更适合基于Web的集成和开发
  • 默认运行在3000端口(可通过PORT环境变量配置)
  • 端点:http://localhost:3000/mcp
  • 健康检查:http://localhost:3000/
# 使用HTTP传输(无CLI参数时默认)
TRANSPORT_MODE=http npx @aashari/mcp-server-aws-sso

# 使用npm脚本(安装后)
npm run mcp:http

# 使用MCP Inspector测试
npm run mcp:inspect

环境变量

传输配置:

  • TRANSPORT_MODE:设置为stdiohttp(默认:服务器模式为http,MCP客户端为stdio
  • PORT:HTTP服务器端口(默认:3000)
  • DEBUG:启用调试日志(默认:false)

认证:

  • AWS_SSO_START_URL:您的AWS SSO启动URL
  • AWS_SSO_REGION:您的AWS SSO区域
  • AWS_PROFILE:您的AWS配置文件名(可选)
  • AWS_REGION:您的AWS区域(可选)

CLI命令

CLI命令使用kebab-case。运行--help以获取详细信息(例如,mcp-aws-sso login --help)。

  • login:通过AWS SSO进行认证(--no-launch-browser)。示例:mcp-aws-sso login
  • status:检查认证状态(无选项)。示例:mcp-aws-sso status
  • ls-accounts:列出账户/角色(无选项)。示例:mcp-aws-sso ls-accounts
  • exec-command:运行AWS CLI命令(--account-id--role-name--command--region)。示例:mcp-aws-sso exec-command --account-id 123456789012 --role-name ReadOnly --command "aws s3 ls"
  • ec2-exec-command:在EC2上运行shell命令(--instance-id--account-id--role-name--command--region)。示例:mcp-aws-sso ec2-exec-command --instance-id i-0a69e80761897dcce --account-id 123456789012 --role-name InfraOps --command "uptime"
<details> <summary><b>CLI命令示例(点击展开)</b></summary>

登录

标准登录(自动启动浏览器并轮询):

mcp-aws-sso login

不启动浏览器的登录:

mcp-aws-sso login --no-launch-browser

执行AWS命令

列出S3桶:

mcp-aws-sso exec-command \
  --account-id 123456789012 \
  --role-name ReadOnly \
  --command "aws s3 ls"

列出特定区域的EC2实例:

mcp-aws-sso exec-command \
  --account-id 123456789012 \
  --role-name AdminRole \
  --region us-west-2 \
  --command "aws ec2 describe-instances --output table"

执行EC2命令

检查系统资源:

mcp-aws-sso ec2-exec-command \
  --instance-id i-0a69e80761897dcce \
  --account-id 123456789012 \
  --role-name InfraOps \
  --command "uptime && df -h && free -m"
</details>

故障排除

“认证失败”或“令牌过期”

  1. 重新认证AWS SSO

    # 测试您的SSO配置
    npx -y @aashari/mcp-server-aws-sso login
    
  2. 检查您的AWS SSO配置

    • 验证您的AWS_SSO_START_URL是正确的(应该是您的组织SSO门户)
    • 确保您的AWS_REGION与您的SSO区域配置匹配
  3. 验证您的SSO设置

    • 确保您可以通过浏览器访问SSO门户
    • 检查您的AWS账户分配是否有效

“未找到账户”或“未找到角色”

  1. 检查可用账户和角色

    # 列出所有可访问的账户
    npx -y @aashari/mcp-server-aws-sso ls-accounts
    
  2. 验证账户ID格式

    • 账户ID应精确为12位数字
    • 使用ls-accounts输出中的确切账户ID
  3. 检查角色权限

    • 确保您有权限承担指定的角色
    • 使用您的权限集中的确切角色名称

“未找到AWS CLI”或命令执行错误

  1. 安装AWS CLI v2

  2. 独立测试AWS CLI

    aws --version
    aws sts get-caller-identity
    

“EC2命令失败”或“SSM连接问题”

  1. 验证EC2实例设置

    • 实例必须安装并运行SSM代理
    • 实例需要一个具有AmazonSSMManagedInstanceCore策略的IAM角色
  2. 检查您的角色权限

    • 您承担的角色需要ssm:SendCommandssm:GetCommandInvocation权限
    • 验证实例处于运行状态
  3. 测试SSM连接性

    # 测试实例是否可以通过SSM访问
    npx -y @aashari/mcp-server-aws-sso exec-command \
      --account-id YOUR_ACCOUNT \
      --role-name YOUR_ROLE \
      --command "aws ssm describe-instance-information"
    

Claude桌面集成问题

  1. 更新配置文件后重启Claude桌面
  2. 检查状态栏是否有“🔗 aws-sso”指示器
  3. 验证配置文件位置
    • macOS:~/.claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json

获取帮助

如果您仍然遇到问题:

  1. 运行一个简单的测试命令以验证一切正常
  2. 查看GitHub问题以查找类似的问题
  3. 创建一个新的问题,附带您的错误消息和设置详情

常见问题

我需要哪些权限?

对于AWS SSO设置:

  • 您需要一个具有IAM身份中心访问权限的AWS SSO账户
  • 由您的AWS管理员配置的权限集
  • 访问您想要管理的具体AWS账户

对于通过SSM的EC2命令:

  • 您承担的角色需要ssm:SendCommandssm:GetCommandInvocation权限
  • EC2实例需要一个具有AmazonSSMManagedInstanceCore策略的IAM角色
  • 目标实例上必须安装并运行SSM代理

我能用这个连接多个AWS组织吗?

目前,每个安装支持一个AWS SSO启动URL。对于多个组织,您需要单独的配置或手动切换AWS_SSO_START_URL环境变量。

SSO凭证的有效期有多长?

AWS SSO令牌通常持续8-12小时。特定账户/角色的临时凭证大约持续1小时。该工具会自动处理令牌刷新和凭证缓存。

哪些AI助手支持这个?

任何支持模型上下文协议(MCP)的AI助手:

  • Claude桌面(最受欢迎)
  • Cursor AI
  • Continue.dev
  • 许多其他助手

我的数据安全吗?

是的!此工具:

  • 完全在您的本地机器上运行
  • 使用您自己的AWS SSO凭证
  • 从未将您的数据发送给第三方
  • 只访问您授权其访问的内容
  • 使用自动过期的临时凭证

我需要安装AWS CLI吗?

是的,需要AWS CLI v2来使用aws_sso_exec_command工具。但是,认证和账户列表功能不需要它。

我可以使用这个与AWS CLI配置文件一起工作吗?

此工具直接使用AWS SSO,并不依赖于AWS CLI配置文件。它独立管理自己的凭证缓存,与AWS CLI配置无关。

<details> <summary><b>响应格式示例(点击展开)</b></summary>

MCP工具响应示例(aws_sso_exec_command

# AWS SSO:命令结果

**账户/角色**:123456789012/ReadOnly
**区域**:us-east-1(默认:ap-southeast-1)

## 命令

	aws s3 ls

## 输出

	2023-01-15 08:42:53 my-bucket-1
	2023-05-22 14:18:19 my-bucket-2
	2024-02-10 11:05:37 my-logs-bucket

*执行时间:2025-05-19 06:21:49 UTC*

错误响应示例

# ❌ AWS SSO:命令错误

**账户/角色**:123456789012/ReadOnly
**区域**:us-east-1(默认:ap-southeast-1)

## 命令

	aws s3api get-object --bucket restricted-bucket --key secret.txt output.txt

## 错误:权限被拒绝
角色`ReadOnly`没有执行此命令的权限。

##