aws-mcp服务器
一个本地MCP服务器,使用SSO身份验证将AI代理(Cursor、Claude Desktop等)跨多个AWS帐户连接到AWS服务。
特性
- CloudWatch日志 --查询日志 开发, 暂存,以及 产品 环境
- 简单队列服务 --列出队列、发送消息、检查队列属性
- 使用基于配置文件的凭据进行AWS SSO身份验证
- 七种工具:SSO登录、列表日志组、列表日志流、Insights查询、列表队列、发送消息、获取队列属性
- 查询 一次通话中有多个日志组 (最多10个)
- 接受 ISO 8601或Unix纪元秒 对于时间范围
- 项目配置 (
aws-mcp.json在您的仓库根目录下,自动发现)将已知的日志组名称和队列名称烘焙成工具描述 - 配置解析警告在启动时显示给代理(已包含在工具描述中)和stderr
- 自动身份验证错误检测,带有有用的重试说明
- 响应截断为50000个字符,以保持上下文可管理
先决条件
- Node.js 18+
- 配置了SSO的AWS CLI v2(
aws configure sso) - 在中配置的AWS SSO配置文件
~/.aws/config(见下面的账户和个人资料映射)
设置
cd aws-mcp-server
npm install
npm run build光标MCP配置
添加以下内容 ~/.cursor/mcp.json (全球)或 /.cursor/mcp.json (每个项目):
{
"mcpServers": {
"aws": {
"command": "node",
"args": ["/absolute/path/to/aws-mcp-server/dist/index.js"]
}
}
}替换 /absolute/path/to/aws-mcp-server 使用系统上的实际路径(例如。 /Users/yourname/aws-mcp-server).
保存后重新启动游标 mcp.json.
账户和个人资料映射
| 环境 | Env Var |
|---|---|
| dev | AWS_DEV_PROFILE |
| 分期付款 | AWS_STAGING_PROFILE |
| prod | AWS_PROD_PROFILE |
将这些环境变量设置为您的AWS SSO配置文件名称(例如。 export AWS_DEV_PROFILE=myorg-dev).
另外设置:
| 环境变量 | 描述 |
|---|---|
AWS_REGION | 所有API调用的AWS区域(例如。 eu-west-1) |
项目配置(可选)
删除一个名为的文件 aws-mcp.json 在项目的根目录中描述其日志组和队列。
{
"logGroups": [
{ "logGroupName": "myorg/dev/myapp", "description": "Main application logs (dev)" },
{ "logGroupName": "myorg/prod/myapp", "description": "Main application logs (prod)" }
],
"queues": [
{ "queueName": "order-processing", "description": "Processes new orders" },
{ "queueName": "email-notifications", "description": "Sends email notifications" }
]
}名称和描述被烘焙到工具描述中,以实现代理的可发现性,因此代理不需要来回发现来知道哪些资源是相关的。
发现
启动时,服务器按以下顺序解析配置文件:
- 如果
AWS_PROJECT_CONFIG如果设置了,则使用该路径(绝对或相对于服务器的CWD)。适用于绝对路径或不寻常的布局。 - 否则,服务器将从其当前工作目录中查找
aws-mcp.json,在第一个匹配处或封闭的git存储库根处停止。 - 如果找不到任何内容,则所有工具都可以在没有项目上下文的情况下工作。
启动时,发现结果和任何解析警告都会记录到stderr中,警告也会被注入到工具描述中,以便代理可以向您显示。
工具
aws_sso_login
启动环境的AWS SSO登录,打开浏览器窗口。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | 目标AWS环境 |
使用说明: 调用此工具后,代理将提示您在浏览器中批准登录。只有在浏览器中确认后才能重试原始请求。
______________________________________________________________________
cloudwatch_list_log_groups
列出具有可选名称前缀过滤的CloudWatch日志组。
| 参数 | 类型 | 必填 | 默认 | 说明 | ||
|---|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | -- | 目标AWS环境 |
| 前缀 | string | 否 | -- | 按日志组名称前缀筛选 | ||
| 限制 | number | 否 | 50 | 要返回的最大日志组数 |
退货: 一大批 { logGroupName, retentionInDays }.
______________________________________________________________________
cloudwatch_list_log_streams
列出日志组中的日志流,最近处于活动状态的日志流排在第一位。
| 参数 | 类型 | 必填 | 默认 | 说明 | ||
|---|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | -- | 目标AWS环境 |
| log_group_name | string | 是 | -- | 完整日志组名称 | ||
| 限制 | number | 否 | 20 | 要返回的最大流数 |
退货: 一大批 { logStreamName, lastEventTime }.
______________________________________________________________________
cloudwatch_insights_query
运行CloudWatch Logs Insights查询并轮询结果。支持在一次呼叫中查询多个日志组。
| 参数 | 类型 | 必填 | 默认 | 说明 | ||
|---|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | -- | 目标AWS环境 |
| log_group_names | `string \ | string[]` | 是 | -- | 日志组名称或最多10个日志组名称的数组 | |
| 查询 | string | 是 | -- | 记录Insights查询字符串 | ||
| 开始时间 | `string \ | number` | 是 | -- | ISO 8601字符串或Unix纪元秒 | |
| 结束时间 | `string \ | number` | 否 | 现在 | ISO 8601字符串或Unix纪元秒 |
退货: 结果行对象数组,或带有查询ID的“仍在运行”消息。
示例查询:
fields @timestamp, @message | sort @timestamp desc | limit 20
fields @timestamp, @message | sort @timestamp desc | limit 5
fields @timestamp, @message | filter @message like /(?i)error/ | sort @timestamp desc | limit 50
fields @timestamp, @message | filter someField = "value" | sort @timestamp desc | limit 50
stats count(*) by someField | sort count(*) desc
fields @timestamp, requestId, duration | filter duration > 1000 | sort duration desc要发现不熟悉的日志组中的可用字段,请运行一个最近的小查询(例如。 limit 5 在过去的一个小时里)并检查原材料 @message 在编写结构化过滤器之前。
______________________________________________________________________
sqs_list_queues
列出指定环境中的SQS队列。
| 参数 | 类型 | 必填 | 默认 | 说明 | ||
|---|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | -- | 目标AWS环境 |
| 前缀 | string | 否 | -- | 按名称前缀筛选队列 | ||
| 限制 | number | 否 | 50 | 返回的最大队列数 |
退货: 一大批 { queueUrl, queueName }.
______________________________________________________________________
sqs_send_message
向SQS队列发送消息。支持标准和FIFO队列、消息属性和延迟传递。
| 参数 | 类型 | 必填 | 默认 | 说明 | ||
|---|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | -- | 目标AWS环境 |
| queue_url | string | 是 | -- | 完整的SQS队列URL | ||
| message_body | string | 是 | -- | 消息内容(纯文本或JSON) | ||
| message_group_id | string | 否 | -- | 消息组ID(FIFO队列需要) | ||
| 重复数据删除_id | string | 无 | -- | 重复数据消除令牌(FIFO不需要基于内容的重复数据消除) | ||
| 延迟_秒 | number | 否 | -- | 延迟交付N秒(0-900) | ||
| 消息属性 | Record | 否 | -- | 自定义消息属性(type:“字符串”、“数字”或“二进制”) |
退货: { messageId, sequenceNumber?, md5OfMessageBody }.
______________________________________________________________________
sqs_get_queue_attributes
检索SQS队列的属性——消息计数、配置和ARN。
| 参数 | 类型 | 必填 | 说明 | ||
|---|---|---|---|---|---|
| 环境 | `"dev" \ | "staging" \ | "prod"` | 是 | 目标AWS环境 |
| queue_url | string | 是 | 完整的SQS队列URL |
退货: 队列属性,包括消息计数、保留期、可见性超时、FIFO状态等。
______________________________________________________________________
身份验证错误
如果任何工具返回身份验证错误,代理将自动建议调用 aws_sso_login。一旦您批准浏览器登录,请重试原始请求。
从v1迁移(cloudwatch mcp服务器)
如果您要从原始版本升级 cloudwatch-mcp-server:
- 环境变量已重命名 --共享变量现在使用
AWS_前缀:
- CW_REGION → AWS_REGION - CW_DEV_PROFILE → AWS_DEV_PROFILE - CW_STAGING_PROFILE → AWS_STAGING_PROFILE - CW_PROD_PROFILE → AWS_PROD_PROFILE - CW_PROJECT_CONFIG → AWS_PROJECT_CONFIG
- 日志组前缀已删除 —
CW_DEV_LOG_PREFIX,CW_STAGING_LOG_PREFIX,以及CW_PROD_LOG_PREFIX不再需要。项目配置中的日志组现在使用全名,而不是相对于前缀的后缀。
- SSO工具已重命名 —
cloudwatch_sso_login→aws_sso_login.
- 项目配置文件名 --重命名文件
aws.project.json到aws-mcp.json并把它放在项目的根上。旧名称仍被发现具有向后兼容性,但会发出弃用警告。使用新名称,服务器通过从CWD向上走到封闭的git根目录来自动发现文件,因此每个项目.cursor/mcp.json(他唯一的工作就是设定AWS_PROJECT_CONFIG=./aws.project.json)不再需要,可以删除。AWS_PROJECT_CONFIG如果需要,它仍然可以作为显式覆盖。
- 项目配置字段名称 --JSON文件支持可选
queues旁边的数组logGroups。每个日志组条目都使用logGroupName(完整的CloudWatch日志组名称),每个队列条目使用queueName.遗产suffix和name字段仍然可以接受向后兼容性,但会发出弃用警告——这些警告在启动时出现在stderr中,并被注入到工具描述中,以便代理可以显示它们。
cloudwatch_sample_logs移除 --这个工具是一个薄薄的包装cloudwatch_insights_query。要检查原始日志条目,请运行cloudwatch_insights_query与一个小limit(例如。fields @timestamp, @message | sort @timestamp desc | limit 5)最近start_time.
- MCP配置键 --考虑重命名
"cloudwatch"到"aws"在你的mcp.json.
