Skip to main content
Glama
aliyun

Alibaba Cloud Observability MCP Server

Official
by aliyun

sls_translate_natural_language_to_query

Convert natural language descriptions into SLS (Log Service) query statements, enabling users to search logs without requiring SLS query syntax knowledge.

Instructions

将自然语言转换为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查询语句

Input Schema

TableJSON 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

Implementation Reference

  • Handler implementation for the sls_text_to_sql tool, which translates natural language (text) to SLS SQL query using the SLS AI service.
    @self.server.tool() @retry( stop=stop_after_attempt(Config.get_retry_attempts()), wait=wait_fixed(Config.RETRY_WAIT_SECONDS), retry=retry_if_exception_type(Exception), reraise=True, ) @handle_tea_exception def sls_text_to_sql( ctx: Context, text: str = Field( ..., description="the natural language text to generate sls log store query", ), project: str = Field(..., description="sls project name"), logStore: str = Field(..., description="sls log store name"), regionId: str = Field( default=..., description="aliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'", ), ) -> Dict[str, Any]: """将自然语言转换为SLS查询语句。当用户有明确的 logstore 查询需求,必须优先使用该工具来生成查询语句 ## 功能概述 该工具可以将自然语言描述转换为有效的SLS查询语句,便于用户使用自然语言表达查询需求。用户有任何 SLS 日志查询需求时,都需要优先使用该工具。 ## 使用场景 - 当用户不熟悉SLS查询语法时 - 当需要快速构建复杂查询时 - 当需要从自然语言描述中提取查询意图时 ## 使用限制 - 仅支持生成SLS查询,不支持其他数据库的SQL如MySQL、PostgreSQL等 - 生成的是查询语句,而非查询结果,需要配合execute_sql工具使用 - 需要对应的 log_store 已经设定了索引信息,如果生成的结果里面有字段没有索引或者开启统计,可能会导致查询失败,需要友好的提示用户增加相对应的索引信息 ## 最佳实践 - 提供清晰简洁的自然语言描述 - 不要在描述中包含项目或日志库名称 - 如有需要,指定查询的时间范围 - 首次生成的查询可能不完全符合要求,可能需要多次尝试 ## 查询示例 - "帮我生成下 XXX 的日志查询语句" - "查找最近一小时内的错误日志" Args: ctx: MCP上下文,用于访问SLS客户端 text: 用于生成查询的自然语言文本 project: SLS项目名称 logStore: SLS日志库名称 regionId: 阿里云区域ID Returns: 生成的SLS查询语句 """ return utils_text_to_sql(ctx, text, project, logStore, regionId)
  • Core helper function implementing the translation by invoking Alibaba Cloud SLS CallAiTools API with tool_name='text_to_sql'.
    def text_to_sql( ctx: Context, text: str, project: str, log_store: str, region_id: str ) -> dict[str, Any]: logger.info( f"开始文本转SQL查询,输入参数: text={text}, project={project}, log_store={log_store}, region_id={region_id}" ) try: sls_client_wrapper = ctx.request_context.lifespan_context["sls_client"] sls_client: Client = sls_client_wrapper.with_region("cn-shanghai") knowledge_config = sls_client_wrapper.get_knowledge_config(project, log_store) logger.info(f"获取知识库配置: {knowledge_config is not None}") request: CallAiToolsRequest = CallAiToolsRequest() request.tool_name = "text_to_sql" request.region_id = region_id params: dict[str, Any] = { "project": project, "logstore": log_store, "sys.query": append_current_time(text), "external_knowledge_uri": knowledge_config["uri"] if knowledge_config else "", "external_knowledge_key": knowledge_config["key"] if knowledge_config else "", } request.params = params logger.info(f"构建SLS AI工具请求,工具名称: {request.tool_name}") runtime: util_models.RuntimeOptions = util_models.RuntimeOptions() runtime.read_timeout = 60000 runtime.connect_timeout = 60000 tool_response: CallAiToolsResponse = sls_client.call_ai_tools_with_options( request=request, headers={}, runtime=runtime ) data = tool_response.body if "------answer------\n" in data: data = data.split("------answer------\n")[1] result = { "data": data, "requestId": tool_response.headers.get("x-log-requestid", ""), } logger.info(f"文本转SQL查询成功,请求ID: {result['requestId']}") return result except Exception as e: logger.error(f"调用SLS AI工具失败,异常详情: {str(e)}", exc_info=True) raise
  • Registration of the IaaS toolkit containing the sls_text_to_sql tool.
    register_iaas_tools(mcp_server)
  • Function that instantiates IaaSToolkit, which registers the sls_text_to_sql tool.
    def register_iaas_tools(server: FastMCP): """Register IaaS toolkit tools with the FastMCP server Args: server: FastMCP server instance """ IaaSToolkit(server)
  • Pydantic input schema validation for the tool parameters: text (natural language), project, logStore, regionId.
    ctx: Context, text: str = Field( ..., description="the natural language text to generate sls log store query", ), project: str = Field(..., description="sls project name"), logStore: str = Field(..., description="sls log store name"), regionId: str = Field( default=..., description="aliyun region id,region id format like 'xx-xxx',like 'cn-hangzhou'", ), ) -> Dict[str, Any]:

Other Tools

Related Tools

Latest Blog Posts

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/aliyun/alibabacloud-observability-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server