阿里云可观测MCP服务
简介
阿里云可观测 MCP服务,提供了一系列访问阿里云可观测各产品的工具能力,覆盖产品包含阿里云日志服务SLS、阿里云应用实时监控服务ARMS、阿里云云监控等,任意支持 MCP 协议的智能体助手都可快速接入。
目前提供的 MCP 工具以阿里云日志服务为主,其他产品会陆续支持,工具详细如下:
版本记录
可以查看 CHANGELOG.md
常见问题
可以查看 FAQ.md
工具列表
日志相关
工具名称 | 用途 | 关键参数 | 最佳实践 |
---|---|---|---|
sls_list_projects | 列出SLS项目,支持模糊搜索和分页 | projectName:项目名称(可选,模糊搜索)limit:返回项目数量上限(默认50,范围1-100)regionId:阿里云区域ID | - 在不确定可用项目时,首先使用此工具-使用合理的limit值避免返回过多结果 |
sls_list_logstores | 列出项目内的日志存储,支持名称模糊搜索 | project:SLS项目名称(必需)logStore:日志存储名称(可选,模糊搜索)limit:返回结果数量上限(默认10)isMetricStore:是否筛选指标存储logStoreType:日志存储类型regionId:阿里云区域ID | - 确定项目后使用此工具查找相关日志存储-可通过logStoreType筛选特定类型日志存储 |
sls_describe_logstore | 检索日志存储的结构和索引信息 | project: SLS项目名称(必需)logStore:SLS日志存储名称(必需)regionId:阿里云区域ID | - 在查询前使用此工具了解可用字段及其类型- 检查所需字段是否启用了索引 |
sls_execute_sql_query | 在指定时间范围内对日志存储执行SQL查询 | project: SLS项目名称(必需)logStore:SLS日志存储名称(必需)query:SQL查询语句(必需)fromTimestampInSeconds:查询开始时间戳(必需)toTimestampInSeconds:查询结束时间戳(必需)limit:返回结果数量上限(默认10)regionId:阿里云区域ID | - 使用适当的时间范围优化查询性能- 限制返回结果数量避免获取过多数据 |
sls_translate_text_to_sql_query | 将自然语言描述转换为SLS SQL查询语句 | text:查 询的自然语言描述(必需)project:SLS项目名称(必需)logStore:SLS日志存储名称(必需)regionId:阿里云区域ID | - 适用于不熟悉SQL语法的用户- 对于复杂查询,可能需要优化生成的SQL |
sls_diagnose_query | 诊断SLS查询问题,提供失败原因分析 | query: 待诊断的SLS查询(必需)errorMessage:查询失败的错误信息(必需)project:SLS项目名称(必需)logStore:SLS日志存储名称(必需)regionId:阿里云区域ID | - 查询失败时使用此工具了解根本原因- 根据诊断建议修改查询语句 |
应用相关
工具名称 | 用途 | 关键参数 | 最佳实践 |
---|---|---|---|
arms_search_apps | 根据应用名称搜索ARMS应用 | appNameQuery :应用名称查询字符串(必需)regionId: 阿里云区域ID(必需,格式:'cn-hangzhou')pageSize : 每页结果数量(默认:20,范围:1-100)pageNumber : 页码(默认:1) | - 用于查找特定名称的应用- 用于获取其他ARMS操作所需的应用PID- 使用合理的分页参数优化查询结果- 查看用户拥有的应用列表 |
arms_generate_trace_query | 根据自然语言问题生成ARMS追踪数据的SLS查询 | user_id :阿里云账户ID(必需)pid: 应用PID(必需)region_id :阿里云区域ID(必需)question: 关于追踪的自然语言问题(必需) | - 用于查询应用的追踪信息- 分析应用性能问题- 跟踪特定请求的执行路径- 分析服务调用关系- 集成了自动重试机制处理瞬态错误 |
arms_get_application_info | 获取特定ARMS应用的详细信息 | pid : 应用PID(必需)regionId : 阿里云区域ID(必需) | - 当用户明确请求应用信息时使用- 确定应用的开发语言- 在执行其他操作前先获取应用基本信息 |
arms_profile_flame_analysis | 分析ARMS应用火焰图性能热点 | pid : 应用PID(必需)startMs :分析开始时间戳(必需)endMs: 分析结束时间戳(必需)profileType: 分析类型,如'cpu'、'memory'(默认:'cpu')ip :服务主机IP(可选)thread: 线程ID(可选)threadGroup: 线程组(可选)regionId: 阿里云区域ID(必需) | - 用于分析应用性能热点问题- 支持CPU和内存类型的性能分析- 可筛选特定IP、线程或线程组- 适用于Java和Go应用 |
arms_diff_profile_flame_analysis | 对比不同时间段的火焰图性能变化 | pid : 应用PID(必需)currentStartMs :当前时间段开始时间戳(必需)currentEndMs: 当前时间段结束时间戳(必需)referenceStartMs: 参考时间段开始时间戳(必需)referenceEndMs: 参考时间段结束时间戳(必需)profileType: 分析类型,如'cpu'、'memory'(默认:'cpu')ip :服务主机IP(可选)thread: 线程ID(可选)threadGroup: 线程组(可选)regionId: 阿里云区域ID(必需) | - 用于发布前后性能对比- 分析性能优化效果- 识别性能退化点- 支持CPU和内存类型的性能对比- 适用于Java和Go应用 |
指标相关
工具名称 | 用途 | 关键参数 | 最佳实践 |
---|---|---|---|
cms_translate_text_to_promql | 将自然语言描述转换为PromQL查询语句 | texto: 要转换的自然语言文本(必需)project: SLS项目名称(必需)metricStore : SLS指标存储名称(必需)regionId : 阿里云区域ID(必需) | - 提供清晰、具体的指标描述- 如已知,可在描述中提及特定的指标名称、标签或操作- 排除项目或指标存储名称本身- 检查并优化生成的查询以提高准确性和性能 |
权限要求
为了确保 Servidor MCP 能够成功访问和操作您的阿里云可观测性资源,您需要配置以下权限:
阿里云访问密钥 (AccessKey):
- 服务运行需要有效的阿里云 ID de AccessKey 和 Secreto de AccessKey。
- 获取和管理 AccessKey,请参考 阿里云 AccessKey 管理官方文档。
当你初始化时候不传入 AccessKey 和 AccessKey Secret 时,会使用默认凭据链进行登录
- 如果环境变量 中的ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET均存在且非空,则使用它们作为默认凭据。
- 如果同时设置了ALIBABA_CLOUD_ACCESS_KEY_ID、ALIBABA_CLOUD_ACCESS_KEY_SECRET和ALIBABA_CLOUD_SECURITY_TOKEN,则使用STS Token作为默认凭据。
RAM 授权 (重要):
- 与 AccessKey 关联的 RAM用户或角色必须被授予访问相关云服务所需的权限。
- 强烈建议遵循"最小权限原则":仅授予运行您计划使用的MCP 工具所必需的最小权限集,以降低安全风险。
- 根据您需要使用的工具,参考以下文档进行权限配置:
- 日志服务 (SLS):如果您需要使用
sls_*
相关工具,请参考 日志服务权限说明,并授予必要的读取、查询等权限。 - 应用实时监控服务 (ARMS):如果您需要使用
arms_*
相关工具,请参考 ARMS 权限说明,并授予必要的查询权限。
- 日志服务 (SLS):如果您需要使用
- 特殊权限说明,如果使用了SQL生成之类的工具,
需要单独授予sls:CallAiTools的权限
- 请根据您的实际应用场景,精细化配置所需权限。
安全与部署建议
请务必关注以下安全事项和部署最佳实践:
密钥安全:
- 本 Servidor MCP 在运行时会使用您提供的 AccessKey 调用阿里云 OpenAPI,但不会以任何形式存储您的AccessKey,也不会将其用于设计功能之外的任何其他用途。
访问控制 (关键):
- 当您选择通过 SSE (Eventos enviados por el servidor) 协议 访问 Servidor MCP 时,您必须自行负责该服务接入点的访问控制和安全防护。
- 强烈建议将Servidor MCP部署在内部网络或受信环境中,例如您的私有VPC (Virtual Private Cloud) 内,避免直接暴露于公共互联网。
- 推荐的部署方式是使用阿里云函数计算 (FC),并配置其网络设置为仅VPC 内访问,以实现网络层面的隔离和安全。
- 注意:切勿在没有任何身份验证或访问控制机制的情况下,将配置了您AccessKey 的 MCP Server SSE 端点暴露在公共互联网上,这会带来极高的安全风险。
使用说明
在使用 Servidor MCP 之前,需要先获取阿里云的 AccessKeyId 和 AccessKeySecret,请参考 阿里云 AccessKey 管理
使用 pip 安装
⚠️ 需要 Python 3.10 及以上版本。
直接使用 pip 安装即可,安装命令如下:
pip install mcp-servidor-aliyun-observabilidad
- 安装之后,直接运行即可,运行命令如下:
python -m mcp_server_aliyun_observability --transport sse --access-key-id <your_access_key_id> --access-key-secret <your_access_key_secret>
可通过命令行传递指定参数:
- -
-transport
指定传输方式,可选值为sse
或stdio,默认值为
stdio
- -
-access-key-id
指定阿里云 AccessKeyId,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_ID - -
-access-key-secret
指定阿里云 AccessKeySecret,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_SECRET - -
-log-level
指定日志级别,可选值为DEBUG、INFO、WARNING、ERROR,默认值为
INFO
- -
-transport-port
指定传输端口,默认值为8000
,仅当--transport
为sse
时有效
- 使用uv 命令启动 可以指定下版本号,会自动拉取对应依赖,默认是 studio 方式启动
uvx --from 'mcp-server-aliyun-observability==0.2.1' mcp-server-aliyun-observability
- 使用 uvx 命令启动
uvx ejecutar mcp-servidor-aliyun-observabilidad
从源码安装
# clone 源码 git clone git@github.com:aliyun/alibabacloud-observability-mcp-server.git # 进入源码目录 cd alibabacloud-observability-mcp-server # 安装 pip install -e .
# 运行 python -m mcp_server_aliyun_observability --transport sse --access-key-id <your_access_key_id> --access-key-secret <your_access_key_secret>
AI 工具集成
以 SSE 启动方式为例,transporte 端口为 8888,实际使用时需要根据实际情况修改
Cursor,Cline 等集成
- 使用 SSE 启动方式
{ "mcpServers": { "alibaba_cloud_observability": { "url": "http://localhost:7897/sse" } }
- 使用 stdio 启动方式 直接从源码目录启动,注意
- 需要指定
--directorio
参数,指定源码目录,最好是绝对路径 - uv命令 最好也使用绝对路径,如果使用了虚拟环境,则需要使用虚拟环境的绝对路径
- 需要指定
{ "mcpServers": { "alibaba_cloud_observability": { "command": "uv", "args": [ "--directory", "/path/to/your/alibabacloud-observability-mcp-server", "run", "mcp-server-aliyun-observability" ], "env": { "ALIBABA_CLOUD_ACCESS_KEY_ID": "<your_access_key_id>", "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "<su_clave_secreto_acceso>" } } }
- 使用 stdio 启动方式-从 módulo 启动
{ "mcpServers": { "alibaba_cloud_observability": { "command": "uv", "args": [ "run", "mcp-server-aliyun-observability" ], "env": { "ALIBABA_CLOUD_ACCESS_KEY_ID": "<your_access_key_id>", "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "<your_access_key_secret>" } } }