SLS MCP Server

更新时间:
复制 MD 格式

日志服务(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_projectssls_list_logstoressls_list_metricstores

日志分析

查询原始日志或执行 SLS SQL 分析,查看匹配日志的总数与时间分布,以及单条日志前后的上下文,无需手写查询语句或在控制台页面之间切换。对应工具:sls_get_logstore_indexsls_query_logssls_get_log_histogramsls_get_context_logs

告警诊断

查看告警规则与告警历史,并对指定告警实例分析触发原因,用于告警触发后的快速定位。对应工具:sls_list_alertssls_get_alertsls_list_alert_historysls_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 用户或角色已在分配列表中,可直接进入步骤三。

  1. 安装 CLI 应用:登录 RAM 控制台,在左侧导航栏选择集成管理> OAuth 应用(公测),切换到 第三方应用 页签。如果列表中没有 official-cli 应用,单击安装官方应用,选择 官方 CLI 完成安装。

  2. 分配身份:进入 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 list

Codex

# 添加 MCP Server
codex mcp add alibabacloud-sls \
  -- uvx alibabacloud-sls-mcp-proxy@latest --profile default

# 查看已添加的 MCP Server 列表
codex mcp list

Claude Code

# 添加 MCP Server(--scope user 表示对当前用户的所有项目生效)
claude mcp add --scope user alibabacloud-sls \
  -- uvx alibabacloud-sls-mcp-proxy@latest --profile default

# 查看已添加的 MCP Server 列表
claude mcp list

OpenClaw

# 添加 MCP Server
openclaw mcp add alibabacloud-sls \
  --command uvx \
  --arg alibabacloud-sls-mcp-proxy@latest \
  --arg --profile \
  --arg default

# 查看已添加的 MCP Server 列表
openclaw mcp list

Hermes 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 Project

AI 会调用 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-1hnow 这样的相对时间范围完成查询。要了解日志量的分布情况,可以继续追问:

这些日志大概有多少条?按时间分布给我看看

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_list_projects

资源发现

获取当前调用者可访问的 SLS Project,支持地域、名称和资源组等过滤条件。

sls_list_logstores

资源发现

获取指定 Project 中存储日志数据的 LogStore,不包含 Metricstore。

sls_list_metricstores

资源发现

获取指定 Project 中存储时序数据的 Metricstore。

sls_get_logstore_index

日志分析

获取 LogStore 的索引配置。

sls_query_logs

日志分析

查询原始日志或执行 SLS SQL 分析,支持相对时间范围。

sls_get_log_histogram

日志分析

查询指定时间范围内匹配日志的总数及时间分布。

sls_get_context_logs

日志分析

根据日志的 pack_idpack_meta 获取目标日志前后的上下文。

sls_list_alerts

告警诊断

分页列举告警规则的安全摘要,不返回查询语句和通知目标。

sls_get_alert

告警诊断

获取单个告警规则的调度、触发条件和诊断查询,敏感通知配置会脱敏。

sls_list_alert_history

告警诊断

查询告警规则的 firing/resolved 历史,以及告警引擎当时保存的查询结果。

sls_diagnose_alert

告警诊断

汇总最近告警实例的生命周期、严重级别、评估原因和查询证据,不修改告警状态。

工具参数说明

以下是各工具的入参说明。通过 AI Agent 调用时通常无需关心这些参数,AI 会自动填写;本章节主要供高级用法和调试时参考。

sls_list_projects

参数名

参数类型

是否必选

参数说明

offset

integer

从 0 开始的分页偏移,默认 0。

size

integer

每页返回的 Project 数量,SLS 默认及最大值均为 500。

region_id

string

按 SLS Region ID 过滤,例如 cn-hangzhou

project_name

string

按 Project 名称过滤。该字段是搜索条件,不按精确资源名规则校验。

resource_group_id

string

按资源组 ID 过滤。

search_text

string

Project 自由文本搜索条件。

sls_list_logstores

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

offset

integer

从 0 开始的分页偏移,默认 0。

size

integer

每页返回的 LogStore 数量,SLS 默认及最大值均为 500。

sls_list_metricstores

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

offset

integer

从 0 开始的分页偏移,默认 0。

size

integer

每页返回的 Metricstore 数量,SLS 默认及最大值均为 500。

sls_get_logstore_index

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

logstore

string

要读取索引配置的 LogStore 名称。

sls_query_logs

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

logstore

string

要查询的 LogStore 名称。

query

string

SLS 查询或分析语句,默认为空。

topic

string

SLS 日志主题过滤条件。

from

string

查询开始时间,包含该时间点,例如 1786342175;支持 Unix 秒或 now-1h 等相对时间。

to

string

查询结束时间,不包含该时间点,例如 1786342175;支持 Unix 秒或 now 等相对时间。

lines

integer

非 SQL 查询的最大返回行数,SLS 默认及最大值均为 100。

offset

integer

非 SQL 查询从 0 开始的结果偏移,默认 0。

reverse

boolean

是否按时间倒序返回非 SQL 查询结果,默认 false

power_sql

boolean

是否使用独享 SQL 计算资源,默认 false

sls_get_log_histogram

sls_query_logs 不同,本工具的 fromto 只接受 Unix 秒,不支持 now-1h 等相对时间;query 只支持查询表达式,不支持 SQL 分析。

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

logstore

string

要查询的 LogStore 名称。

from

integer

查询开始时间,Unix 秒,包含该时间点。

to

integer

查询结束时间,Unix 秒,不包含该时间点。

topic

string

SLS 日志主题过滤条件。

query

string

SLS 查询表达式;不支持 SQL 分析。

sls_get_context_logs

参数名

参数类型

是否必选

参数说明

project

string

目标 SLS Project 名称。

logstore

string

目标日志所在的 LogStore 名称。

pack_id

string

前一次 sls_query_logs 结果中的 __pack_id__

pack_meta

string

前一次 sls_query_logs 结果中的 __pack_meta__

back_lines

integer

返回目标日志之前的日志行数,默认 10,最大 100。

forward_lines

integer

返回目标日志之后的日志行数,默认 10,最大 100。

sls_list_alerts

参数名

参数类型

是否必选

参数说明

project

string

包含目标告警规则的 SLS Project 名称。

alert_name

string

告警规则名称过滤条件。

dashboard

string

Dashboard 资源提供者过滤条件。

offset

integer

从 0 开始的分页偏移,默认 0。

size

integer

每页返回的告警规则数量;值为 0 或省略时使用 SLS API 默认值。

sls_get_alert

参数名

参数类型

是否必选

参数说明

project

string

包含目标告警规则的 SLS Project 名称。

alert_name

string

要获取的告警规则精确名称。

sls_list_alert_history

参数名

参数类型

是否必选

参数说明

project

string

包含 internal-alert-history LogStore 的 SLS Project 名称。

alert_name

string

按告警规则精确名称过滤。

alert_id

string

按告警实例 ID 精确过滤。

alert_status

string

按告警生命周期状态过滤,例如 firingresolved

from

string

历史查询开始时间,包含该时间点;支持 Unix 秒或 now-24h 等相对时间。

to

string

历史查询结束时间,不包含该时间点;支持 Unix 秒或 now 等相对时间。

lines

integer

最大历史事件数,默认 20,最大 100。

offset

integer

从 0 开始的历史结果偏移,默认 0。

sls_diagnose_alert

参数名

参数类型

是否必选

参数说明

project

string

包含告警规则和 internal-alert-history LogStore 的 SLS Project 名称。

alert_name

string

要诊断的告警规则精确名称。

alert_id

string

告警实例 ID;省略时诊断时间范围内最新的匹配实例。

from

string

诊断开始时间,包含该时间点;支持 Unix 秒或 now-24h 等相对时间。

to

string

诊断结束时间,不包含该时间点;支持 Unix 秒或 now 等相对时间。

max_events

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 后,重新打开终端再试。