README
🚀 CloudWatch日志MCP服务器
CloudWatch日志MCP服务器是一个提供工具以访问AWS CloudWatch日志的MCP(模型上下文协议)服务器。它允许AI助手列出CloudWatch日志组,并从AWS CloudWatch读取日志条目,为日志管理和分析提供了便利。
🚀 快速开始
在使用该服务器前,需要确保已配置好AWS凭证,可通过AWS CLI或设置环境变量AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY来完成配置。之后根据自身需求,选择与Claude Desktop一起使用或者使用Docker运行服务器。
✨ 主要特性
- 日志组管理:提供
list_groups工具,可列出可用的CloudWatch日志组。 - 日志读取:提供
get_logs工具,能从特定日志组中获取CloudWatch日志。 - 灵活配置:支持通过AWS CLI、环境变量、Claude Desktop配置文件以及Docker容器等多种方式进行配置。
📦 安装指南
AWS凭证
确保已配置AWS凭证。您可以使用AWS CLI或通过设置环境变量来配置:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
与Claude Desktop一起使用
将以下内容添加到您的claude_desktop_config.json文件中:
{
"mcpServers": {
"cloudwatch-logs": {
"command": "python3",
"args": ["/path/to/cloudwatch-logs-mcp/main.py"],
"env": {
"AWS_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_SECRET_ACCESS_KEY>",
},
"disabled": false,
"autoApprove": []
}
}
}
Docker
如果您更愿意在Docker容器中运行服务器,可以设置一个Dockerfile并使用以下配置:
{
"mcpServers": {
"cloudwatch-logs": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"AWS_ACCESS_KEY_ID",
"-e",
"AWS_SECRET_ACCESS_KEY",
"mcp/cloudwatch-logs"
],
"env": {
"AWS_ACCESS_KEY_ID": "<YOUR_ACCESS_KEY_ID>",
"AWS_SECRET_ACCESS_KEY": "<YOUR_SECRET_ACCESS_KEY>",
}
}
}
}
💻 使用示例
基础用法
list_groups
列出可用的CloudWatch日志组:
# 调用list_groups工具
# 此处假设存在调用该工具的函数
result = list_groups()
print(result)
get_logs
从特定日志组中获取CloudWatch日志:
# 调用get_logs工具
# 此处假设存在调用该工具的函数
result = get_logs(logGroupName='your_log_group_name')
print(result)
高级用法
list_groups
列出特定前缀和区域的CloudWatch日志组:
# 调用list_groups工具,指定前缀和区域
# 此处假设存在调用该工具的函数
result = list_groups(prefix='your_prefix', region='your_region')
print(result)
get_logs
从特定日志组和日志流中,在指定时间范围内获取过滤后的CloudWatch日志:
# 调用get_logs工具,指定日志组、日志流、时间范围和过滤模式
# 此处假设存在调用该工具的函数
result = get_logs(logGroupName='your_log_group_name', logStreamName='your_log_stream_name', startTime='2024-01-01T00:00:00Z', endTime='2024-01-02T00:00:00Z', filterPattern='your_filter_pattern')
print(result)
📚 详细文档
可用工具
list_groups
列出可用的CloudWatch日志组。
参数:
| 参数 | 是否可选 | 详情 |
| ---- | ---- | ---- |
| prefix | 可选 | 日志组名称前缀 |
| region | 可选 | AWS区域 |
| accessKeyId | 可选 | AWS访问密钥ID |
| secretAccessKey | 可选 | AWS秘密访问密钥 |
| sessionToken | 可选 | AWS会话令牌 |
返回值:包含logGroupName、creationTime和storedBytes的JSON字符串。
get_logs
从特定日志组中获取CloudWatch日志。
参数:
| 参数 | 是否可选 | 详情 |
| ---- | ---- | ---- |
| logGroupName | 必填 | 日志组名称 |
| logStreamName | 可选 | 日志流名称 |
| startTime | 可选 | ISO格式时间或相对时间(例如,“5m”、“1h”、“1d”) |
| endTime | 可选 | ISO格式结束时间 |
| filterPattern | 可选 | 日志过滤模式 |
| region | 可选 | AWS区域 |
| accessKeyId | 可选 | AWS访问密钥ID |
| secretAccessKey | 可选 | AWS秘密访问密钥 |
| sessionToken | 可选 | AWS会话令牌 |
返回值:包含timestamp、message和logStreamName的JSON字符串。
🔧 技术细节
此服务器使用MCP SDK中的FastMCP类构建,该类提供了一种简单的方式来创建MCP服务器。服务器主要公开了两个工具:
list_groups:列出可用的CloudWatch日志组get_logs:从特定的日志组中读取日志条目
每个工具都实现了为@mcp.tool()装饰的异步函数。服务器使用boto3库与AWS服务进行交互。
📄 许可证
本项目采用MIT许可证。
Scan to join WeChat group