日志服务(SLS)官方提供 SLS MCP Server,在本地机器上运行,通过 MCP 协议向 AI Agent 开放 SLS 的资源查看、日志查询分析和告警诊断能力。将它接入 Qoder、Codex 等 AI Agent 后,浏览 SLS 资源、查询分析日志、排查告警等日常操作可以直接用自然语言完成,认证环节使用 OAuth 登录,无需创建或填写 AccessKey。
功能特性
自然语言操作日志:无需记忆控制台入口、无需手写查询语句,用一句话描述需求即可,AI 会自动选择合适的工具完成查询和分析。
支持 OAuth 登录:通过浏览器登录完成认证,凭证保存在阿里云 CLI 的 Profile,全程无需创建或填写 AccessKey。
免地域访问(Region-less):访问 Project 时无需指定其所属地域,MCP Server 会自动匹配对应的 Region,一份凭证配置即可跨地域访问所有 Project。
工作原理
MCP(Model Context Protocol,模型上下文协议)是一个开放标准协议,用于让 AI 助手以统一方式连接外部数据源和工具:产品提供 MCP Server 后,AI 助手即可直接使用它的能力。AI Agent 连接 SLS MCP Server 后,SLS MCP Server 会使用已配置的 OAuth 凭证代替用户调用 SLS OpenAPI。整体链路如下:
AI Agent(Qoder、Codex 等)
│ MCP 协议(stdio 传输)
▼
alibabacloud-sls-mcp-proxy(本地运行)
│ OAuth 凭证(来自阿里云 CLI Profile)
▼
日志服务(SLS)OpenAPI支持的操作场景
SLS MCP Server 当前提供三类共 11 个工具(Tool),覆盖以下典型场景。
资源发现
查看账号下可访问的 SLS 资源清单,包括 Project、Project 中的 LogStore 与 Metricstore,无需登录控制台逐个翻找。对应工具:sls_list_projects、sls_list_logstores、sls_list_metricstores。
日志分析
查询原始日志或执行 SLS SQL 分析,查看匹配日志的总数与时间分布,以及单条日志前后的上下文,无需手写查询语句或在控制台页面之间切换。对应工具:sls_get_logstore_index、sls_query_logs、sls_get_log_histogram、sls_get_context_logs。
告警诊断
查看告警规则与告警历史,并对指定告警实例分析触发原因,用于告警触发后的快速定位。对应工具:sls_list_alerts、sls_get_alert、sls_list_alert_history、sls_diagnose_alert。
适用范围
接入前,账号与本地环境需满足以下条件:
已拥有阿里云账号。使用 RAM 用户操作时,该 RAM 用户需要具备 SLS 的访问权限。
本地环境能够打开浏览器。OAuth 登录需要通过浏览器完成授权,纯终端环境无法配置 OAuth 凭证。
本地已安装
uv工具(文中使用的uvx命令随uv一起提供),安装方法参见 uv 官方文档。阿里云 CLI 的安装、OAuth 应用的管理员授权由下文步骤一和步骤二引导完成,无需提前准备。
使用限制
告警诊断类工具均为只读操作,不会修改告警状态;其中
sls_list_alerts不返回查询语句和通知目标,sls_get_alert会返回诊断查询,敏感通知配置会脱敏。启动命令
uvx alibabacloud-sls-mcp-proxy@latest会在本地自动下载并运行最新版本的 SLS MCP Server,不指定固定版本。
将 SLS MCP Server 接入 AI Agent
接入过程分为五步:安装阿里云 CLI、由 RAM 管理员完成一次性的 OAuth 应用授权、使用 OAuth 登录生成凭证 Profile、向 AI Agent 添加 SLS MCP Server、用自然语言验证连接。
步骤一:安装阿里云 CLI
SLS MCP Server 依赖阿里云 CLI 保存的 OAuth 凭证,且要求阿里云 CLI 版本不低于 3.3.0,因此先在本地安装阿里云 CLI。
Linux 和 macOS 执行以下命令即可完成一键安装:
sudo /bin/bash -c "$(curl -fsSL https://aliyuncli.alicdn.com/install.sh)"Windows 的安装方式,以及三个系统的其他安装方式、版本指定与卸载方法,以安装/更新 CLI为准。
安装完成后,执行 aliyun version 查看版本号:输出的版本号不低于 3.3.0 才可继续;如果本机已安装旧版本,先按上述文档中的更新方式升级,再重新校验版本号。
步骤二:安装并分配 OAuth 应用(RAM 管理员一次性操作)
首次使用 OAuth 登录前,需要由 RAM 管理员按OAuth 凭证中的授权流程完成以下操作。该操作是一次性的:official-cli 应用安装完成、且 RAM 用户或角色已完成分配后,被分配的用户都可以直接使用 OAuth 登录,无需重复操作。如果 official-cli 应用已存在、且需要使用阿里云 CLI 的 RAM 用户或角色已在分配列表中,可直接进入步骤三。
安装 CLI 应用:登录 RAM 控制台,在左侧导航栏选择集成管理> OAuth 应用(公测),切换到 第三方应用 页签。如果列表中没有
official-cli应用,单击安装官方应用,选择 官方 CLI 完成安装。分配身份:进入
official-cli应用详情页,切换到 分配 页签。单击 创建分配,将需要使用阿里云 CLI 的 RAM 用户或角色添加到授权列表。完成后,分配 页签的列表中会显示该 RAM 用户或角色。
步骤三:使用 OAuth 登录并配置凭证(Profile)
执行以下命令,会自动打开浏览器页面,完成登录认证即可。
aliyun configure --mode OAuth配置过程中,Region 填写 cn-hangzhou 即可。SLS MCP Server 免地域访问,一份凭证配置即可跨地域访问所有 Project,该配置不影响后续可访问的 Project 范围。
默认的 Profile 名是 default。要管理多个账号或多个环境,可以通过 -p 参数指定自定义的 Profile 名。
aliyun configure --mode OAuth -p sls-test-oauth完成登录认证后,OAuth 凭证保存在对应的 Profile,该 Profile 名就是步骤四中 --profile 参数的取值。
步骤四:将 SLS MCP Server 添加到 AI Agent
SLS MCP Server 采用标准 stdio 传输方式,可以接入各类支持 MCP 协议的 AI Agent,下面以 Qoder、Codex、Claude Code、OpenClaw、Hermes Agent 为例介绍配置方法。以下命令和配置均以 Profile 名 default 为例;如果在步骤三中通过 -p 指定了自定义 Profile 名,将 --profile 的取值替换为该名称。
Qoder
# 添加 MCP Server
qodercli mcp add \
--scope user \
--transport stdio \
alibabacloud-sls \
-- uvx alibabacloud-sls-mcp-proxy@latest --profile default
# 查看已添加的 MCP Server 列表
qodercli mcp listCodex
# 添加 MCP Server
codex mcp add alibabacloud-sls \
-- uvx alibabacloud-sls-mcp-proxy@latest --profile default
# 查看已添加的 MCP Server 列表
codex mcp listClaude Code
# 添加 MCP Server(--scope user 表示对当前用户的所有项目生效)
claude mcp add --scope user alibabacloud-sls \
-- uvx alibabacloud-sls-mcp-proxy@latest --profile default
# 查看已添加的 MCP Server 列表
claude mcp listOpenClaw
# 添加 MCP Server
openclaw mcp add alibabacloud-sls \
--command uvx \
--arg alibabacloud-sls-mcp-proxy@latest \
--arg --profile \
--arg default
# 查看已添加的 MCP Server 列表
openclaw mcp listHermes Agent
Hermes Agent 通过配置文件管理 MCP Server。编辑(如不存在则创建)用户目录下的 ~/.hermes/config.yaml 文件,添加如下内容:
mcp_servers:
alibabacloud-sls:
command: uvx
args:
- alibabacloud-sls-mcp-proxy@latest
- --profile
- default保存后重启 Hermes Agent,或在会话中执行 /reload-mcp 刷新 MCP 配置。
其他 MCP 客户端
对于 Cursor、Cline、Cherry Studio 等支持通过 JSON 文件配置 MCP Server 的客户端,可以在其 MCP 配置文件中添加如下内容:
{
"mcpServers": {
"alibabacloud-sls": {
"command": "uvx",
"args": [
"alibabacloud-sls-mcp-proxy@latest",
"--profile",
"default"
]
}
}
}无论使用哪种客户端,配置的核心都是将启动命令设置为 uvx,参数设置为 alibabacloud-sls-mcp-proxy@latest --profile 加上实际使用的 Profile 名。
步骤五:验证连接
打开 AI Agent,直接输入一句自然语言进行验证,例如:
列出我可以访问的 SLS Project如果 AI 能正常返回 Project 列表,说明 SLS MCP Server 已成功接入。如果没有返回 Project 列表,先执行对应客户端的 mcp list 命令确认 SLS MCP Server 已添加成功,再用 MCP Inspector 查看工具列表与调用参数,缩小问题范围。
用自然语言操作 SLS
完成接入后,即可直接用自然语言向 AI Agent 提问。以下是几个典型示例。
示例一:查找资源
列出我在杭州地域可以访问的 SLS ProjectAI 会调用 sls_list_projects 返回 Project 列表,之后可以继续追问:
Project nginx-prod 下面有哪些 Logstore?AI 会调用 sls_list_logstores 列出对应的 LogStore。
示例二:查询日志
查询 Project nginx-prod 的 access-log 最近 1 小时包含 error 的日志AI 会调用 sls_query_logs,自动使用 now-1h 到 now 这样的相对时间范围完成查询。要了解日志量的分布情况,可以继续追问:
这些日志大概有多少条?按时间分布给我看看AI 会调用 sls_get_log_histogram 返回匹配日志的总数和时间分布。
示例三:查看日志上下文
排查问题时,单条日志往往信息不足,可以让 AI 拉取上下文:
帮我看下这条报错日志前后 20 行的上下文AI 会使用上一步查询结果中的 __pack_id__ 和 __pack_meta__,调用 sls_get_context_logs 返回目标日志前后的完整上下文。
示例四:诊断告警
我的 cpu-high 告警最近 24 小时为什么触发了?帮我诊断一下AI 会调用 sls_diagnose_alert,汇总该告警实例的生命周期、严重级别、评估原因和查询证据,帮助快速定位触发原因。
支持的工具
SLS MCP Server 提供以下 11 个工具,各工具的入参说明参见“工具参数说明”。
工具 | 分类 | 简介 |
| 资源发现 | 获取当前调用者可访问的 SLS Project,支持地域、名称和资源组等过滤条件。 |
| 资源发现 | 获取指定 Project 中存储日志数据的 LogStore,不包含 Metricstore。 |
| 资源发现 | 获取指定 Project 中存储时序数据的 Metricstore。 |
| 日志分析 | 获取 LogStore 的索引配置。 |
| 日志分析 | 查询原始日志或执行 SLS SQL 分析,支持相对时间范围。 |
| 日志分析 | 查询指定时间范围内匹配日志的总数及时间分布。 |
| 日志分析 | 根据日志的 |
| 告警诊断 | 分页列举告警规则的安全摘要,不返回查询语句和通知目标。 |
| 告警诊断 | 获取单个告警规则的调度、触发条件和诊断查询,敏感通知配置会脱敏。 |
| 告警诊断 | 查询告警规则的 firing/resolved 历史,以及告警引擎当时保存的查询结果。 |
| 告警诊断 | 汇总最近告警实例的生命周期、严重级别、评估原因和查询证据,不修改告警状态。 |
工具参数说明
以下是各工具的入参说明。通过 AI Agent 调用时通常无需关心这些参数,AI 会自动填写;本章节主要供高级用法和调试时参考。
sls_list_projects
参数名 | 参数类型 | 是否必选 | 参数说明 |
| integer | 否 | 从 0 开始的分页偏移,默认 0。 |
| integer | 否 | 每页返回的 Project 数量,SLS 默认及最大值均为 500。 |
| string | 否 | 按 SLS Region ID 过滤,例如 |
| string | 否 | 按 Project 名称过滤。该字段是搜索条件,不按精确资源名规则校验。 |
| string | 否 | 按资源组 ID 过滤。 |
| string | 否 | Project 自由文本搜索条件。 |
sls_list_logstores
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| integer | 否 | 从 0 开始的分页偏移,默认 0。 |
| integer | 否 | 每页返回的 LogStore 数量,SLS 默认及最大值均为 500。 |
sls_list_metricstores
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| integer | 否 | 从 0 开始的分页偏移,默认 0。 |
| integer | 否 | 每页返回的 Metricstore 数量,SLS 默认及最大值均为 500。 |
sls_get_logstore_index
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| string | 是 | 要读取索引配置的 LogStore 名称。 |
sls_query_logs
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| string | 是 | 要查询的 LogStore 名称。 |
| string | 否 | SLS 查询或分析语句,默认为空。 |
| string | 否 | SLS 日志主题过滤条件。 |
| string | 是 | 查询开始时间,包含该时间点,例如 |
| string | 是 | 查询结束时间,不包含该时间点,例如 |
| integer | 否 | 非 SQL 查询的最大返回行数,SLS 默认及最大值均为 100。 |
| integer | 否 | 非 SQL 查询从 0 开始的结果偏移,默认 0。 |
| boolean | 否 | 是否按时间倒序返回非 SQL 查询结果,默认 |
| boolean | 否 | 是否使用独享 SQL 计算资源,默认 |
sls_get_log_histogram
与 sls_query_logs 不同,本工具的 from、to 只接受 Unix 秒,不支持 now-1h 等相对时间;query 只支持查询表达式,不支持 SQL 分析。
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| string | 是 | 要查询的 LogStore 名称。 |
| integer | 是 | 查询开始时间,Unix 秒,包含该时间点。 |
| integer | 是 | 查询结束时间,Unix 秒,不包含该时间点。 |
| string | 否 | SLS 日志主题过滤条件。 |
| string | 否 | SLS 查询表达式;不支持 SQL 分析。 |
sls_get_context_logs
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 目标 SLS Project 名称。 |
| string | 是 | 目标日志所在的 LogStore 名称。 |
| string | 是 | 前一次 |
| string | 是 | 前一次 |
| integer | 否 | 返回目标日志之前的日志行数,默认 10,最大 100。 |
| integer | 否 | 返回目标日志之后的日志行数,默认 10,最大 100。 |
sls_list_alerts
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 包含目标告警规则的 SLS Project 名称。 |
| string | 否 | 告警规则名称过滤条件。 |
| string | 否 | Dashboard 资源提供者过滤条件。 |
| integer | 否 | 从 0 开始的分页偏移,默认 0。 |
| integer | 否 | 每页返回的告警规则数量;值为 0 或省略时使用 SLS API 默认值。 |
sls_get_alert
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 包含目标告警规则的 SLS Project 名称。 |
| string | 是 | 要获取的告警规则精确名称。 |
sls_list_alert_history
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 包含 |
| string | 否 | 按告警规则精确名称过滤。 |
| string | 否 | 按告警实例 ID 精确过滤。 |
| string | 否 | 按告警生命周期状态过滤,例如 |
| string | 是 | 历史查询开始时间,包含该时间点;支持 Unix 秒或 |
| string | 是 | 历史查询结束时间,不包含该时间点;支持 Unix 秒或 |
| integer | 否 | 最大历史事件数,默认 20,最大 100。 |
| integer | 否 | 从 0 开始的历史结果偏移,默认 0。 |
sls_diagnose_alert
参数名 | 参数类型 | 是否必选 | 参数说明 |
| string | 是 | 包含告警规则和 |
| string | 是 | 要诊断的告警规则精确名称。 |
| string | 否 | 告警实例 ID;省略时诊断时间范围内最新的匹配实例。 |
| string | 是 | 诊断开始时间,包含该时间点;支持 Unix 秒或 |
| string | 是 | 诊断结束时间,不包含该时间点;支持 Unix 秒或 |
| integer | 否 | 作为诊断证据返回的最新历史事件数,默认 20,最大 100。 |
使用 MCP Inspector 调试
开发过程中需要调试 MCP Server 的工具和参数时,可以使用 MCP 官方的 Inspector 工具打开浏览器调试界面。执行以下命令需要本地已安装 Node.js 环境(npx 命令随 Node.js 一起提供)。
npx -y @modelcontextprotocol/inspector@latest -- uvx alibabacloud-sls-mcp-proxy@latest --profile default命令中的 Profile 名同样以 default 为例,如果在步骤三中指定了自定义 Profile 名,替换为该名称。
常见问题
有多个账号或多个环境,应该怎么管理?
可以使用 -p 参数创建多个 Profile(例如 aliyun configure --mode OAuth -p sls-test-oauth),然后在添加 MCP Server 时通过 --profile 参数指定对应的 Profile 名。也可以为不同 Profile 分别添加多个 MCP Server。
配置凭证时 Region 应该填什么?
填写 cn-hangzhou 即可。SLS MCP Server 免地域访问,该配置不影响可访问的 Project 范围;如果只想查看某个地域的资源,可以在列举 Project 时通过 region_id 参数过滤。
执行命令时提示找不到 uvx 怎么办?
uvx 命令由 uv 工具提供,按 uv 官方文档 安装 uv 后,重新打开终端再试。