The Model Context Protocol (MCP) defines a standard interface for exchanging context between a large language model and a development environment, giving the model secure and controlled access to real-time domain knowledge. Observable MCP Server provides AI-powered observability for accessing and analyzing multimodal data through natural language. It seamlessly integrates with Cursor, Cline, Windsurf, and various agent frameworks, enabling enterprise teams to use observable data more efficiently and reliably.
This project has been rewritten in Go for single binary deployment with zero runtime dependencies. For the original Python version, visit V1.
Advantages
Multi-source data integration: Connect once to query data from multiple observability products—including Log Service, Application Real-Time Monitoring Service (ARMS), CloudMonitor, and Prometheus monitoring—for a unified view of logs, metrics, and traces.
Natural language-driven: Use natural language to query logs, traces, and metrics without writing query statements. The server returns structured answers.
Enterprise-grade security: It uses Alibaba Cloud AccessKey authentication and collects no server-side data. It strictly validates the inputs and outputs of each tool, keeping your data secure and under your control.
Single binary deployment: The Go application compiles into a single executable file that requires no runtime environment and supports Linux, macOS, and Windows.
Guaranteed stability: Built-in mechanisms such as retry (exponential backoff), circuit breakers, and graceful shutdown make it production-ready.
Paid features
Some AI tools in Observable MCP Server call APIs from Alibaba Cloud STAROps, an intelligent O&M platform. Using these tools incurs charges.
Paid tools
Each call to the following AI tools creates a STAROps AI conversation and incurs a charge:
Tool name | Feature | Description |
| natural language to SQL query | Converts natural language questions into executable SLS SQL. |
| natural language to SPL query | Converts natural language questions into SPL statements and executes them. |
| Log Service intelligent O&M assistant | Provides O&M suggestions for Log Service through an AI conversation. |
| natural language data query | Lets you query observability data in natural language directly through DataAgent. |
Billing
Alibaba Cloud STAROps bills you for paid tools. For more information, see billing details.
If you do not require AI capabilities, you can prevent unexpected charges by explicitly defining the
enabled_toolslist in theconfig.yamlfile to include only free tools.toolkit: scope: all enabled_tools: - sls_list_projects - sls_list_logstores - sls_execute_sql - sls_execute_spl - cms_execute_promql # ... Add other free tools as needed
Getting started
Step 1: Configure permissions
This service requires a valid Alibaba Cloud AccessKey ID and AccessKey Secret. You can get them from Create an AccessKey.
If you use a RAM user, note the following:
You must grant the required permissions to the RAM user or role associated with the AccessKey to access the relevant cloud services.
Follow the principle of least privilege: Grant only the minimum set of permissions required by the MCP tools you plan to use. This helps minimize security risks.
ImportantThe Observable MCP Server uses your provided AccessKey to call the Alibaba Cloud OpenAPI at runtime, but it does not store the AccessKey in any form or use it for any other purpose.
Step 2: Install the MCP service
We provide two installation methods below. Choose the one that suits your needs. We strongly recommend deploying the MCP Server in an internal network or trusted environment, such as a VPC, to avoid exposing it to the public internet. The recommended approach is to deploy using Function Compute (FC) and configure its network for VPC-only access to achieve network-level isolation and security.
Download binaries
Download the binary file for your platform from the Releases page:
# 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.gzThe extracted package contains:
alibabacloud-observability-mcp-server— The executable fileconfig.yaml— The default configuration file
After configuring your credentials, you can start the service:
# Set your Alibaba Cloud AccessKey
export ALIBABA_CLOUD_ACCESS_KEY_ID=<YOUR_ACCESS_KEY_ID>
export ALIBABA_CLOUD_ACCESS_KEY_SECRET=<YOUR_ACCESS_KEY_SECRET>
# Start in stdio mode (for local integrations like Cursor, Kiro, and Cline)
./alibabacloud-observability-mcp-server start --stdio
# Start in SSE or streamable-http mode (determined by server.transport in config.yaml)
./alibabacloud-observability-mcp-server start --config config.yamlBuild from source
Go 1.22 or later is required.
# Clone the source code
git clone https://github.com/aliyun/alibabacloud-observability-mcp-server.git
# Enter the source code directory
cd alibabacloud-observability-mcp-server
# Build for the current platform
make build
# Start the service in stdio mode
./bin/alibabacloud-observability-mcp-server start --stdio
# Start the service in SSE/streamable-http mode (requires config.yaml)
./bin/alibabacloud-observability-mcp-server start --config config.yamlTo build the binaries for all platforms, run the following command:
# Build for all platforms (Linux, macOS, and Windows)
make build-allThe generated binaries are located in the bin/ directory.
Configuration
The configuration uses a two-layer structure:
config.yaml— Server configuration, including transport mode, logging, network settings, and toolkits..envfile or environment variables — Credentials and runtime parameters, such as your AccessKey.
config.yaml structure
Search path for config.yaml: current directory → ./config/ directory. In stdio mode, if config.yaml does not exist, the built-in default is used.
# Server configuration
server:
transport: streamable-http # stdio, sse, streamable-http
host: "0.0.0.0"
port: 8180
# Logging configuration
logging:
level: info # debug, info, warn, error
debug_mode: false
# Toolkit configuration
toolkit:
scope: all # all, paas, iaas
# Fine-grained tool selection (optional)
# When enabled_tools is not empty, only the tools in the list are registered (scope still determines which toolkits are loaded).
# Uncomment the tools you want to enable and keep the others commented out.
# enabled_tools:
# ## ── Shared tools (general) ──
# - introduction # Get service introduction information
# - list_workspace # List available workspaces
# - list_domains # List entity domains in a workspace
# Network configuration
network:
max_retry: 1
retry_wait_seconds: 1
read_timeout_ms: 610000
connect_timeout_ms: 30000
# Localization configuration
locale:
timezone: Asia/Shanghai
language: zh-CN
# Endpoint override configuration (optional, for internal network access or custom endpoints)
# endpoints:
# sls:
# cn-hangzhou: "cn-hangzhou-intranet.log.aliyuncs.com"
# cms:
# cn-hangzhou: "cms.cn-hangzhou.aliyuncs.com"Configuration parameters
Parameter | Description | Options |
| Specifies the transport mode. | Valid values are |
| The listen address (for sse/streamable-http mode only). | Default: |
| The listen port (for sse/streamable-http mode only). | Default: |
| Log level. | Valid values: |
| Debug mode, which outputs full requests and responses. | Default: |
| Specifies the tools to enable. | Valid values: |
| Fine-grained tool selection (Optional). When the list is not empty, only the tools specified in it are registered, and the | Defaults to empty, which registers all tools within the |
| Maximum number of retries. | Default: |
| Read timeout in milliseconds. | Default: |
| Connection timeout in milliseconds. | Default: |
| Time zone, used for time parsing. | Default: |
| Language, used for error messages and other output. | Default: |
.env environment variables (credentials and runtime parameters)
Credentials are read from the .env file first, and if not found, from shell environment variables.
Parameter | Description | Required |
| The Alibaba Cloud AccessKey ID. | Yes |
| The Alibaba Cloud AccessKey Secret. | Yes |
| STS Token (temporary credential, optional). | No |
| Default region. | No |
| Default workspace (required for PaaS tools). | No |
Never expose an MCP Server SSE/HTTP endpoint to the public internet without a proper authentication and access control mechanism, especially when it uses your AccessKey. Doing so creates an extremely high security risk.
If you do not provide an AccessKey ID and AccessKey Secret at initialization, the server uses the following default access credentials:
If the
ALIBABA_CLOUD_SECURITY_TOKENenvironment variable is set, the server uses the STS Token as the default credential.If
ALIBABA_CLOUD_SECURITY_TOKENis not set, the server checks ifALIBABA_CLOUD_ACCESS_KEY_IDandALIBABA_CLOUD_ACCESS_KEY_SECRETare both present and not empty. If so, they are used as the default credentials.
CLI commands
Command | Description | Parameters |
| Starts the MCP service. |
|
| Displays version information. | None. |
| Lists all registered MCP tools. | None. |
MCP examples
List projects
After you start the MCP service, ask the large model in natural language to list your projects.
The MCP server then calls the sls_list_projects tool to query data, enabling multi-source data collaboration.

Available CloudMonitor metrics
You can ask the large model a question in natural language, such as 'List the available metrics in the Cloud Monitor namespace'. The model then queries data by calling tools provided by the MCP Server, such as
cms_list_metricsandcms_list_namespaces, and returns a list of available monitoring metrics for the specified namespace.
Querying entity instance data
You can ask the large model to query for specific entity instance data using natural language. The MCP Server then calls tools such as
umodel_get_entities,umodel_get_metrics, andumodel_list_data_setto retrieve detailed instance data for the entity.
AI tool integration
Cursor / Kiro / Cline (streamable-http mode)
In
config.yaml, setserver.transport: streamable-http.Start the service:
./alibabacloud-observability-mcp-server start --config config.yaml.Configure
mcp.jsonin your AI tool:
{
"mcpServers": {
"alibaba_cloud_observability": {
"url": "http://localhost:8180/streamhttp"
}
}
}Cursor / Kiro / Cline (stdio mode)
Configure mcp.json in your AI tool:
{
"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>"
}
}
}
}In stdio mode, if config.yaml does not exist, the server uses the built-in default.References
Supported tools
The list of MCP tools updates frequently. To see the most current list, run the ./alibabacloud-observability-mcp-server tools command.