io.github.VictoriaMetrics-Community/mcp-vmanomaly

平台与服务

by victoriametrics-community

MCP Server for vmanomaly - VictoriaMetrics anomaly detection

什么是 io.github.VictoriaMetrics-Community/mcp-vmanomaly

MCP Server for vmanomaly - VictoriaMetrics anomaly detection

README

MCP Server for vmanomaly

Latest Release License Slack X

The implementation of Model Context Protocol (MCP) server for vmanomaly - VictoriaMetrics Anomaly Detection product.

This provides seamless integration with vmanomaly REST API and documentation for AI-assisted anomaly detection, model management, and observability insights.

Features

This MCP server enables AI assistants like Claude to interact with vmanomaly for:

  • Health Monitoring: Check vmanomaly server health and build information
  • Model Management: Discover UI-compatible models and validate univariate or multivariate configurations
  • Data-Driven Recommendations: Profile sampled time series and run shared autotune suggestions for one production-ready model config across many returned series
  • Configuration Generation: Generate complete vmanomaly YAML configurations
  • Alert Rule Generation: Generate vmalert alerting rules based on anomaly score metrics to simplify alerting setup
  • Documentation Search: Full-text search across embedded vmanomaly documentation with fuzzy matching

The MCP server contains embedded up-to-date vmanomaly documentation and is able to search it without online access.

The quality of the MCP Server and its responses depends very much on the capabilities of your client and the quality of the model you are using.

Requirements

  • vmanomaly instance with REST API access:
    • version 1.28.3+ for the core MCP toolset
    • version 1.30.0+ for time-series characteristics and task-based shared autotune
  • Go 1.24 or higher (if building from source)

Installation

Go

bash
go install github.com/VictoriaMetrics/mcp-vmanomaly/cmd/mcp-vmanomaly@latest

Binaries

Download the latest release from Releases page and put it to your PATH.

Example for Linux x86_64 (other architectures and platforms are also available):

bash
latest=$(curl -s https://api.github.com/repos/VictoriaMetrics/mcp-vmanomaly/releases/latest | grep 'tag_name' | cut -d\" -f4)
wget https://github.com/VictoriaMetrics/mcp-vmanomaly/releases/download/$latest/mcp-vmanomaly_Linux_x86_64.tar.gz
tar axvf mcp-vmanomaly_Linux_x86_64.tar.gz

Docker

You can run vmanomaly MCP Server using Docker.

This is the easiest way to get started without needing to install Go or build from source.

bash
docker run -d --name mcp-vmanomaly \
  -e VMANOMALY_ENDPOINT=http://localhost:8490 \
  -e MCP_SERVER_MODE=http \
  -e MCP_LISTEN_ADDR=:8080 \
  -p 8080:8080 \
  ghcr.io/victoriametrics/mcp-vmanomaly

You should replace environment variables with your own parameters.

Note that the MCP_SERVER_MODE=http flag is used to enable Streamable HTTP mode. More details about server modes can be found in the Configuration section.

See available docker images in github registry.

Also see Using Docker instead of binary section for more details about using Docker with MCP server with clients in stdio mode.

Source Code

For building binary from source code you can use the following approach:

  • Clone repo:

    bash
    git clone https://github.com/VictoriaMetrics/mcp-vmanomaly.git
    cd mcp-vmanomaly
    
  • Build binary from cloned source code:

    bash
    make build
    # after that you can find binary mcp-vmanomaly and copy this file to your PATH or run inplace
    
  • Build image from cloned source code:

    bash
    docker build -t mcp-vmanomaly .
    # after that you can use docker image mcp-vmanomaly for running or pushing
    

    For local UI/Copilot testing from the vmanomaly repository, build with a local tag:

    bash
    docker build -t mcp-vmanomaly:local .
    

    Then run the vmanomaly repository helper with:

    bash
    MCP_VMANOMALY_IMAGE=mcp-vmanomaly:local bin/run-mcp-http.sh
    

Configuration

MCP Server for vmanomaly is configured via environment variables:

VariableDescriptionRequiredDefaultAllowed values
VMANOMALY_ENDPOINTvmanomaly server endpoint URL (e.g., http://localhost:8490)Yes--
VMANOMALY_BEARER_TOKENBearer token for authenticating with vmanomaly APINo--
VMANOMALY_HEADERSCustom HTTP headers for requests (comma-separated key=value pairs, e.g., X-Custom=value1,X-Auth=value2)No--
VMANOMALY_REQUEST_TIMEOUTHTTP timeout for calls from MCP to vmanomaly, e.g. 60sNo30s-
MCP_SERVER_MODEServer operation mode. See Modes for details.Nostdiostdio, http, sse
MCP_LISTEN_ADDRAddress for HTTP server to listen onNolocalhost:8080-
MCP_DISABLED_TOOLSComma-separated list of tools to disableNo--
MCP_DISABLE_RESOURCESDisable all resources (documentation search will continue to work)Nofalsefalse, true
MCP_HEARTBEAT_INTERVALHeartbeat interval for streamable-http protocol (keeps connection alive through network infrastructure)No30s-
MCP_LOG_LEVELLog level: debug (verbose), info (default), warn, or errorNoinfo-
MCP_LOG_FILELog file path (empty = stderr)Nostderr-

Modes

MCP Server supports the following modes of operation (transports):

  • stdio - Standard input/output mode, where the server reads commands from standard input and writes responses to standard output. This is the default mode and is suitable for local servers.
  • http - Streamable HTTP. Server will expose the /mcp endpoint for HTTP connections.
  • sse - Server-Sent Events. Server will expose the /sse and /message endpoints for SSE connections.

[!NOTE] The sse transport mode was officialy deprecated from MCP Specification (version 2025-03-26) and was replaced by Streamable HTTP transport (http mode). In future releases its support can be deprecated, use Streamable HTTP transport if your client supports it.

More info about transports you can find in MCP docs:

Configuration examples

bash
# Basic configuration
export VMANOMALY_ENDPOINT="http://localhost:8490"

# With authentication
export VMANOMALY_ENDPOINT="http://localhost:8490"
export VMANOMALY_BEARER_TOKEN="your-token"

# With custom headers (e.g., behind a reverse proxy)
export VMANOMALY_HEADERS="X-Custom-Header=value1,X-Another=value2"

# Server mode
export MCP_SERVER_MODE="http"
export MCP_LISTEN_ADDR="0.0.0.0:8080"

# Logging
export MCP_LOG_LEVEL="debug"
export MCP_LOG_FILE="/tmp/mcp-vmanomaly.log"

Endpoints

In HTTP and SSE modes the MCP server provides the following endpoints:

EndpointDescription
/mcpHTTP endpoint for streaming messages in HTTP mode (for MCP clients that support Streamable HTTP)
/metricsMetrics in Prometheus format for monitoring the MCP server
/health/livenessLiveness check endpoint to ensure the server is running
/health/readinessReadiness check endpoint to ensure the server is ready to accept requests
/sse + /messageEndpoints for messages in SSE mode (for MCP clients that support SSE)

Setup in clients

Cursor

Go to: SettingsCursor SettingsMCPAdd new global MCP server and paste the following configuration into your Cursor ~/.cursor/mcp.json file:

json
{
  "mcpServers": {
    "vmanomaly": {
      "command": "/path/to/mcp-vmanomaly",
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

See Cursor MCP docs for more info.

Claude Desktop

Add this to your Claude Desktop claude_desktop_config.json file (you can find it if open SettingsDeveloperEdit config):

json
{
  "mcpServers": {
    "vmanomaly": {
      "command": "/path/to/mcp-vmanomaly",
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

See Claude Desktop MCP docs for more info.

Claude Code

Run the command:

sh
claude mcp add vmanomaly -- /path/to/mcp-vmanomaly \
  -e VMANOMALY_ENDPOINT=http://localhost:8490 \
  -e VMANOMALY_BEARER_TOKEN=<YOUR_TOKEN> \
  -e VMANOMALY_HEADERS="X-Custom=value1,X-Auth=value2"

See Claude Code MCP docs for more info.

Visual Studio Code

Add this to your VS Code MCP config file:

json
{
  "servers": {
    "vmanomaly": {
      "type": "stdio",
      "command": "/path/to/mcp-vmanomaly",
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

See VS Code MCP docs for more info.

Zed

Add the following to your Zed config file:

json
  "context_servers": {
    "vmanomaly": {
      "command": {
        "path": "/path/to/mcp-vmanomaly",
        "args": [],
        "env": {
          "VMANOMALY_ENDPOINT": "http://localhost:8490",
          "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
          "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
        }
      },
      "settings": {}
    }
  }

See Zed MCP docs for more info.

JetBrains IDEs

  • Open SettingsToolsAI AssistantModel Context Protocol (MCP).
  • Click Add (+)
  • Select As JSON
  • Put the following to the input field:
json
{
  "mcpServers": {
    "vmanomaly": {
      "command": "/path/to/mcp-vmanomaly",
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

Windsurf

Add the following to your Windsurf MCP config file:

json
{
  "mcpServers": {
    "vmanomaly": {
      "command": "/path/to/mcp-vmanomaly",
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

See Windsurf MCP docs for more info.

Using Docker instead of binary

You can run vmanomaly MCP server using Docker instead of local binary.

You should replace run command in configuration examples above in the following way:

json
{
  "mcpServers": {
    "vmanomaly": {
      "command": "docker",
      "args": [
        "run",
        "-i", "--rm",
        "-e", "VMANOMALY_ENDPOINT",
        "-e", "VMANOMALY_BEARER_TOKEN",
        "-e", "VMANOMALY_HEADERS",
        "ghcr.io/victoriametrics/mcp-vmanomaly"
      ],
      "env": {
        "VMANOMALY_ENDPOINT": "http://localhost:8490",
        "VMANOMALY_BEARER_TOKEN": "<YOUR_TOKEN>",
        "VMANOMALY_HEADERS": "X-Custom=value1,X-Auth=value2"
      }
    }
  }
}

Usage

After installing and configuring the MCP server, you can start using it with your favorite MCP client.

You can start dialog with AI assistant from the phrase:

code
Use MCP vmanomaly in the following answers

But it's not required, you can just start asking questions and the assistant will automatically use the tools and documentation to provide you with the best answers.

Toolset

MCP vmanomaly provides tools organized into categories:

Health & Info (4 tools)

ToolDescription
vmanomaly_health_checkCheck vmanomaly server health status
vmanomaly_get_buildinfoGet build information (version, build time, Go version)
vmanomaly_get_server_queriesGet configured server query aliases and expressions
vmanomaly_get_metricsGet vmanomaly server metrics in Prometheus format

Model Configuration (4 tools)

ToolDescription
vmanomaly_list_modelsList models exposed to VMUI and other UI-oriented flows
vmanomaly_get_server_modelsGet configured server models and their query attachments
vmanomaly_get_model_schemaGet JSON schema for a specific model type
vmanomaly_validate_model_configValidate model configuration before using it

Configuration (1 tool)

ToolDescription
vmanomaly_validate_configValidate complete vmanomaly YAML configuration

Documentation (1 tool)

ToolDescription
vmanomaly_search_docsFull-text search across vmanomaly documentation with fuzzy matching

Compatibility (1 tool)

ToolDescription
vmanomaly_check_compatibilityCheck if persisted state is compatible with runtime version

Alerting (1 tool)

ToolDescription
vmanomaly_generate_alert_ruleGenerate VMAlert rule YAML for anomaly score alerting

Analysis & Autotune (4 tools)

ToolDescription
vmanomaly_timeseries_characteristicsProfile sampled query results for trends, seasonalities, spikiness, and gaps
vmanomaly_create_autotune_taskStart tuning one requested model class on sampled series
vmanomaly_get_autotune_taskPoll autotune progress and retrieve a completed recommendation
vmanomaly_cancel_autotune_taskRequest cooperative cancellation of an autotune task

vmanomaly_create_autotune_task accepts optimization_n_trials, optimization_timeout, and advanced optimization_params to bound Optuna work. The MCP tool uses interactive defaults of 32 trials and 8 seconds when no optimization budget is provided, and a conservative anomaly fraction of 0.02 when anomaly_percentage is omitted; the vmanomaly API defaults are larger. Poll vmanomaly_get_autotune_task until status is done, then use the recommendation under result_data. Treat error and canceled as terminal statuses.

The list/schema endpoints intentionally expose only models supported by VMUI. Outside VMUI, documented multivariate aliases such as temporal_envelope_multivariate can still be shared-autotuned and validated as complete model configurations. Do not recommend multivariate models in VMUI.

Dialog example

This example shows data-driven model selection rather than choosing a model from the metric name:

  • You: Detect sustained CPU spikes for avg by (instance) (1 - rate(node_cpu_seconds_total{mode="idle"}[5m])) at a 5m step.

  • Assistant: I profiled the exact query first. The sampled series contain a trend and recurring hour-of-day/day-of-week structure, so temporal_envelope is the best online starting point. If the profile had no meaningful trend or seasonality, I would prefer mad_online for robust data, or zscore_online only for a stable light-tailed distribution.

  • Assistant: I verified the model and schema, then started shared autotune with the same 5m step, anomaly_percentage=0.02, and causal exact=true validation. After sequentially polling the task to completion, I validated the returned model configuration before presenting it.

    yaml
    models:
      cpu_envelope:
        class: temporal_envelope
        queries: [cpu_non_idle]
        schedulers: [cpu_5m]
        seasonalities: [hod_smooth, dow_smooth]
        detection_direction: above_expected
        min_rel_dev_from_expected: [0, 15]
    

    The exact tuned parameters depend on the sampled data; the final model spec is always validated against the running vmanomaly instance.

During this dialog, the assistant used the following tools:

  • vmanomaly_timeseries_characteristics to measure the sampled data profile
  • vmanomaly_list_models and vmanomaly_get_model_schema to verify the UI-compatible model
  • vmanomaly_create_autotune_task and vmanomaly_get_autotune_task to tune shared parameters
  • vmanomaly_validate_model_config to validate the tuned model
  • vmanomaly_validate_config to validate the configuration
  • vmanomaly_create_detection_task to backtest anomaly detection

Monitoring

In HTTP and SSE modes the MCP Server provides metrics in Prometheus format at the /metrics endpoint.

Tracked operations:

  • mcp_vmanomaly_initialize_total - Client connections
  • mcp_vmanomaly_call_tool_total{name,is_error} - Tool calls with success/error tracking
  • mcp_vmanomaly_read_resource_total{uri} - Documentation resource reads
  • mcp_vmanomaly_list_*_total - List operations (tools, resources, prompts)
  • mcp_vmanomaly_error_total{method,error} - Errors by method and type

Example:

bash
# Start in HTTP mode
VMANOMALY_ENDPOINT="http://localhost:8490" MCP_SERVER_MODE=http ./bin/mcp-vmanomaly

# Query metrics
curl http://localhost:8080/metrics

Roadmap

  • Grafana dashboard for MCP server monitoring
  • Add API compatibility matrix to gracefully handle version differences between MCP client and vmanomaly server (API is evolving, features may be unavailable)

Disclaimer

AI services and agents along with MCP servers like this cannot guarantee the accuracy, completeness and reliability of results. You should double check the results obtained with AI.

The quality of the MCP Server and its responses depends very much on the capabilities of your client and the quality of the model you are using.

Contributing

Contributions to the MCP vmanomaly project are welcome!

Please feel free to submit issues, feature requests, or pull requests.

Related Projects

Support

For vmanomaly-specific questions, see the vmanomaly documentation.

For MCP server issues, please open an issue in this repository.

常见问题

io.github.VictoriaMetrics-Community/mcp-vmanomaly 是什么?

MCP Server for vmanomaly - VictoriaMetrics anomaly detection

相关 Skills

Slack动图

by anthropics

Universal
热门

面向Slack的动图制作Skill,内置emoji/消息GIF的尺寸、帧率和色彩约束、校验与优化流程,适合把创意或上传图片快速做成可直接发送的Slack动画。

帮你快速做出适配 Slack 的动图,内置约束规则和校验工具,少踩上传与播放坑,做表情包和演示都更省心。

平台与服务
未扫描165.3k

MCP构建

by anthropics

Universal
热门

聚焦高质量 MCP Server 开发,覆盖协议研究、工具设计、错误处理与传输选型,适合用 FastMCP 或 MCP SDK 对接外部 API、封装服务能力。

想让 LLM 稳定调用外部 API,就用 MCP构建:从 Python 到 Node 都有成熟指引,帮你更快做出高质量 MCP 服务器。

平台与服务
未扫描165.3k

接口测试套件

by alirezarezvani

Universal
热门

扫描 Next.js、Express、FastAPI、Django REST 的 API 路由,自动生成覆盖鉴权、参数校验、错误码、分页、上传与限流场景的 Vitest 或 Pytest 测试套件。

帮你把API与集成测试自动化跑顺,减少回归漏测;能力全面,尤其适合复杂接口场景的QA团队。

平台与服务
未扫描23.5k

相关 MCP Server

Slack 消息

编辑精选

by Anthropic

热门

Slack 是让 AI 助手直接读写你的 Slack 频道和消息的 MCP 服务器。

这个服务器解决了团队协作中需要 AI 实时获取 Slack 信息的痛点,特别适合开发团队让 Claude 帮忙汇总频道讨论或发送通知。不过,它目前只是参考实现,文档有限,不建议在生产环境直接使用——更适合开发者学习 MCP 如何集成第三方服务。

平台与服务
89.1k

by netdata

热门

io.github.netdata/mcp-server 是让 AI 助手实时监控服务器指标和日志的 MCP 服务器。

这个工具解决了运维人员需要手动检查系统状态的痛点,最适合 DevOps 团队让 Claude 自动分析性能数据。不过,它依赖 NetData 的现有部署,如果你没用过这个监控平台,得先花时间配置。

平台与服务
79.9k

by d4vinci

热门

Scrapling MCP Server 是专为现代网页设计的智能爬虫工具,支持绕过 Cloudflare 等反爬机制。

这个工具解决了爬取动态网页和反爬网站时的头疼问题,特别适合需要批量采集电商价格或新闻数据的开发者。不过,它依赖外部浏览器引擎,资源消耗较大,不适合轻量级任务。

平台与服务
71.9k

评论