InfluxDB MCP Server
<!-- [](https://github.com/influxdata/influxdb3_mcp_server/actions/workflows/unit.yml) --> <!-- [](https://github.com/influxdata/influxdb3_mcp_server/actions/workflows/lint.yml) -->Model Context Protocol (MCP) server for InfluxDB 3 integration. Provides tools, resources, and prompts for interacting with InfluxDB v3 (Core/Enterprise/Cloud Dedicated/Clustered/Cloud Serverless) via MCP clients.
Prerequisites
- InfluxDB 3 Instance: URL and token (Core/Enterprise/Cloud Serverless) or Cluster ID and tokens (Cloud Dedicated/Clustered)
- Node.js: v20.11 or newer (for npm/npx usage)
- npm: v9 or newer (for npm/npx usage)
- Docker: (for Docker-based setup)
Read-only Agent Workflows
Set INFLUX_MCP_TOOL_PROFILE=readonly when you want an MCP client to explore
and query InfluxDB 3 data without exposing write, admin, token-management, or
host-level tools. In Enterprise deployments that use preview user auth, the
same read-only flow works when the configured bearer credential is a JWT instead
of an apiv3_ token.
Analyst explores an unfamiliar database
An analyst can connect an MCP client such as Claude Desktop, Cursor, Codex, or another agent harness and ask a question like:
Which sensors had the highest average temperature in the last 24 hours?With the read-only profile, the agent can:
- Call
list_databasesto see accessible databases. - Call
list_tablesanddescribe_tableto discover measurements and columns. - Treat uncertain tag and field categories as
unknown. - Build a bounded SQL query with
db,q, and optionalparams. - Call
query_sqlwith structured JSON output. - Return the result, row count, truncation status, warnings, and correlation metadata.
The user gets a grounded answer and a reusable query while the agent explores and queries data without access to mutation or administration tools.
Operator investigates an InfluxQL dashboard query
An operator can troubleshoot an existing InfluxQL dashboard panel and ask:
Why did this panel stop showing data after the deploy?With the read-only profile, the agent can:
- Keep the user's query in InfluxQL and call
query_influxql. - Use
SHOWqueries and schema discovery to verify the measurement and referenced columns. - Sample recent rows with bounded reads to distinguish missing data from a broken query.
- Reject unsafe follow-up attempts, such as
SELECT INTOor destructive statements. - Return
request_id,query_id, andquery_id_sourceso the operator can correlate the MCP result withsystem.queries.idwhen query history is available. - Emit structured logs to stderr for stdio transports so stdout remains reserved for MCP protocol messages.
The user gets a practical diagnosis, such as missing data, renamed schema, a wrong time predicate, or a query failure. The investigation is traceable without logging full query text by default.
Available Tools
| Tool Name | Description | Availability |
|---|---|---|
load_database_context | Load optional custom database context and documentation | All versions |
get_help | Get help and troubleshooting guidance for InfluxDB operations | All versions |
write_line_protocol | Write data using InfluxDB line protocol | All versions |
create_database | Create a new database (with cloud-specific config options) | All versions |
update_database | Update database configuration (retention for all; maxTables/maxColumns for Cloud Dedicated/Clustered) | All versions |
delete_database | Delete a database by name (irreversible) | All versions |
execute_query | Run a SQL query against a database (supports multiple formats) | All versions |
query_sql | Run bounded read-only SQL with structured response metadata | All versions |
query_influxql | Run bounded read-only InfluxQL with structured response metadata | All versions |
get_measurements | List all measurements (tables) in a database | All versions |
get_measurement_schema | Get schema (columns/types) for a measurement/table | All versions |
list_tables | List tables, also called measurements, in a database | All versions |
describe_table | Describe table schema with conservative column categories | All versions |
investigate_database | Run high-level read-only database discovery and sampling | All versions |
create_admin_token | Create a new admin token (full permissions) | Core/Enterprise only |
list_admin_tokens | List all admin tokens (with optional filtering) | Core/Enterprise only |
create_resource_token | Create a resource token for specific DBs and permissions | Core/Enterprise only |
list_resource_tokens | List all resource tokens (with filtering and ordering) | Core/Enterprise only |
delete_token | Delete a token by name | Core/Enterprise only |
regenerate_operator_token | Regenerate the operator token (dangerous/irreversible) | Core/Enterprise only |
cloud_list_database_tokens | List all database tokens for Cloud-Dedicated/Clustered cluster | Cloud Dedicated/Clustered |
cloud_get_database_token | Get details of a specific database token by ID | Cloud Dedicated/Clustered |
cloud_create_database_token | Create a new database token for Cloud-Dedicated/Clustered cluster | Cloud Dedicated/Clustered |
cloud_update_database_token | Update an existing database token | Cloud Dedicated/Clustered |
cloud_delete_database_token | Delete a database token from Cloud-Dedicated/Clustered cluster | Cloud Dedicated/Clustered |
list_databases | List all available databases in the instance | All versions |
health_check | Check InfluxDB connection and health status | All versions |
Available Resources
| Resource Name | Description |
|---|---|
influx-config | Read-only access to InfluxDB configuration |
influx-status | Real-time connection and health status |
influx-databases | List of all databases in the instance |
context-file | Custom user-provided database context and documentation |
Available Prompts
| Prompt Name | Description |
|---|---|
list-databases | Generate a prompt to list all available databases |
check-health | Generate a prompt to check InfluxDB health status |
load-context | Load custom database context and documentation |
Setup & Integration Guide
1. Environment Variables
For Core/Enterprise InfluxDB:
You must provide:
INFLUX_DB_INSTANCE_URL(e.g.http://localhost:8181/)INFLUX_DB_TOKENINFLUX_DB_PRODUCT_TYPE(coreorenterprise)
Example .env:
INFLUX_DB_INSTANCE_URL=http://localhost:8181/
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=coreFor Cloud Serverless InfluxDB:
You must provide:
INFLUX_DB_INSTANCE_URL(e.g.https://us-east-1-1.aws.cloud2.influxdata.com)INFLUX_DB_TOKENINFLUX_DB_PRODUCT_TYPE(cloud-serverless)
Example .env:
INFLUX_DB_INSTANCE_URL=https://us-east-1-1.aws.cloud2.influxdata.com
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=cloud-serverlessFor Cloud Dedicated InfluxDB:
You must provide INFLUX_DB_PRODUCT_TYPE=cloud-dedicated and INFLUX_DB_CLUSTER_ID, plus one of these token combinations:
Option 1: Database Token Only (Query/Write operations only):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_TOKEN=your_database_token_hereOption 2: Management Token Only (Database management only):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_ACCOUNT_ID=your_account_id_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_hereOption 3: Both Tokens (Full functionality):
INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_ACCOUNT_ID=your_account_id_here
INFLUX_DB_TOKEN=your_database_token_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_hereFor Clustered InfluxDB:
You must provide INFLUX_DB_PRODUCT_TYPE=clustered and INFLUX_DB_INSTANCE_URL, plus one of these token combinations:
Option 1: Database Token Only (Query/Write operations only):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_TOKEN=your_database_token_hereOption 2: Management Token Only (Database management only):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_hereOption 3: Both Tokens (Full functionality):
INFLUX_DB_PRODUCT_TYPE=clustered
INFLUX_DB_INSTANCE_URL=https://your_cluster_host.com
INFLUX_DB_TOKEN=your_database_token_here
INFLUX_DB_MANAGEMENT_TOKEN=your_management_token_hereSee corresponding env.<instancetype>.example for examples and detailed info.
Optional MCP tool profile and telemetry
Use INFLUX_MCP_TOOL_PROFILE=readonly to expose only read-only tools. If
unset, the server uses the f
…