本文介绍了如何使用大语言模型(LLM)应用通过可观测MCP服务接入日志服务,提升查询和分析效率。
背景信息
阿里云可观测的 MCP(Model Context Protocol)是一种统一的数据访问和分析协议,旨在通过自然语言交互和工具集成,帮助用户高效查询和分析阿里云可观测产品(如日志服务 SLS、ARMS 等)中的数据。
以下是MCP地址:
MCP工具列表
日志工具(点击查看)
ARMS工具(点击查看)
指标工具(点击查看)
前提条件
配置阿里云访问密钥 (AccessKey)
服务运行需要有效的阿里云 AccessKey ID 和 AccessKey Secret。关于AccessKey请参见创建AccessKey和在Linux、macOS和Windows系统设置阿里云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作为默认凭据。
权限须知
若您使用阿里云主账号登录,默认拥有所有操作权限,可直接对Project进行相关操作。
若您使用RAM账号登录,请根据需要向主账号使用者申请如下权限。
强烈建议遵循最小权限原则:仅授予运行您计划使用的MCP工具所必需的最小权限集,以降低安全风险。
使用日志服务相关工具,参考日志服务RAM访问控制权限配置,授予必要的读取和查询权限。
应用实时监控服务 (ARMS):如果您需要使用 arms_* 相关工具,请参考ARMS 权限说明 ,并授予必要的查询权限。
如果需要使用SQL生成工具,需要单独授予
sls:CallAiTools
的权限。
需要 Python 3.10 及以上版本。
注意事项
密钥安全
本 MCP Server 在运行时会使用您提供的 AccessKey 调用阿里云 OpenAPI,但不会以任何形式存储您的 AccessKey,也不会将其用于设计功能之外的任何其他用途。
访问控制(关键)
当您选择通过 SSE (Server-Sent Events) 协议访问MCP Server时,您必须自行负责该服务接入点的访问控制和安全防护。
强烈建议将 MCP Server部署在内部网络或授信环境中,例如您的私有VPC (Virtual Private Cloud) 内,避免直接暴露于公共互联网。
推荐的部署方式是使用阿里云函数计算 ,并配置其网络设置为仅VPC内访问,以实现网络层面的隔离和安全。
切勿在没有任何身份验证或访问控制机制的情况下,将配置了AccessKey的MCP Server SSE端点暴露在公共互联网上,这会带来极高的安全风险。
步骤一:安装MCP
方式一:PIP安装
使用命令
pip install mcp-server-aliyun-observability
安装MCP。安装完成后,启动MCP。
python -m mcp_server_aliyun_observability --transport sse --access-key-id your_accesskey_id --access-key-secret your_accesskey_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时有效。
方式二:源码安装
# 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_accesskey_id --access-key-secret your_accesskey_secret
参数 | 说明 |
| 指定传输方式,可选值为 sse 或 stdio,默认值为 stdio。 |
| 指定阿里云 AccessKeyId,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_ID。 |
| 指定阿里云 AccessKeySecret,不指定时会使用环境变量中的ALIBABA_CLOUD_ACCESS_KEY_SECRET。 |
| 可选值为DEBUG、INFO、WARNING、ERROR,默认值为INFO。 |
| 指定传输端口,默认值为 8000,仅当 |
步骤二:AI工具集成
启动方式
SSE 类型(远端服务托管):此类型的服务托管在远程服务器上,配置过程简单快捷,非常适合初次接触的新手用户快速上手体验。
STDIO 类型(本地服务运行):此类型的服务在您的本地环境中运行,需要依赖您本地环境准备,适合于专业开发者。
SSE
其中7897为transport端口,使用时需要根据实际情况修改。
{
"mcpServers": {
"alibaba_cloud_observability": {
"url": "http://localhost:7897/sse"
}
}
}
stdio
从源码目录启动
需要指定--directory参数,指定源码目录,最好是绝对路径。
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_accesskey_id", "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_accesskey_secret" } } } }
从 module 启动
{ "mcpServers": { "alibaba_cloud_observability": { "command": "uv", "args": [ "run", "mcp-server-aliyun-observability" ], "env": { "ALIBABA_CLOUD_ACCESS_KEY_ID": "your_accesskey_id", "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "your_accesskey_secret" } } } }
Cherry Studio集成
Cursor集成
ChatWise集成
常见问题
使用 SSE 访问时候,提示启动失败"Error invoking remote method 'mcp::list-tools':Error: SSE error: Non-200 status code (404)"
端口被其他服务占用,可以检查下端口是否被占用,或者更换端口。