@openpeng/alilog-mcp
v1.0.2
Published
Aliyun SLS (Log Service) MCP Server - query logs via MCP protocol
Maintainers
Readme
@openpeng/alilog-mcp
Aliyun MCP Server — 提供阿里云日志服务 (SLS) 的 MCP 工具,支持从 Consul 或环境变量加载凭证。
快速开始
npm install -g @openpeng/alilog-mcpMCP 配置
在 Claude Desktop / Kiro / settings.json 中添加:
{
"mcpServers": {
"aliyun": {
"command": "npx",
"args": ["@openpeng/alilog-mcp"],
"env": {
"CRED_SOURCE": "consul",
"CONSUL_URL": "https://your-consul-url"
}
}
}
}凭证配置
通过 CRED_SOURCE 环境变量选择凭证加载方式:
Consul 模式(默认)
从 Consul KV 获取 AK/SK,适合共享开发环境。
CRED_SOURCE=consul
CONSUL_URL=https://your-consul-url
CONSUL_TOKEN= # 无 token 留空即可
# 可选:覆盖默认 KV 路径
CONSUL_PATH_ENDPOINT=your/path/ALI_SLS_ENDPOINT
CONSUL_PATH_AK_ID=your/path/ALI_SLS_ACCESS_KEY_ID
CONSUL_PATH_AK_SECRET=your/path/ALI_SLS_ACCESS_KEY_SECRET
CONSUL_PATH_PROJECT=your/path/ALI_SLS_PROJECT
CONSUL_PATH_LOGSTORE=your/path/ALI_SLS_LOGSTOREEnv 模式
直接从环境变量读取,适合 CI/CD 或本地覆盖。
CRED_SOURCE=env
ALI_SLS_ENDPOINT=cn-hangzhou.log.aliyuncs.com
ALI_SLS_ACCESS_KEY_ID=xxx
ALI_SLS_ACCESS_KEY_SECRET=xxx
ALI_SLS_PROJECT=my-project
ALI_SLS_LOGSTORE=my-logstore # 可选,默认 logstoreStatic 模式
与 env 相同,但凭证仅在启动时加载一次。
CRED_SOURCE=static
ALI_SLS_ENDPOINT=cn-hangzhou.log.aliyuncs.com
ALI_SLS_ACCESS_KEY_ID=xxx
ALI_SLS_ACCESS_KEY_SECRET=xxx
ALI_SLS_PROJECT=my-project
ALI_SLS_LOGSTORE=my-logstore工具列表
| 工具 | 说明 | 使用场景 |
|------|------|----------|
| sls_query_logs | 查询日志,支持 SLS 查询语法和 SQL | 搜索错误、关键字、traceId |
| sls_tail_logs | 获取最近 N 条日志 | 快速查看当前状态 |
| sls_list_projects | 列出 SLS 项目(支持模糊搜索) | 定位服务所属项目 |
| sls_list_logstores | 列出项目下的 logstore(支持模糊搜索) | 定位服务的日志存储 |
| sls_get_credentials | 显示当前凭证配置(密钥脱敏) | 验证配置是否正确 |
查询优化
- 默认使用
fast=true— 走 GetLogs 接口,关键字/字段查询速度快很多 - 仅在需要 SQL 聚合时用
fast=false— 如* | select count(*) group by level - 缩小时间范围 —
fromMinutesAgo越小扫描量越少,查询越快 - 使用精确字段过滤 —
level:ERROR、traceId:xxx比*快得多 - 分页获取 — 单次最多 100 条,用
offset翻页
项目结构
src/
├── index.ts # MCP server 入口,注册所有工具
├── sls-client.ts # SLS HTTP API 签名与请求(无原生依赖)
└── credentials.ts # 凭证加载(Consul / env / static)技术说明
- 不依赖阿里云官方 SDK(避免
lz4等原生编译依赖) - 使用 Node.js 内置
crypto模块实现 SLS HMAC-SHA1 签名 - 签名规范:
Authorization: LOG <AK>:<Base64(HMAC-SHA1(StringToSign, SK))> CanonicalizedResource包含排序后的 query params
