Apache SkyWalking MCP

An MCP server for integrating AI agents with the SkyWalking observability platform and its ecosystem.

Apache SkyWalking MCP

Sky Walking logo

SkyWalking-MCP: A Model Context Protocol (MCP) server for integrating AI agents with Skywalking OAP and the surrounding ecosystem.

SkyWalking: an APM(application performance monitor) system, especially designed for microservices, cloud native and container-based (Docker, Kubernetes, Mesos) architectures.

Usage

From Source

# Clone the repository
git clone https://github.com/apache/skywalking-mcp.git
cd skywalking-mcp && go mod tidy

# Build the project
make

Command-line Options

Usage:
  swmcp [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  help        Help about any command
  sse         Start SSE server
  stdio       Start stdio server
  streamable  Start Streamable server

Global Flags:
  -h, --help                 help for swmcp
      --log-command          When true, log commands to the log file
      --log-file string      Path to log file
      --log-level string     Logging level (debug, info, warn, error) (default "info")
      --read-only            Restrict the server to read-only operations
      --sw-url string        Specify the OAP URL to connect to (e.g. http://localhost:12800)
      --sw-username string   Username for basic auth to SkyWalking OAP (supports ${ENV_VAR} syntax)
      --sw-password string   Password for basic auth to SkyWalking OAP (supports ${ENV_VAR} syntax)
      --sw-insecure          Skip TLS certificate verification for OAP connections (use only in development)
  -v, --version              version for swmcp

SSE-specific Flags:
      --sse-address string     Host and port for the SSE server (default "localhost:8000")
      --base-path string       Base path for the SSE server
      --allowed-origins string Comma-separated list of allowed CORS origins. Empty reflects any origin (open CORS). Use * to send the wildcard header.

Streamable-specific Flags:
      --address string         Host and port for the Streamable HTTP server (default "localhost:8000")
      --endpoint-path string   Endpoint path for the Streamable HTTP server (default "/mcp")
      --allowed-origins string Comma-separated list of allowed CORS origins. Empty reflects any origin (open CORS). Use * to send the wildcard header.

Use "swmcp [command] --help" for more information about a command.

You could start the MCP server with the following command:

# use stdio server
bin/swmcp stdio --sw-url http://localhost:12800

# with basic auth (raw password)
bin/swmcp stdio --sw-url http://localhost:12800 --sw-username admin --sw-password admin

# with basic auth (password from environment variable)
bin/swmcp stdio --sw-url http://localhost:12800 --sw-username admin --sw-password '${SW_PASSWORD}'

# skip TLS verification (development only, e.g. self-signed certs)
bin/swmcp stdio --sw-url https://localhost:12800 --sw-insecure

# or use SSE server
bin/swmcp sse --sse-address localhost:8000 --base-path /mcp --sw-url http://localhost:12800

# restrict CORS to specific origins (SSE and streamable transports)
bin/swmcp streamable --sw-url http://localhost:12800 --allowed-origins "http://localhost:3000,https://app.example.com"

Transport URL behavior:

  • stdio, sse, and streamable all use the configured --sw-url value (or the default http://localhost:12800/graphql).
  • sse and streamable ignore request-level URL override headers.

Usage with Cursor, Copilot, Claude Code

{
  "mcpServers": {
    "skywalking": {
      "command": "swmcp stdio",
      "args": [
        "--sw-url", "http://localhost:12800",
        "--sw-username", "admin",
        "--sw-password", "${SW_PASSWORD}"
      ]
    }
  }
}

If using Docker:

make build-image builds a local linux/amd64 image by default. For multi-platform publishing, use make docker-push, which builds and pushes linux/amd64,linux/arm64 images via Docker Buildx.

Common variants:

# Build a local image and load it into your Docker daemon
make build-image

# Build and push a multi-platform image to the default registry
make docker-push VERSION=0.1.0

# Push to a custom registry/repository
make docker-push IMAGE=ghcr.io/your-org/skywalking-mcp VERSION=0.1.0

# Build for a custom platform set
make docker-build PLATFORMS=linux/arm64 OUTPUT=--load

Then configure the MCP server like this:

{
  "mcpServers": {
    "skywalking": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
		"skywalking-mcp:latest",
		"--sw-url",
		"http://localhost:12800"
      ]
    }
  }
}

Available Tools

SkyWalking MCP provides the following tools to query and analyze SkyWalking OAP data:

CategoryTool NameDescription
Tracequery_tracesQuery traces with multi-condition filtering (service, endpoint, state, tags, and time range via start/end/step). Supports full, summary, and errors_only views with performance insights.
Logquery_logsQuery logs with filters for service, instance, endpoint, trace ID, tags, and time range. Supports cold storage and pagination.
MQEexecute_mqe_expressionExecute MQE (Metrics Query Expression) to query and calculate metrics data. Supports calculations, aggregations, TopN, trend analysis, and multiple result types.
MQElist_mqe_metricsList available metrics for MQE queries. Filter by regex pattern; returns metric name, type, and catalog.
MQEget_mqe_metric_typeGet type information (REGULAR_VALUE, LABELED_VALUE, SAMPLED_RECORD) for a specific metric to help build correct MQE expressions.
Metadatalist_layersList all layers registered in SkyWalking OAP (e.g. GENERAL, MESH, K8S).
Metadatalist_servicesList all services registered in SkyWalking OAP under a specific layer.
Metadatalist_instancesList all instances of a service (e.g. pods or JVM processes).
Metadatalist_endpointsList endpoints of a service with optional keyword filtering.
Metadatalist_processesList processes of a service instance.
Eventquery_eventsQuery events (deployments, restarts, scaling) with filters for service, instance, endpoint, type, and layer.
Alarmquery_alarmsQuery alarms triggered by metric threshold breaches. Filter by scope, keyword, and tags.
Topologyquery_services_topologyQuery global or scoped service topology. Optionally filter by specific service IDs or layer.
Topologyquery_instances_topologyQuery service instance topology between a client service and a server service.
Topologyquery_endpoints_topologyQuery endpoint dependency topology for a given endpoint.
Topologyquery_processes_topologyQuery process topology for a given service instance.

Available Prompts

SkyWalking MCP provides the following prompts for guided analysis workflows:

CategoryPrompt NameDescriptionArguments
Performanceanalyze-performanceAnalyze service performance using metrics toolsservice_name (required), start (optional), end (optional)
Performancecompare-servicesCompare performance metrics between multiple servicesservices (required), metrics (optional), start (optional), end (optional)
Performancetop-servicesFind top N services ranked by a given metricmetric_name (required), top_n (optional), order (optional)
Traceinvestigate-tracesInvestigate traces for errors and performance issuesservice_id (optional), trace_state (optional), start (optional), end (optional)
Tracetrace-deep-diveDeep dive analysis of a specific tracetrace_id (required), view (optional)
Loganalyze-logsAnalyze service logs for errors and patternsservice_id (optional), log_level (optional), start (optional), end (optional)
Topologyexplore-service-topologyExplore services, instances, endpoints, and processes within a layer and time rangelayer (required), start (required), end (optional)
MQEbuild-mqe-queryHelp build MQE expressions for complex metric queriesquery_type (required), metrics (required), conditions (optional)
MQEexplore-metricsExplore available metrics and their typespattern (optional), show_examples (optional)
Utilitygenerate_durationConvert a natural-language time range into a {start, end} duration object for use with other toolstime_range (required)

Contact Us

License

Apache 2.0 License.

Serveurs connexes

NotebookLM Web Importer

Importez des pages web et des vidéos YouTube dans NotebookLM en un clic. Utilisé par plus de 200 000 utilisateurs.

Installer l'extension Chrome