Skip to main content
Glama
aliyun

Alibaba Cloud Observability MCP Server

Official
by aliyun

Alibaba Cloud Observability MCP Server (Go版)


📌 重要なお知らせ

本プロジェクトは Go言語で再構築 されました。元のPython版を使用する場合は、v1 ディレクトリにアクセスしてください:

  • 📖 v1/README.md - Python版ドキュメント

  • 📦 Python版は pip install mcp-server-aliyun-observability でインストール可能です


Alibaba Cloud Observability MCP ServerのGo言語実装であり、AIモデルに対してAlibaba Cloudのログサービス(SLS)およびクラウドモニタリング(CMS)への構造化データアクセス機能を提供します。Model Context Protocol プロトコルに基づいており、Cursor、Kiro、Cline、WindsurfなどのAIツールとシームレスに統合できます。

特徴

  • stdio、SSE、streamable-httpの3つの転送モードをサポート

  • モジュール化されたツールセットアーキテクチャ:PaaS(クラウドモニタリング 2.0)、IaaS(SLS/CMS直接アクセス)、Shared

  • 柔軟な時間式解析:相対時間、絶対タイムスタンプ、Grafanaスタイル、プリセットキーワード

  • 時系列データの比較分析:統計計算、トレンド分析、差異スコアリング

  • 構造化されたエラー処理:英語のエラー説明と解決策の提案

  • 安定性の保証:リトライ(指数バックオフ)、サーキットブレーカー、グレースフルシャットダウン

  • 構造化JSONログ(slog)

  • 単一バイナリファイル、ランタイム依存関係ゼロ

Related MCP server: aliyun-sls-mcp

クイックスタート

ダウンロードとインストール

Releases ページから、対応するプラットフォームのバイナリファイルをダウンロードしてください:

# Linux amd64
wget https://github.com/aliyun/alibabacloud-observability-mcp-server/releases/latest/download/alibabacloud-observability-mcp-server-linux-amd64.tar.gz
tar -xzf alibabacloud-observability-mcp-server-linux-amd64.tar.gz

# macOS arm64 (M1/M2)
wget https://github.com/aliyun/alibabacloud-observability-mcp-server/releases/latest/download/alibabacloud-observability-mcp-server-darwin-arm64.tar.gz
tar -xzf alibabacloud-observability-mcp-server-darwin-arm64.tar.gz

解凍後、以下が含まれます:

  • alibabacloud-observability-mcp-server - 実行ファイル

  • config.yaml - デフォルト設定ファイル

認証情報の構成

# 设置阿里云 AccessKey
export ALIBABA_CLOUD_ACCESS_KEY_ID=<your_access_key_id>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<your_access_key_secret>

AccessKeyの取得方法:Alibaba Cloud AccessKey管理

サービスの起動

# 以 stdio 模式启动(MCP 客户端直接调用)
./alibabacloud-observability-mcp-server start --stdio

# 以网络模式启动(默认 transport 在 config.yaml 中配置)
./alibabacloud-observability-mcp-server start --config config.yaml

CLIコマンド

# 查看版本信息
./alibabacloud-observability-mcp-server version

# 列出所有已注册工具
./alibabacloud-observability-mcp-server tools

ソースからのビルド

前提条件

  • Go 1.23+

ビルド

# 克隆仓库
git clone https://github.com/aliyun/alibabacloud-observability-mcp-server.git
cd alibabacloud-observability-mcp-server

# 构建当前平台
make build

# 构建所有平台(linux/darwin/windows × amd64/arm64)
make build-all

生成されたバイナリファイルは bin/ ディレクトリに配置されます。

設定

設定は2層構造を採用しています:

  1. config.yaml - サーバー設定(転送モード、ログ、ネットワークなど)

  2. .env ファイルまたは環境変数 - 認証情報およびランタイムパラメータ

設定ファイル

cp config.yaml config.yaml.bak       # 备份默认配置(可选)
cp .env.example .env                  # 凭证(AccessKey)

config.yaml の検索パス:カレントディレクトリ → ./config/

.env ファイルはカレントディレクトリから読み込まれ、バージョン管理に含めるべきではない認証情報の保存に適しています。

config.yaml 構造

# 服务器配置
server:
  transport: streamable-http  # stdio, sse, streamable-http
  host: "0.0.0.0"
  port: 8080

# 日志配置
logging:
  level: info                 # debug, info, warn, error
  debug_mode: false

# 工具集配置
toolkit:
  scope: all                  # all, paas, iaas
  # 精细化工具选择(可选,非空时仅注册列表中的工具)
  # enabled_tools:
  #   - list_workspace
  #   - umodel_get_entities
  #   - sls_execute_sql

# 网络配置
network:
  max_retry: 1
  retry_wait_seconds: 1
  read_timeout_ms: 610000
  connect_timeout_ms: 30000

# 本地化配置
locale:
  timezone: Asia/Shanghai
  language: zh-CN

# 运行时默认值(可选)
# 优先级: 环境变量 > .env 文件 > config.yaml
runtime:
  region: cn-hangzhou
  # workspace: ""

# 端点覆盖(可选,用于内网访问)
# endpoints:
#   sls:
#     cn-hongkong: "cn-hongkong-intranet.log.aliyuncs.com"
#   cms:
#     cn-hongkong: "cms.cn-hongkong.aliyuncs.com"

詳細なツール選択

デフォルトでは、toolkit.scope がカテゴリごとのツール有効化を制御します(all/paas/iaas)。より詳細な制御が必要な場合は、toolkit.enabled_tools を使用して有効にするツールリストを指定できます:

toolkit:
  scope: all
  enabled_tools:
    - list_workspace
    - list_domains
    - umodel_get_entities
    - umodel_get_metrics
    - sls_execute_sql

enabled_tools が空でない場合、リスト内のツールのみが登録され、その他のツールは使用できません。scope は引き続きどのツールキットモジュールを読み込むかを決定し、enabled_tools はその上でさらにフィルタリングを行います。

完全なツールリストとカテゴリの説明については、config.yaml 内のコメントテンプレートを参照してください。

CLI引数

引数

説明

デフォルト値

--config

設定ファイルのパスを指定

自動検索

--stdio

stdio転送モードを強制使用

false

環境変数(認証情報およびランタイムパラメータ)

環境変数

説明

必須

ALIBABA_CLOUD_ACCESS_KEY_ID

AccessKey ID

いいえ*

ALIBABA_CLOUD_ACCESS_KEY_SECRET

AccessKey Secret

いいえ*

ALIBABA_CLOUD_SECURITY_TOKEN

STS Token(一時認証情報)

いいえ

ALIBABA_CLOUD_REGION

デフォルトリージョン

いいえ

ALIBABA_CLOUD_WORKSPACE

デフォルトワークスペース(PaaSツールで必要)

いいえ

  • AccessKeyが設定されていない場合、サービスは自動的にデフォルト認証情報チェーンを使用して認証情報を取得します(ECS RAM Role、OIDC、設定ファイルなどの方式をサポート)。ECSやFunction Computeなどのクラウド環境では、AccessKeyを手動で設定する必要はありません。

認証情報の解析優先順位:CLI引数 / .env ファイル > シェル環境変数 > デフォルト認証情報チェーン。

💡 デフォルト値の自動入力

ALIBABA_CLOUD_REGION または ALIBABA_CLOUD_WORKSPACE が設定されている場合、ツール呼び出しで regionId または workspace パラメータが提供されていないと、サービスは自動的に環境変数の値を使用します。ユーザーが明示的に渡した値は上書きされません。

AIツール統合

Cursor / Kiro / Cline

streamable-httpモード(推奨):

  1. config.yaml を設定(server.transport: streamable-http を設定)

  2. サービスを起動:

./bin/alibabacloud-observability-mcp-server start
  1. mcp.json を設定:

{
  "mcpServers": {
    "alibaba_cloud_observability": {
      "url": "http://localhost:8080"
    }
  }
}

stdioモード:

  1. mcp.json を設定:

{
  "mcpServers": {
    "alibaba_cloud_observability": {
      "command": "./bin/alibabacloud-observability-mcp-server",
      "args": ["start", "--stdio"],
      "env": {
        "ALIBABA_CLOUD_ACCESS_KEY_ID": "<your_access_key_id>",
        "ALIBABA_CLOUD_ACCESS_KEY_SECRET": "<your_access_key_secret>"
      }
    }
  }
}

注意:stdioモードでは、config.yaml が存在しない場合、組み込みのデフォルト値が使用されます。

ツールセット

合計33個のツールがあり、3つの階層に分かれています。

PaaSツールセット(クラウドモニタリング 2.0、推奨)

統一データモデルに基づいており、ツール名は umodel_ または cms_ で始まります。合計16個のツール。

エンティティ管理ツール

ツール

説明

主要パラメータ

umodel_get_entities

エンティティリストを取得

workspace、domain、entity_set_name、regionId(必須);entity_filter(オプション)

umodel_get_neighbor_entities

エンティティの隣接関係を取得

workspace、src_entity_domain、src_name、src_entity_ids、regionId(必須)

umodel_search_entities

エンティティを検索

workspace、search_text、regionId(必須)

データセット管理ツール

ツール

説明

主要パラメータ

umodel_list_data_set

データセットをリストアップ

workspace、domain、entity_set_name、regionId(必須);data_set_types(オプション)

umodel_search_entity_set

エンティティセットを検索

workspace、search_text、regionId(必須)

umodel_get_entity_set

エンティティセットのスキーマ定義を取得

domain、entity_set_name、workspace、regionId(必須);detail(オプション)

umodel_list_related_entity_set

関連エンティティセットをリストアップ

workspace、domain、entity_set_name、regionId(必須)

データクエリツール

ツール

説明

主要パラメータ

umodel_get_metrics

指標データをクエリ

workspace、domain、entity_set_name、metric_domain_name、metric、regionId(必須);analysis_mode(basic/cluster/forecast/anomaly_detection)、offset(時系列比較)、time_range(オプション)

umodel_get_golden_metrics

ゴールデン指標をクエリ

workspace、domain、entity_set_name、regionId(必須);offset、time_range(オプション)

umodel_get_relation_metrics

関係指標をクエリ

workspace、src_domain、src_entity_set_name、relation_type、direction(in/out)、metric、metric_set_domain、regionId(必須);dest_entity_set_name(オプション)

umodel_get_logs

ログデータをクエリ

workspace、domain、entity_set_name、log_set_domain、log_set_name、regionId(必須);time_range、limit(オプション)

umodel_get_events

イベントデータをクエリ

workspace、domain、entity_set_name、event_set_domain、event_set_name、regionId(必須);time_range、limit(オプション)

umodel_get_traces

トレースデータをクエリ

workspace、domain、entity_set_name、trace_set_domain、trace_set_name、trace_ids、regionId(必須);time_range(オプション)

umodel_search_traces

トレースを検索

workspace、domain、entity_set_name、trace_set_domain、trace_set_name、regionId(必須);conditions、limit、time_range(オプション)

umodel_get_profiles

パフォーマンスプロファイルデータをクエリ

workspace、domain、entity_set_name、profile_set_domain、profile_set_name、entity_ids、regionId(必須);time_range、limit(オプション)

cms_natural_language_query

自然言語データクエリ

query、workspace、regionId(必須);time_range(オプション)

IaaSツールセット(SLS/CMS直接アクセス)

基盤APIに直接アクセスし、ツール名は sls_ または cms_ で始まります。合計14個のツール。

SLSツール

ツール

説明

主要パラメータ

sls_list_projects

プロジェクトをリストアップ

regionId(必須);project(オプション、あいまい検索)

sls_list_logstores

ログストアをリストアップ

project、regionId(必須)

sls_text_to_sql

自然言語からSQLへ変換

text、project、logStore、regionId(必須)

sls_text_to_sql_old

自然言語からSQLへ変換(旧版、Python版互換)

text、project、logStore、regionId(必須)

sls_text_to_spl

自然言語からSPLへ変換

text、project、logStore、data_sample、regionId(必須)

sls_execute_sql

SQLクエリを実行

project、logStore、query、regionId(必須);from_time、to_time(オプション)

sls_execute_spl

ネイティブSPLクエリを実行

query、workspace、regionId(必須);from_time、to_time(オプション)

sls_get_context_logs

ログコンテキストを取得

project、logStore、pack_id、pack_meta、regionId(必須);back_lines、forward_lines(オプション)

sls_log_explore

ログ探索分析

project、logStore、logField、regionId(必須);from_time、to_time、filter_query、groupField(オプション)

sls_log_compare

ログ比較分析

project、logStore、logField、regionId(必須);test_from_time、test_to_time、control_from_time、control_to_time、filter_query、groupField(オプション)

sls_sop

SLS運用アシスタント

text、regionId(必須)

CMSツール

ツール

説明

主要パラメータ

cms_execute_promql

PromQLクエリを実行

project、metricStore、query、regionId(必須);from_time、to_time(オプション)

cms_text_to_promql

自然言語からPromQLへ変換

text、project、metricStore、regionId(必須)

Sharedツールセット

合計3個のツール。

ツール

説明

主要パラメータ

list_workspace

ワークスペースをリストアップ

regionId(必須)

list_domains

エンティティドメインをリストアップ

workspace、regionId(必須)

introduction

サービス紹介

パラメータなし

時間式

すべてのデータクエリツールは、柔軟な時間範囲フォーマットをサポートしています:

フォーマット

例

相対プリセット

last_5m、last_1h、last_3d、last_1w、last_1M、last_1y

相対時間

now()-1h、now-30m、now()-7d

Grafanaスタイル

now-15m~now-5m、now/d、now-1d/d

キーワード

today、yesterday

絶対タイムスタンプ

1718451045(秒)、1718451045000(ミリ秒)

日時文字列

2024-01-01 00:00:00、2024-01-01T00:00:00Z

高度な機能

時系列比較分析

umodel_get_metrics および umodel_get_golden_metrics は、offset パラメータによる時系列比較をサポートしています:

# 对比当前1小时与1天前的数据
umodel_get_metrics(
    domain="apm", entity_set_name="apm.service",
    metric_domain_name="apm.metric.apm.service", metric="request_count",
    time_range="last_1h", offset="1d"
)

結果には以下が含まれます:

  • current: 現在期間の統計(max, min, avg, count)

  • compare: 比較期間の統計

  • diff: 変化分析(trend, avg_change, avg_change_percent)

  • diff_score: 差異スコアリング(0-1、大きいほど差異が顕著)

高度な分析モード

umodel_get_metrics は4つの分析モードをサポートしています:

モード

説明

出力フィールド

basic

生の時系列データ(デフォルト)

__ts__, __value__, __labels__

cluster

K-Means時系列クラスタリング

__cluster_index__, __entities__, __sample_value__

forecast

時系列予測(1-5日の履歴データが必要)

__forecast_ts__, __forecast_value__, __forecast_lower/upper_value__

anomaly_detection

異常検知(1-3日のデータが必要)

__anomaly_list_, __anomaly_msg__, __value_min/max/avg__

プロジェクト構造

├── cmd/server/          # CLI 入口(cobra)
├── pkg/
│   ├── client/          # SLS/CMS 客户端封装
│   ├── config/          # 配置管理(viper + sync.Once)
│   ├── endpoint/        # 端点解析
│   ├── errors/          # 结构化错误与错误码映射
│   ├── logger/          # 结构化日志(slog)
│   ├── server/          # MCP Server 核心(传输层、生命周期、健康检查)
│   ├── stability/       # 重试与熔断器
│   ├── timeparse/       # 时间表达式解析
│   └── toolkit/         # 工具集接口与注册中心
│       ├── paas/        # PaaS 工具集(umodel_*、cms_natural_language_query)
│       ├── iaas/        # IaaS 工具集(sls_*、cms_execute_promql、cms_text_to_promql)
│       └── shared/      # Shared 工具集(list_workspace、list_domains、introduction)
├── v1/                  # Python 版本(历史参考)
├── Makefile
├── go.mod
└── go.sum

開発

# 构建
make build

# 运行测试
make test

# 代码检查
make lint

# 清理构建产物
make clean

テスト

プロジェクトは、ユニットテスト + プロパティテスト + 回帰テストの3トラック戦略を採用しています:

  • ユニットテスト:テーブル駆動テスト、具体的な例と境界条件をカバー

  • プロパティテスト:gopter を使用し、すべての入力にわたる一般的な正当性プロパティを検証

  • 回帰テスト:統合テスト(//go:build integration)、Python版とのパラメータの一貫性を比較、実際のAlibaba Cloud認証情報が必要

# 运行所有单元测试
go test ./... -v

# 仅运行属性测试
go test ./... -run TestProperty_

# 运行回归测试(需要配置环境变量)
ALIBABA_CLOUD_ACCESS_KEY_ID=xxx \
ALIBABA_CLOUD_ACCESS_KEY_SECRET=xxx \
ALIBABA_CLOUD_REGION=cn-hongkong \
ALIBABA_CLOUD_WORKSPACE=xxx \
go test -tags=integration ./pkg/toolkit/... -v

AI Agent開発仕様

docs/AGENTS.md を参照してください。プロジェクト構造の説明、コードスタイルの規約、新しいツールの追加フロー、テスト仕様などが含まれています。

権限要件

MCP ServerがAlibaba Cloudの可観測性リソースに正常にアクセスおよび操作できるようにするには、以下の権限を設定する必要があります:

Alibaba Cloudアクセスキー (AccessKey)

  • サービスの実行には有効なAlibaba Cloud認証情報が必要です。以下の方式をサポートしています(優先順位順):

    1. AccessKey ID + AccessKey Secret(.env ファイル、環境変数、またはCLI引数経由で渡す)

    2. STS一時認証情報(ALIBABA_CLOUD_SECURITY_TOKEN 環境変数を設定)

    3. デフォルト認証情報チェーンによる自動検出(ECS RAM Role、OIDC、認証情報設定ファイルなど)

  • AccessKeyの取得と管理については、Alibaba Cloud AccessKey管理公式ドキュメントを参照してください。

RAM認可

AccessKeyに関連付けられたRAMユーザーまたはロールには、関連するクラウドサービスへのアクセスに必要な権限を付与する必要があります。

「最小権限の原則」に従うことを強く推奨します:使用する予定のMCPツールを実行するために必要な最小限の権限セットのみを付与してください。

使用するツールに応じて、以下のドキュメントを参照して権限を設定してください:

サービス

権限ドキュメント

説明

ログサービス (SLS)

SLS権限説明

sls_* ツールで必要

アプリケーションリアルタイム監視 (ARMS)

ARMS権限説明

umodel_* ツールで必要

クラウドモニタリング (CMS)

CMS権限説明

cms_* ツールで必要

特殊権限の説明:

  • SQL生成系ツール(sls_text_to_sql など)を使用するには、個別に sls:CallAiTools 権限を付与する必要があります

  • 自然言語クエリ機能(cms_natural_language_query)を使用するには、cms:CreateChat、cms:CreateThread、cms:GetThread、cms:ListThreads を付与する必要があります

セキュリティに関する推奨事項

  • サービスはAccessKeyを保存せず、実行時のAPI呼び出しにのみ使用します

  • SSE/HTTPモードでは、必ずアクセスポイントのアクセス制御を適切に行ってください

  • 内部ネットワークまたはVPC内にデプロイし、パブリックインターネットへの直接公開を避けることを推奨します

  • 認証なしでAccessKeyを設定したサーバーエンドポイントをパブリックインターネットに公開しないでください

  • Alibaba Cloud Function Compute (FC) を使用してデプロイし、VPC内からのアクセスのみに制限することを推奨します

ライセンス

本プロジェクトは、元のPython版と同じライセンス契約に従います。

Available Tools

9 tools
arms_generate_trace_queryA

生成ARMS应用的调用链查询语句。

        ## 功能概述

        该工具用于将自然语言描述转换为ARMS调用链查询语句,便于分析应用性能和问题。

        ## 使用场景

        - 当需要查询应用的调用链信息时
        - 当需要分析应用性能问题时
        - 当需要跟踪特定请求的执行路径时
        - 当需要分析服务间调用关系时

        ## 查询处理

        工具会将自然语言问题转换为SLS查询,并返回:
        - 生成的SLS查询语句
        - 存储调用链数据的项目名
        - 存储调用链数据的日志库名

        ## 查询上下文

        查询会考虑以下信息:
        - 应用的PID
        - 响应时间以纳秒存储,需转换为毫秒
        - 数据以span记录存储,查询耗时需要对符合条件的span进行求和
        - 服务相关信息使用serviceName字段
        - 如果用户明确提出要查询 trace信息,则需要在查询问题上question 上添加说明返回trace信息

        ## 查询示例

        - "帮我查询下 XXX 的 trace 信息"
        - "分析最近一小时内响应时间超过1秒的调用链"

        Args:
            ctx: MCP上下文,用于访问ARMS和SLS客户端
            user_id: 用户阿里云账号ID
            pid: 应用的PID
            region_id: 阿里云区域ID
            question: 查询调用链的自然语言问题

        Returns:
            包含查询信息的字典,包括sls_query、project和log_store
        
ParametersJSON Schema
NameRequiredDescriptionDefault
pidYespid,the pid of the app
questionYesquestion,the question to query the trace
region_idYesregion id,region id format like 'xx-xxx',like 'cn-hangzhou'
user_idYesuser aliyun account id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool does (converts natural language to SLS queries), what it returns (generated SLS query, project name, log store name), and important contextual behaviors like response time conversion from nanoseconds to milliseconds and handling of trace-specific queries. The main gap is lack of information about error conditions or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, 查询处理, 查询上下文, 查询示例, Args, Returns), but it's quite verbose at approximately 400 Chinese characters. Some sections like the detailed query context could be more concise while maintaining clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 4 parameters, 100% schema coverage, but no annotations or output schema, the description provides substantial contextual information. It explains the transformation process, return format, query considerations, and includes examples. The main gap is the lack of output schema documentation, but the Returns section partially compensates for this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters. The description's Args section restates the parameter names but doesn't add significant semantic value beyond what's in the schema. However, it does provide useful context about how 'question' parameters should be formulated with natural language queries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose as '将自然语言描述转换为ARMS调用链查询语句' (converting natural language descriptions to ARMS trace query statements), which is a specific verb+resource combination. It clearly distinguishes this from sibling tools like 'sls_translate_natural_language_to_query' by focusing specifically on ARMS application trace queries rather than general SLS queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '使用场景' section provides four explicit scenarios for when to use this tool, including querying trace information, analyzing performance problems, tracking specific request execution paths, and analyzing service call relationships. This gives clear guidance on appropriate usage contexts without needing to reference specific alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

arms_search_appsA

搜索ARMS应用。

        ## 功能概述

        该工具用于根据应用名称搜索ARMS应用,返回应用的基本信息,包括应用名称、PID、用户ID和类型。

        ## 使用场景

        - 当需要查找特定名称的应用时
        - 当需要获取应用的PID以便进行其他ARMS操作时
        - 当需要检查用户拥有的应用列表时

        ## 搜索条件

        - app_name_query必须是应用名称的一部分,而非自然语言
        - 搜索结果将分页返回,可以指定页码和每页大小

        ## 返回数据结构

        返回一个字典,包含以下信息:
        - total: 符合条件的应用总数
        - page_size: 每页大小
        - page_number: 当前页码
        - trace_apps: 应用列表,每个应用包含app_name、pid、user_id和type

        ## 查询示例

        - "帮我查询下 XXX 的应用"
        - "找出名称包含'service'的应用"

        Args:
            ctx: MCP上下文,用于访问ARMS客户端
            app_name_query: 应用名称查询字符串
            region_id: 阿里云区域ID
            page_size: 每页大小,范围1-100,默认20
            page_number: 页码,默认1

        Returns:
            包含应用信息的字典
        
ParametersJSON Schema
NameRequiredDescriptionDefault
app_name_queryYesapp name query
page_numberNopage number,default is 1
page_sizeNopage size,max is 100
region_idYesregion id,region id format like 'xx-xxx',like 'cn-hangzhou'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral disclosure burden. It effectively describes the search functionality, pagination behavior (page_size range 1-100, defaults), and return data structure. It could improve by mentioning authentication requirements or rate limits, but covers core behavioral aspects well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, etc.), but contains some redundancy. The Args/Returns section repeats information already covered in the 返回数据结构 section, and the 查询示例 section adds minimal practical value, making the description longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with 4 parameters and no output schema, the description provides comprehensive context including purpose, usage scenarios, search constraints, pagination behavior, and detailed return data structure. The main gap is lack of authentication/rate limit information, but otherwise covers most essential aspects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing solid parameter documentation. The description adds some value by explaining app_name_query must be part of app name (not natural language) and providing region_id format examples ('cn-hangzhou'), but doesn't significantly enhance understanding beyond what the schema already documents.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches for ARMS applications by name and returns basic information including app name, PID, user ID, and type. It uses specific verbs ('搜索ARMS应用', '根据应用名称搜索') and distinguishes itself from sibling tools by focusing on ARMS applications rather than SLS operations or trace queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides three usage scenarios: when needing to find apps by specific name, when needing PIDs for other ARMS operations, and when checking user-owned app lists. It also includes search condition guidance (app_name_query must be part of app name, not natural language) and pagination instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_describe_logstoreA

获取SLS日志库的结构信息。

        ## 功能概述

        该工具用于获取指定SLS项目中日志库的索引信息和结构定义,包括字段类型、别名、是否大小写敏感等信息。

        ## 使用场景

        - 当需要了解日志库的字段结构时
        - 当需要获取日志库的索引配置信息时
        - 当构建查询语句前需要了解可用字段时
        - 当需要分析日志数据结构时

        ## 返回数据结构

        返回一个字典,键为字段名,值包含以下信息:
        - alias: 字段别名
        - sensitive: 是否大小写敏感
        - type: 字段类型
        - json_keys: JSON字段的子字段信息

        ## 查询示例

        - "我想查询 XXX 的日志库的 schema"
        - "我想查询 XXX 的日志库的 index"
        - "我想查询 XXX 的日志库的结构信息"

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            project: SLS项目名称,必须精确匹配
            log_store: SLS日志库名称,必须精确匹配
            region_id: 阿里云区域ID

        Returns:
            包含日志库结构信息的字典
        
ParametersJSON Schema
NameRequiredDescriptionDefault
log_storeYessls log store name,must exact match,not fuzzy search
projectYessls project name,must exact match,not fuzzy search
region_idYesaliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It effectively discloses behavioral traits: it describes the return data structure in detail ('返回数据结构' section), including keys like alias, sensitive, type, and json_keys. It also specifies that parameters '必须精确匹配' (must exact match) and provides query examples. However, it doesn't mention potential errors, rate limits, or authentication needs, which are gaps for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with sections (功能概述, 使用场景, 返回数据结构, 查询示例, Args, Returns), which aids readability. However, it includes redundant elements: the Args and Returns sections largely repeat information from the schema and return structure description, and the query examples are somewhat verbose. While not overly long, it could be more front-loaded and efficient, with some sentences not earning their place fully.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description is fairly complete. It covers purpose, usage scenarios, return data structure, and parameter basics. The lack of output schema is mitigated by the detailed return structure explanation. However, it misses some contextual details like error handling or dependencies, which would enhance completeness for a tool with no annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters with descriptions (e.g., 'must exact match, not fuzzy search'). The description adds minimal value beyond the schema: it repeats the exact match requirement in Chinese and lists parameters in the Args section without additional semantics. This meets the baseline of 3, as the schema does the heavy lifting, but the description doesn't compensate with extra insights like format examples or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取SLS日志库的结构信息' (Get SLS log store structure information) and elaborates with '获取指定SLS项目中日志库的索引信息和结构定义' (Get index information and structure definition of a specified SLS project's log store). It specifies the verb '获取' (get) and resource 'SLS日志库的结构信息' (SLS log store structure information). However, it doesn't explicitly differentiate from sibling tools like 'sls_list_logstores' or 'sls_execute_query', which reduces clarity slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage scenarios in a '使用场景' (Usage scenarios) section, listing four specific cases (e.g., '当需要了解日志库的字段结构时' - When needing to understand the field structure of a log store). It implicitly distinguishes from siblings by focusing on structure retrieval rather than listing or querying. However, it lacks explicit when-not-to-use guidance or named alternatives, such as contrasting with 'sls_execute_query' for actual data queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_diagnose_queryA

诊断SLS查询语句。

        ## 功能概述

        当 SLS 查询语句执行失败时,可以调用该工具,根据错误信息,生成诊断结果。诊断结果会包含查询语句的正确性、性能分析、优化建议等信息。

        ## 使用场景

        - 当需要诊断SLS查询语句的正确性时
        - 当 SQL 执行错误需要查找原因时

        ## 查询示例

        - "帮我诊断下 XXX 的日志查询语句"
        - "帮我分析下 XXX 的日志查询语句"

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            query: SLS查询语句
            error_message: 错误信息
            project: SLS项目名称
            log_store: SLS日志库名称
            region_id: 阿里云区域ID
        
ParametersJSON Schema
NameRequiredDescriptionDefault
error_messageYeserror message
log_storeYessls log store name
projectYessls project name
queryYessls query
region_idYesaliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the tool's function (diagnosing failed queries) and output (diagnostic results with correctness, performance analysis, optimization suggestions), which is adequate for a read-only diagnostic tool. However, it lacks details about authentication requirements, rate limits, error handling, or response format specifics, leaving gaps in behavioral understanding.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, 查询示例, Args), making it easy to scan. However, the query examples are somewhat redundant ('帮我诊断下 XXX 的日志查询语句' and '帮我分析下 XXX 的日志查询语句' are very similar), and the Args section could be more integrated with the functional explanation. Overall, it's appropriately sized but has minor inefficiencies.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a diagnostic tool with 5 required parameters and no output schema, the description adequately covers purpose and usage but lacks details on output format, error cases, or dependencies. Without annotations, it should provide more behavioral context (e.g., what the diagnostic results look like, whether it modifies data). The absence of an output schema increases the need for description completeness, which is only partially met.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, providing basic descriptions for all 5 parameters. The description lists parameters in an Args section but only repeats their names without adding meaningful semantics beyond the schema. It implies that 'error_message' is used for diagnosis and 'query' is the SLS statement to analyze, but this is already evident from parameter names and schema descriptions. The baseline score of 3 reflects adequate but minimal added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '诊断SLS查询语句' (diagnose SLS query statements) when they fail, generating diagnostic results including correctness, performance analysis, and optimization suggestions. It specifies the verb ('诊断' - diagnose) and resource ('SLS查询语句' - SLS query statements), distinguishing it from siblings like sls_execute_query (executes queries) and sls_translate_natural_language_to_query (translates natural language to queries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool: '当 SLS 查询语句执行失败时' (when SLS query statements fail to execute) and provides specific usage scenarios like diagnosing query correctness or finding causes of SQL execution errors. It implicitly distinguishes from siblings by focusing on failure diagnosis rather than execution, translation, or listing operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_execute_queryB

执行SLS日志查询。

        ## 功能概述

        该工具用于在指定的SLS项目和日志库上执行查询语句,并返回查询结果。查询将在指定的时间范围内执行。

        ## 使用场景

        - 当需要根据特定条件查询日志数据时
        - 当需要分析特定时间范围内的日志信息时
        - 当需要检索日志中的特定事件或错误时
        - 当需要统计日志数据的聚合信息时



        ## 查询语法

        查询必须使用SLS有效的查询语法,而非自然语言。如果不了解日志库的结构,可以先使用sls_describe_logstore工具获取索引信息。

        ## 时间范围

        查询必须指定时间范围:
        - from_timestamp: 开始时间戳(秒)
        - to_timestamp: 结束时间戳(秒)

        ## 查询示例

        - "帮我查询下 XXX 的日志信息"
        - "查找最近一小时内的错误日志"

        ## 错误处理
        - Column xxx can not be resolved 如果是 sls_translate_natural_language_to_query 工具生成的查询语句 可能存在查询列未开启统计,可以提示用户增加相对应的信息,或者调用 sls_describe_logstore 工具获取索引信息之后,要用户选择正确的字段或者提示用户对列开启统计。当确定列开启统计之后,可以再次调用sls_translate_natural_language_to_query 工具生成查询语句

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            project: SLS项目名称
            log_store: SLS日志库名称
            query: SLS查询语句
            from_timestamp: 查询开始时间戳(秒)
            to_timestamp: 查询结束时间戳(秒)
            limit: 返回结果的最大数量,范围1-100,默认10
            region_id: 阿里云区域ID

        Returns:
            查询结果列表,每个元素为一条日志记录
        
ParametersJSON Schema
NameRequiredDescriptionDefault
from_timestampYesfrom timestamp,unit is second
limitNolimit,max is 100
log_storeYessls log store name
projectYessls project name
queryYesquery
region_idYesaliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'
to_timestampYesto timestamp,unit is second

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses that queries must use SLS syntax (not natural language), specifies required time range parameters, mentions error handling scenarios, and indicates results are returned as a list of log records. However, it doesn't cover important behavioral aspects like authentication requirements, rate limits, pagination behavior, or what happens with malformed queries beyond the specific error example.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is excessively long with redundant sections. The 'Args' and 'Returns' sections duplicate information that should be in the schema. The query examples are in natural language despite explicitly stating queries must use SLS syntax, creating confusion. The error handling section is overly specific to one sibling tool interaction. Much of this content could be streamlined or moved to structured documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter query execution tool with no annotations and no output schema, the description provides adequate functional coverage but lacks important operational context. It explains what the tool does and when to use it, but doesn't sufficiently cover error patterns beyond one example, performance characteristics, or result format details. The description compensates somewhat for the lack of structured metadata but leaves gaps in behavioral transparency.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 7 parameters thoroughly. The description adds minimal value beyond the schema - it mentions time range requirements and provides an example limit value, but doesn't explain parameter interactions, constraints beyond what's in the schema, or the significance of region_id selection. The baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool 'executes SLS log queries' with specific resources (SLS project and log store) and mentions returning query results. It distinguishes from siblings like sls_describe_logstore and sls_translate_natural_language_to_query by focusing on query execution rather than metadata or translation. However, it doesn't explicitly contrast with sls_diagnose_query which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '使用场景' section provides clear context for when to use this tool (querying logs with specific conditions, time ranges, events, or aggregations). It explicitly references sibling tools sls_describe_logstore and sls_translate_natural_language_to_query for prerequisite steps. However, it doesn't explicitly state when NOT to use this tool or provide clear alternatives among siblings like sls_diagnose_query.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_get_current_timeA

获取当前时间信息。

        ## 功能概述

        该工具用于获取当前的时间戳和格式化的时间字符串,便于在执行SLS查询时指定时间范围。

        ## 使用场景

        - 当需要获取当前时间以设置查询的结束时间
        - 当需要获取当前时间戳进行时间计算
        - 在构建查询时间范围时使用当前时间作为参考点

        ## 返回数据格式

        返回包含两个字段的字典:
        - current_time: 格式化的时间字符串 (YYYY-MM-DD HH:MM:SS)
        - current_timestamp: 整数形式的Unix时间戳(秒)

        Args:
            ctx: MCP上下文

        Returns:
            包含当前时间信息的字典
        
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does well by disclosing the return format (dictionary with current_time and current_timestamp fields), data formats (YYYY-MM-DD HH:MM:SS string and Unix timestamp in seconds), and context about SLS query usage. It doesn't mention performance characteristics or error conditions, but provides substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, 返回数据格式) and efficiently communicates essential information. While slightly verbose due to the section headers, every sentence adds value and the information is appropriately front-loaded with the core purpose first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no annotations and no output schema, the description provides complete context: clear purpose, specific usage scenarios, detailed return format with field descriptions and data types. This gives the agent everything needed to understand when and how to use this tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters with 100% schema description coverage, so the baseline would be 4. The description correctly notes 'Args: ctx: MCP上下文' which acknowledges the context parameter, though this is standard for MCP tools. It adds no additional parameter semantics beyond what's implied by having no parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '获取当前时间信息' (get current time information). It specifies the exact resource (timestamp and formatted time string) and distinguishes it from sibling tools like sls_execute_query or sls_describe_logstore by focusing solely on time retrieval rather than query execution or metadata inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '使用场景' (usage scenarios) section explicitly lists three specific situations when to use this tool: setting query end times, performing timestamp calculations, and using current time as a reference point for query time ranges. This provides clear guidance on when this tool is appropriate versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_list_logstoresA

列出SLS项目中的日志库。

        ## 功能概述

        该工具可以列出指定SLS项目中的所有日志库,如果不选,则默认为日志库类型
        支持通过日志库名称进行模糊搜索。如果不提供日志库名称,则返回项目中的所有日志库。

        ## 使用场景

        - 当需要查找特定项目下是否存在某个日志库时
        - 当需要获取项目中所有可用的日志库列表时
        - 当需要根据日志库名称的部分内容查找相关日志库时

        ## 是否指标库

        如果需要查找指标或者时序相关的库,请将is_metric_store参数设置为True

        ## 查询示例

        - "我想查询有没有 XXX 的日志库"
        - "某个 project 有哪些 log store"

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            project: SLS项目名称,必须精确匹配
            log_store: 日志库名称,支持模糊搜索
            limit: 返回结果的最大数量,范围1-100,默认10
            is_metric_store: 是否指标库,可选值为True或False,默认为False
            region_id: 阿里云区域ID

        Returns:
            日志库名称的字符串列表
        
ParametersJSON Schema
NameRequiredDescriptionDefault
is_metric_storeNois metric store,default is False,only use want to find metric store
limitNolimit,max is 100
log_storeNolog store name,fuzzy search
log_store_typeNolog store type,default is logs,should be logs,metrics
projectYessls project name,must exact match
region_idYesaliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the tool lists log stores with fuzzy search capabilities, defaults to log store type if unspecified, supports pagination via limit (range 1-100), and distinguishes between log and metric stores. It doesn't mention rate limits, authentication needs, or error handling, but covers core operational traits well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, etc.), but it includes redundant information. The Args and Returns sections repeat what's in the schema, and the query examples add little practical value. While not overly verbose, some content doesn't earn its place, reducing efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 6 parameters, no annotations, and no output schema, the description does a good job. It explains the tool's purpose, usage, and key behaviors, and the schema covers parameter details. The main gap is the lack of output format explanation beyond '日志库名称的字符串列表' (list of log store names), but given the tool's simplicity, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema: it mentions fuzzy search for log_store and clarifies is_metric_store usage in a dedicated section. However, it doesn't provide additional context like examples for region_id format or interactions between parameters. Baseline 3 is appropriate given the schema does most of the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '列出SLS项目中的日志库' (list log stores in SLS projects). It specifies the exact action (list) and resource (log stores), and distinguishes it from siblings like sls_describe_logstore (which describes a single log store) and sls_list_projects (which lists projects). The functional overview reinforces this with details about fuzzy search and default behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage scenarios: finding if a specific log store exists, getting all available log stores, or searching by partial name. It also includes a dedicated section '是否指标库' (Is it a metric store) that explicitly guides when to set is_metric_store to True versus False, offering clear alternatives for different data types.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_list_projectsA

列出阿里云日志服务中的所有项目。

        ## 功能概述

        该工具可以列出指定区域中的所有SLS项目,支持通过项目名进行模糊搜索。如果不提供项目名称,则返回该区域的所有项目。

        ## 使用场景

        - 当需要查找特定项目是否存在时
        - 当需要获取某个区域下所有可用的SLS项目列表时
        - 当需要根据项目名称的部分内容查找相关项目时

        ## 返回数据结构

        返回的项目信息包含:
        - project_name: 项目名称
        - description: 项目描述
        - region_id: 项目所在区域

        ## 查询示例

        - "有没有叫 XXX 的 project"
        - "列出所有SLS项目"

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            project_name_query: 项目名称查询字符串,支持模糊搜索
            limit: 返回结果的最大数量,范围1-100,默认10
            region_id: 阿里云区域ID,region id format like "xx-xxx",like "cn-hangzhou"

        Returns:
            包含项目信息的字典列表,每个字典包含project_name、description和region_id
        
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNolimit,max is 100
project_name_queryNoproject name,fuzzy search
region_idYesaliyun region id

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses key behavioral traits: it's a read-only listing operation (implied by '列出'), supports fuzzy search ('模糊搜索'), has a default limit of 10 with range 1-100, and requires region_id. However, it doesn't mention rate limits, authentication needs, or pagination behavior, leaving some gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with clear sections (功能概述, 使用场景, etc.), but it's verbose with redundant information. For example, the '返回数据结构' section repeats what's in the Returns docstring, and the '查询示例' adds little operational value. Some sentences don't earn their place, making it less concise than ideal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description does a good job covering the tool's purpose, usage, parameters, and return format. It explains what the tool does, when to use it, and what data it returns. However, it lacks details on error handling, authentication, or rate limits, which would be helpful for a cloud service tool with no structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all three parameters well. The description adds minimal value beyond the schema: it reiterates that project_name_query supports fuzzy search and that region_id is required, but doesn't provide additional context like format examples beyond 'xx-xxx' or practical usage tips. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('列出' - list) and resource ('阿里云日志服务中的所有项目' - all projects in Alibaba Cloud Log Service). It distinguishes from siblings like sls_list_logstores (which lists logstores within projects) by focusing on projects rather than logstores, making the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The '使用场景' section explicitly provides three scenarios for when to use this tool: checking if a specific project exists, getting all SLS projects in a region, and searching by partial project name. It also mentions '如果不提供项目名称,则返回该区域的所有项目' (if no project name is provided, returns all projects in the region), clarifying the default behavior.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sls_translate_natural_language_to_queryA

将自然语言转换为SLS查询语句。

        ## 功能概述

        该工具可以将自然语言描述转换为有效的SLS查询语句,便于用户使用自然语言表达查询需求。

        ## 使用场景

        - 当用户不熟悉SLS查询语法时
        - 当需要快速构建复杂查询时
        - 当需要从自然语言描述中提取查询意图时

        ## 使用限制

        - 仅支持生成SLS查询,不支持其他数据库的SQL如MySQL、PostgreSQL等
        - 生成的是查询语句,而非查询结果,需要配合sls_execute_query工具使用
        - 如果查询涉及ARMS应用,应优先使用arms_generate_trace_query工具
        - 需要对应的 log_sotre 已经设定了索引信息,如果生成的结果里面有字段没有索引或者开启统计,可能会导致查询失败,需要友好的提示用户增加相对应的索引信息

        ## 最佳实践

        - 提供清晰简洁的自然语言描述
        - 不要在描述中包含项目或日志库名称
        - 如有需要,指定查询的时间范围
        - 首次生成的查询可能不完全符合要求,可能需要多次尝试

        ## 查询示例

        - "帮我生成下 XXX 的日志查询语句"
        - "查找最近一小时内的错误日志"

        Args:
            ctx: MCP上下文,用于访问SLS客户端
            text: 用于生成查询的自然语言文本
            project: SLS项目名称
            log_store: SLS日志库名称
            region_id: 阿里云区域ID

        Returns:
            生成的SLS查询语句
        
ParametersJSON Schema
NameRequiredDescriptionDefault
log_storeYessls log store name
projectYessls project name
region_idYesaliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'
textYesthe natural language text to generate sls log store query

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden and does an excellent job disclosing behavioral traits. It explains: '生成的是查询语句,而非查询结果' (generates query statements, not query results), '需要对应的 log_store 已经设定了索引信息' (requires log_store to have index settings), '可能会导致查询失败' (may cause query failure), and '首次生成的查询可能不完全符合要求' (first generated query may not fully meet requirements). This covers limitations, prerequisites, and expected behavior beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (功能概述, 使用场景, 使用限制, 最佳实践, 查询示例, Args, Returns) and appropriately sized. While comprehensive, some sections like the detailed usage restrictions could be slightly more concise. Every sentence earns its place by providing valuable guidance, but there's minor room for tightening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (natural language to query translation with multiple parameters and behavioral constraints) and the absence of both annotations and output schema, the description provides complete context. It covers purpose, usage scenarios, limitations, best practices, examples, parameters, and return values. The description fully compensates for the lack of structured metadata.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3 even though the description doesn't add parameter details beyond what's in the schema. The Args section in the description merely lists parameters (text, project, log_store, region_id) without providing additional semantic context beyond what the schema already documents with its descriptions. The description adds value through usage context but not parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '将自然语言转换为SLS查询语句' (translate natural language to SLS query statements). It specifies both the verb (convert/translate) and resource (natural language to SLS queries), and distinguishes it from sibling tools like sls_execute_query (which executes queries) and arms_generate_trace_query (for ARMS applications).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool vs alternatives. It states: '当用户不熟悉SLS查询语法时' (when users are unfamiliar with SLS query syntax), '需要配合sls_execute_query工具使用' (needs to be used with sls_execute_query tool), and '如果查询涉及ARMS应用,应优先使用arms_generate_trace_query工具' (if the query involves ARMS applications, prioritize using arms_generate_trace_query tool). This clearly defines usage context and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv1.0.0
    • First observedarms_generate_trace_query
    • First observedarms_search_apps
    • First observedsls_describe_logstore
    • First observedsls_diagnose_query
    • First observedsls_execute_query
    • First observedsls_get_current_time
    • First observedsls_list_logstores
    • First observedsls_list_projects
    • First observedsls_translate_natural_language_to_query

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap. The tools are organized into two main categories: ARMS application monitoring tools (arms_generate_trace_query, arms_search_apps) and SLS log service tools (the remaining seven), with each addressing specific operations like query generation, search, description, diagnosis, execution, time retrieval, listing, and translation. The descriptions clearly differentiate their functions, preventing misselection.

Naming Consistency5/5

Tool names follow a highly consistent pattern throughout. All names use snake_case and a clear prefix-action-resource structure (e.g., arms_search_apps, sls_execute_query). The prefixes 'arms_' and 'sls_' denote the service domain, followed by a verb (e.g., generate, search, describe, diagnose) and a noun (e.g., trace_query, apps, logstore), making the set predictable and readable.

Tool Count5/5

With 9 tools, the count is well-scoped for an observability server covering ARMS and SLS services. Each tool earns its place by addressing core operations like listing resources, executing queries, generating queries from natural language, and diagnosing issues. This provides comprehensive coverage without being overwhelming or too sparse for the domain.

Completeness5/5

The tool set offers complete coverage for the observability domain, including CRUD-like operations for logs and traces. It supports listing projects and logstores, describing structures, executing and diagnosing queries, translating natural language, and managing ARMS applications. There are no obvious gaps; tools like sls_get_current_time and sls_diagnose_query add utility for time handling and error analysis, ensuring agents can handle full workflows without dead ends.

Maintenance

ActivityStale
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    A
    maintenance
    Enables AI assistants to interact with Alibaba Cloud Yunxiao DevOps platform for managing projects, code repositories, work items, pipelines, deployments, and testing workflows through comprehensive organization, development, and delivery tools.
    81
    828 npm
    175
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to query and analyze Alibaba Cloud SLS logs using natural language, supporting multiple log sources like Function Compute and ECS. It provides tools for searching logs, performing SQL analysis, and visualizing log distributions directly within Cursor or Claude.
    6
    43 npm
    11
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides a suite of 33 tools for interacting with Tencent Cloud Log Service (CLS), enabling log analysis, PromQL metrics queries, and resource management. It allows AI assistants to perform CQL/SQL retrieval, manage alarm strategies, and handle data processing tasks with tiered permission controls.
    24
    6
    Apache 2.0