MCP-SERVER
Provides tools to retrieve MySQL metadata such as table structures, column meanings, and index suggestions.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP-SERVERcheck if the server is healthy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
aliyun-sls-mcp-server
aliyun-sls-mcp-server 是一个基于 TypeScript + Express 的 MCP 服务,用于让 AI Agent 通过 MCP 查询阿里云日志服务 SLS。
它适合这些场景:
线上故障排查
日常研发查日志
查询某些服务的 error/warn/info 日志
通过 traceId/TID 查询链路日志
查看某个服务在一段时间内的日志数量分布和报错趋势
底层数据源是阿里云 SLS,当前服务只做只读查询,不写入日志,不修改 SLS 配置。
效果展示
查询最近15分钟错误日志
查询某个服务的错误日志
通过链路id查询错误日志,并分析问题
查看某个服务在一段时间内的日志数量分布和报错趋势
Related MCP server: AWS AppRunner MCP Server
功能特性
查询当前账号可访问的 SLS Project
查询某个 Project 下的 Logstore
查询日志明细,底层使用
GetLogsV2查询日志数量分布,底层使用
GetHistograms支持按环境映射 Project + Logstore,例如
test、staging、prod支持按服务名/容器名查询,字段默认使用
_container_name_支持
info、warn、error日志级别支持 traceId/TID 查询,默认可查最近 7 天,可配置
支持分页,返回
nextPage方便 Agent 继续翻页支持限制返回字段,减少模型上下文占用
提供 Streamable HTTP MCP 服务
提供 HTTP 调试接口,方便用浏览器、Postman 或 curl 验证
不适合做什么
当前项目定位是“查日志”和“辅助排障”,不建议用它做 SLS 管理操作。
当前不支持,也不计划默认开放这些高风险能力:
写入日志
创建或删除 Project/Logstore
创建、修改或删除索引
修改告警、仪表盘、投递任务
管理机器组、Logtail 配置
执行无限制的大范围 SQL 分析
官方文档
本项目基于阿里云 SLS OpenAPI 构建,建议先阅读官方文档了解 SLS 的查询语法、权限和接口限制。
如果具体 API 链接发生变化,以 SLS OpenAPI 概览和阿里云控制台文档入口为准。
获取阿里云访问凭证
本服务通过阿里云 OpenAPI 访问 SLS,需要配置 AccessKey。
建议创建一个专用 RAM 用户,并只授予 SLS 只读查询权限。不要使用阿里云主账号 AccessKey。
参考文档:
当前服务至少需要这些 SLS 查询能力:
查询 Project
查询 Logstore
查询日志明细,
GetLogsV2查询日志分布,
GetHistograms
RAM 权限策略里的 Action 名称建议以阿里云官方权限文档和控制台生成为准。生产环境请使用最小权限,不要授予写入、删除、索引修改、告警修改等权限。
快速开始
git clone https://github.com/LilMosey/aliyun-sls-mcp-server.git
cd aliyun-sls-mcp-server
npm install
cp .env.example .env.local编辑 .env.local,填入你的阿里云配置:
PORT=3000
SERVICE_NAME=aliyun-sls-mcp-server
ALIYUN_LOG_ACCESS_KEY_ID="你的AccessKeyId"
ALIYUN_LOG_ACCESS_KEY_SECRET="你的AccessKeySecret"
ALIYUN_LOG_REGION=cn-hangzhou
ALIYUN_LOG_DEFAULT_ENVIRONMENT=test
ALIYUN_LOG_ENVIRONMENTS={"test":{"projectName":"k8s-dev","logstoreName":"test"},"staging":{"projectName":"k8s-dev","logstoreName":"staging"}}启动开发服务:
npm run dev健康检查:
curl http://localhost:3000/health预期返回:
{
"status": "ok",
"service": "aliyun-sls-mcp-server"
}环境变量
.env.example 是提交到 Git 的模板,不应该放真实密钥。.env.local 用于保存本机真实配置,已经被 .gitignore 忽略。
变量 | 必填 | 默认值 | 说明 |
| 否 |
| HTTP 服务端口 |
| 否 |
| 健康检查返回的服务名 |
| 是 | 无 | 阿里云 AccessKey ID |
| 是 | 无 | 阿里云 AccessKey Secret |
| 是 | 无 | SLS 区域,例如 |
| 否 |
| 自定义 SLS endpoint |
| 否 | 内置 | 环境到 Project/Logstore 的映射 |
| 否 |
| 默认查询环境 |
| 否 |
| 普通查询默认时间窗口 |
| 否 |
| 普通非空查询最大时间窗口 |
| 否 |
| 空查询最大时间窗口 |
| 否 |
| traceId/TID 默认查询窗口,默认 7 天 |
| 否 |
| traceId/TID 最大查询窗口 |
| 否 |
| traceId/TID 最小长度 |
| 否 |
| 日志明细默认每页条数 |
| 否 |
| 日志明细最大每页条数 |
| 否 | 返回全部字段 | 限制每条日志返回的原始字段 |
ALIYUN_LOG_ENVIRONMENTS 示例:
ALIYUN_LOG_ENVIRONMENTS={"test":{"projectName":"k8s-dev","logstoreName":"test"},"staging":{"projectName":"k8s-dev","logstoreName":"staging"}}MCP 工具描述会在服务启动时读取这里配置的环境名,并提示 Agent 当前可用环境和默认环境。修改 ALIYUN_LOG_ENVIRONMENTS 后,需要重启服务并让 MCP 客户端重新连接,客户端才能拿到新的工具描述。
ALIYUN_LOG_RETURN_FIELDS 示例:
ALIYUN_LOG_RETURN_FIELDS=time,level,_container_name_,_pod_name_,_namespace_,content字段名要和阿里云返回的原始字段保持一致。例如服务名字段通常是 _container_name_,不是 containerName。
MCP 服务
当前提供 Streamable HTTP MCP 服务:
POST /mcp
GET /mcp
DELETE /mcpMCP 使用 stateful Streamable HTTP:
初始化请求会返回
mcp-session-id后续
POST /mcp需要带同一个mcp-session-idGET /mcp使用同一个mcp-session-id建立 SSE 长连接,用于接收服务端通知DELETE /mcp使用同一个mcp-session-id终止会话
MCP 客户端配置示例:
{
"mcpServers": {
"aliyun-sls-mcp-server": {
"type": "streamable-http",
"url": "http://localhost:3000/mcp"
}
}
}如果你的 MCP 客户端使用更简单的 server 列表格式,可以按下面这种结构改写:
{
"name": "aliyun-sls-mcp-server",
"type": "streamable-http",
"url": "http://localhost:3000/mcp"
}不同 MCP 客户端的配置字段可能不同,例如有的客户端使用 streamable-http,有的客户端使用 http 或 streamableHttp。请以对应客户端文档为准,核心连接地址是:
http://localhost:3000/mcpMCP 工具
工具名 | 作用 |
| 查询当前账号在指定区域下可访问的 SLS Project |
| 查询某个 Project 下的 Logstore |
| 查询日志明细、服务日志、报错日志、traceId/TID 链路日志 |
| 查询日志数量分布、错误趋势、故障开始时间线索 |
aliyun_log_query_logs
常用参数:
{
"environment": "staging",
"containerNames": ["user-service"],
"level": "error",
"minutes": 30,
"pageNumber": 1,
"pageSize": 50
}说明:
environment不传时使用ALIYUN_LOG_DEFAULT_ENVIRONMENTcontainerNames是任意服务名/容器名,服务端会拼成_container_name_查询level只支持info、warn、errortraceId会拼成content: "traceId"用户说“最近 N 分钟/小时”时,适合传
minutes用户说“今天 14:00 到 15:00”这种明确时间段时,Agent 应按
Asia/Shanghai换算成 Unix 秒级from和tofrom/to和minutes不能同时传返回
nextPage时,下一次翻页应直接复用nextPage里的参数,避免重新计算时间窗口
aliyun_log_get_histograms
常用参数:
{
"environment": "staging",
"containerNames": ["user-service"],
"level": "error",
"minutes": 120
}这个工具只返回每个时间段的日志数量,不返回日志明细。适合先判断是否有错误突增,再用 aliyun_log_query_logs 查询具体日志。
Prompt 示例
查询最近 30 分钟某个服务的错误日志:
帮我查询 staging 环境 user-service 最近 30 分钟的 error 日志查看错误趋势:
帮我看 staging 环境 user-service 最近 2 小时 error 日志分布,判断有没有突增查询固定时间段日志:
帮我查 staging 环境 user-service 今天 14:00 到 15:00 的错误日志查询 traceId/TID 链路:
帮我查询这个 traceId 最近 7 天的链路日志:b03a2133ebe048ccae56cb40125bb53d.574.17827209165150053先看趋势,再查峰值时间段:
帮我看 staging 环境 user-service 最近 2 小时 error 日志分布,如果有明显峰值,再查询峰值时间段的错误日志明细HTTP 调试接口
HTTP 接口主要用于本地调试和验证阿里云配置是否正确。
查询 Project:
curl "http://localhost:3000/aliyun-log/projects"查询 Logstore:
curl "http://localhost:3000/aliyun-log/projects/k8s-dev/logstores"按环境查询日志:
curl --get "http://localhost:3000/aliyun-log/logs" \
--data-urlencode "environment=staging" \
--data-urlencode "containerNames=user-service" \
--data-urlencode "level=error" \
--data-urlencode "minutes=30"查询 traceId/TID:
curl --get "http://localhost:3000/aliyun-log/logs" \
--data-urlencode "environment=staging" \
--data-urlencode "traceId=b03a2133ebe048ccae56cb40125bb53d.574.17827209165150053"查询日志分布:
curl --get "http://localhost:3000/aliyun-log/histograms" \
--data-urlencode "environment=staging" \
--data-urlencode "containerNames=user-service" \
--data-urlencode "level=error" \
--data-urlencode "minutes=120"直接指定 Project + Logstore:
curl --get "http://localhost:3000/aliyun-log/projects/k8s-dev/logstores/staging/logs" \
--data-urlencode "query=level: error" \
--data-urlencode "from=1719390000" \
--data-urlencode "to=1719390900"安全建议
不要提交
.env.local不要使用阿里云主账号 AccessKey
建议为本服务创建专用 RAM 用户
建议只授予 SLS 只读查询权限
生产环境建议部署在内网或受控网络中
生产环境建议在反向代理层增加鉴权
日志可能包含手机号、邮箱、用户 ID、请求参数、业务数据等敏感信息,请谨慎暴露给外部 Agent
如果需要控制返回字段,请配置
ALIYUN_LOG_RETURN_FIELDS,减少敏感字段和上下文占用
开发命令
npm run dev
npm run typecheck
npm run build
npm start说明:
npm run dev:开发模式启动,使用tsx watchnpm run typecheck:只做 TypeScript 类型检查,不输出文件npm run build:编译到distnpm start:运行编译后的dist/src/server.js
项目结构
src/
server.ts # 进程入口,监听端口
app.ts # Express 应用组装
config/env.ts # 基础环境变量读取
routes/
health.ts # 健康检查
mcp.ts # Streamable HTTP MCP 路由
mcp-server.ts # MCP Server 和工具注册
mcp-tools/
aliyun-log-tool-definitions.ts # MCP 工具名、描述、入参 schema
mcp-services/
aliyun-log/
client.ts # 阿里云 SLS SDK client
config.ts # SLS 配置读取
projects.ts # ListProject
logstores.ts # ListLogStores
logs.ts # GetLogsV2
histograms.ts # GetHistograms
routes.ts # HTTP 调试接口Roadmap
Docker 镜像和部署示例
RAM 最小权限 Policy 示例
更多 MCP 客户端接入示例
可选鉴权中间件
更完整的日志脱敏配置
受控 SQL 聚合能力,例如按服务统计 error Top N
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/LilMosey/aliyun-sls-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server