VictoriaMetrics-mcp-server
This MCP server provides an interface for AI assistants to interact with VictoriaMetrics time series database for monitoring and observability data:
Write custom metrics - Insert time series data with metric tags, values, and timestamps
Import Prometheus format data - Ingest metrics in Prometheus exposition format for ecosystem compatibility
Query current values - Execute PromQL queries to retrieve instantaneous metric values at specific points in time
Query time ranges - Run PromQL queries over specified time periods with configurable start, end, and resolution steps for historical analysis
Discover labels - Retrieve all unique label names to explore metric structure
Get label values - Fetch all unique values for specific labels to understand metric dimensions
Integrate with Claude Desktop - Install via Smithery or manual NPX configuration
This server bridges AI assistants and VictoriaMetrics, enabling automated metric analysis, data ingestion, and time-series exploration through natural language interactions.
Enables importing Prometheus exposition format data and executing PromQL queries against the VictoriaMetrics database.
Provides tools for reading and writing time series data to VictoriaMetrics, including capabilities for querying data over specific time ranges, importing Prometheus format data, and retrieving label information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VictoriaMetrics-mcp-serverquery range for http_requests_total over the last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VictoriaMetrics MCP Server
MCP Server for the VictoriaMetrics.
Installing via Smithery
To install VictoriaMetrics Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @yincongcyincong/victoriametrics-mcp-server --client claudeDebug
npx @modelcontextprotocol/inspector -e VM_URL=http://127.0.0.1:8428 node src/index.js
NPX
{
"mcpServers": {
"victoriametrics": {
"command": "npx",
"args": [
"-y",
"@yincongcyincong/victoriametrics-mcp-server"
],
"env": {
"VM_URL": "",
"VM_SELECT_URL": "",
"VM_INSERT_URL": ""
}
}
}
}📊 VictoriaMetrics Tools API Documentation
Related MCP server: ClickHouse MCP Server
1. vm_data_write
Description: Write data to the VictoriaMetrics database.
Input Parameters:
Parameter | Type | Description | Required |
|
| Tags of the metric | ✅ |
|
| Array of metric values | ✅ |
|
| Array of timestamps in Unix seconds | ✅ |
2. vm_prometheus_write
Description: Import Prometheus exposition format data into VictoriaMetrics.
Input Parameters:
Parameter | Type | Description | Required |
|
| Metrics in Prometheus exposition format | ✅ |
3. vm_query_range
Description: Query time series data over a specific time range.
Input Parameters:
Parameter | Type | Description | Required |
|
| PromQL expression | ✅ |
|
| Start timestamp in Unix seconds | ⛔️ |
|
| End timestamp in Unix seconds | ⛔️ |
|
| Query resolution step width (e.g., | ⛔️ |
Only
queryis required; the other fields are optional.
4. vm_query
Description: Query the current value of a time series.
Input Parameters:
Parameter | Type | Description | Required |
|
| PromQL expression to evaluate | ✅ |
|
| Evaluation timestamp in Unix seconds | ⛔️ |
5. vm_labels
Description: Get all unique label names.
Input Parameters: None
6. vm_label_values
Description: Get all unique values for a specific label.
Input Parameters:
Parameter | Type | Description | Required |
|
| Label name to get values for | ✅ |
Available Tools
6 toolsvm_data_writeC
Write data to the VM database
| Name | Required | Description | Default |
|---|---|---|---|
| metric | Yes | tag of metric | |
| values | Yes | Array of metric values | |
| timestamps | Yes | Array of metric timestamps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states 'Write data' implying a mutation operation, but doesn't disclose behavioral traits like required permissions, whether writes are idempotent, rate limits, or error handling. This leaves significant gaps for a write tool with no structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool name, though it could be more informative given the lack of annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a write operation with 3 required parameters, nested objects, no output schema, and no annotations), the description is incomplete. It doesn't cover return values, error cases, or behavioral context, leaving the agent under-informed for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no meaning beyond the schema—it doesn't explain relationships between metric, values, and timestamps, or provide examples. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Write data to the VM database' clearly states the action (write) and target (VM database), but it's vague about what type of data is written. It distinguishes from sibling tools like vm_query (read operations) but doesn't specify that it writes metric data specifically, which the schema reveals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not scenarios, or compare to siblings like vm_prometheus_write (which might be for different data formats or protocols). The agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_labelsB
Get all unique label names
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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 states the tool retrieves data ('Get'), implying a read-only operation, but doesn't mention any behavioral traits such as permissions needed, rate limits, or response format. This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without any structural issues or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete for a tool that likely returns data. It doesn't explain what 'all unique label names' entails (e.g., format, scope, or limitations), leaving the agent without enough context to understand the full tool behavior or output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and the schema description coverage is 100%, so no parameter information is needed. The description appropriately doesn't add unnecessary details, aligning with the lack of inputs, which justifies a baseline score of 4 for this dimension.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and resource ('all unique label names'), making the tool's purpose understandable. However, it doesn't differentiate from sibling tools like 'vm_label_values', which might retrieve label values rather than names, leaving some ambiguity about sibling relationships.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'vm_label_values' or other sibling tools. The description lacks context about use cases, prerequisites, or exclusions, offering minimal help for an AI agent in selecting the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_label_valuesC
Get all unique values for a specific label
| Name | Required | Description | Default |
|---|---|---|---|
| label | Yes | Label name to retrieve values for |
TDQS
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 states a read operation ('Get'), but does not cover aspects like rate limits, authentication requirements, error handling, or the format of returned values. This leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently conveys the core purpose without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., list format, data types) or address behavioral aspects like performance or errors, which are crucial for a tool with no structured output information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'label' parameter documented as 'Label name to retrieve values for'. The description adds no additional meaning beyond this, such as examples or constraints, so it meets the baseline for high schema coverage without compensating further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'all unique values for a specific label', making the purpose evident. However, it does not explicitly differentiate from sibling tools like 'vm_labels' (which might list labels rather than values), leaving some ambiguity in sibling context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'vm_labels' or 'vm_query', nor does it mention prerequisites or exclusions. It lacks explicit usage context, relying solely on the implied need to retrieve label values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_prometheus_writeC
mport Prometheus exposition format data into VictoriaMetrics
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Metrics data in Prometheus exposition format |
TDQS
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 states the tool imports data, implying a write/mutation operation, but fails to describe critical behaviors like error handling, rate limits, idempotency, or what happens on success/failure. This leaves significant gaps for an agent to understand how to invoke it safely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's function without any wasted words. It is front-loaded with the core action and resource, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity as a data import/write operation with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits, error handling, and usage context, which are essential for an agent to operate this tool effectively in a real-world scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the single parameter 'data' fully documented in the schema as 'Metrics data in Prometheus exposition format'. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without compensating with extra details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('import') and the resource ('Prometheus exposition format data into VictoriaMetrics'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling tools like vm_data_write, which prevents a perfect score, but the specificity of 'Prometheus exposition format' provides useful context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like vm_data_write or other sibling tools. It lacks context about prerequisites, such as whether data must be formatted in a specific way or if authentication is required, leaving the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_queryC
Query current value of a time series
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | PromQL expression to evaluate | |
| time | No | Evaluation timestamp in Unix seconds (optional) |
TDQS
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 states the tool queries 'current value' but doesn't explain what 'current' means (e.g., real-time vs. latest data), whether it's read-only or has side effects, error handling, rate limits, or authentication needs. For a query tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with zero waste. It's front-loaded with the core purpose and appropriately sized for a simple query tool. Every word earns its place without redundancy or unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a time-series query tool with no annotations, no output schema, and sibling tools for related operations, the description is incomplete. It doesn't cover return values, error cases, or how it differs from 'vm_query_range'. For a tool that likely returns structured data, more context is needed to use it effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 both parameters ('query' as PromQL expression and 'time' as optional Unix timestamp). The description adds no additional parameter semantics beyond what's in the schema, such as query format examples or time interpretation. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Query current value of a time series' with a specific verb ('Query') and resource ('current value of a time series'). It distinguishes from sibling tools like 'vm_query_range' (range queries) and 'vm_data_write' (write operations), though it doesn't explicitly mention these distinctions in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'vm_query_range' for range queries or 'vm_labels' for metadata queries, nor does it specify use cases, prerequisites, or exclusions. The agent must infer usage from the tool name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vm_query_rangeC
Query time series over a time range
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | PromQL expression | |
| start | No | Start timestamp in Unix seconds | |
| end | No | End timestamp in Unix seconds | |
| step | No | Query resolution step width |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral information. It states it's a query operation (implying read-only) but doesn't disclose rate limits, authentication requirements, error conditions, or what happens with invalid queries. For a time series query tool with 4 parameters, this leaves significant behavioral unknowns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero wasted words. It's appropriately sized for a tool with good schema documentation and gets straight to the core functionality without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a time series query tool with 4 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what the tool returns (time series data format), error handling, performance characteristics, or limitations. The combination of no annotations and no output schema means the description should provide more operational context than it does.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description adds minimal value beyond the schema - it mentions 'time range' which aligns with 'start' and 'end' parameters, but doesn't provide additional context about parameter relationships or usage patterns. 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Query time series over a time range' clearly states the action (query) and resource (time series) with scope (over a time range). It distinguishes from sibling tools like 'vm_data_write' (write operation) and 'vm_labels' (metadata query), but doesn't explicitly differentiate from 'vm_query' which likely has different temporal parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention when to choose this over 'vm_query' (the most similar sibling) or other time series querying approaches. There's no context about appropriate use cases or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: writing data, retrieving metadata about labels, querying current values, and querying over time ranges. The descriptions make it easy to differentiate between tools like vm_query (current value) and vm_query_range (time range).
All tools follow a consistent 'vm_' prefix with snake_case naming, using descriptive verb_noun patterns (e.g., vm_data_write, vm_query_range). There are no deviations in style or convention across the set.
With 6 tools, this is well-scoped for a VictoriaMetrics server, covering core operations like data ingestion, label exploration, and querying without being overwhelming. Each tool earns its place in the workflow.
The toolset covers essential CRUD-like operations for time series data: writing (vm_data_write, vm_prometheus_write), reading (vm_query, vm_query_range), and metadata exploration (vm_labels, vm_label_values). A minor gap might be the lack of explicit deletion or update tools, but agents can work around this given the domain's typical usage patterns.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Coupler.io remote MCP server
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for interacting with Prometheus metrics and data.17MIT
- Apache 2.0
- AlicenseNot gradedqualityBmaintenanceThe implementation of Model Context Protocol (MCP) server for VictoriaMetrics225Apache 2.0
- AlicenseNot gradedqualityDmaintenanceThe implementation of Model Context Protocol (MCP) server for VictoriaLogs.97Apache 2.0
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/yincongcyincong/VictoriaMetrics-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server