InfluxDB 3 MCP Server

Query, write to and administer InfluxDB 3 time-series databases from an MCP client

Official · InfluxData TypeScript Local · stdio DatabasesDevOps and monitoring

49 popularity score ★ 38 ↓ 593/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs INFLUX_DB_PRODUCT_TYPE, INFLUX_DB_INSTANCE_URL, INFLUX_DB_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add influxdb-3 -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> -- npx -y @influxdata/influxdb3-mcp-server
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "npx",
      "args": [
        "-y",
        "@influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "npx",
      "args": [
        "-y",
        "@influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "influxdb-3": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.influxdb-3]
command = "npx"
args = ["-y", "@influxdata/influxdb3-mcp-server"]

[mcp_servers.influxdb-3.env]
INFLUX_DB_PRODUCT_TYPE = "<INFLUX_DB_PRODUCT_TYPE>"
INFLUX_DB_INSTANCE_URL = "<INFLUX_DB_INSTANCE_URL>"
INFLUX_DB_TOKEN = "<INFLUX_DB_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> influxdb-3 npx -- -y @influxdata/influxdb3-mcp-server
Local (container)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs INFLUX_DB_PRODUCT_TYPE, INFLUX_DB_INSTANCE_URL, INFLUX_DB_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add influxdb-3 -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> -- docker run --rm -i -e INFLUX_DB_INSTANCE_URL -e INFLUX_DB_TOKEN -e INFLUX_DB_PRODUCT_TYPE influxdata/influxdb3-mcp-server
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "INFLUX_DB_INSTANCE_URL",
        "-e",
        "INFLUX_DB_TOKEN",
        "-e",
        "INFLUX_DB_PRODUCT_TYPE",
        "influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "INFLUX_DB_INSTANCE_URL",
        "-e",
        "INFLUX_DB_TOKEN",
        "-e",
        "INFLUX_DB_PRODUCT_TYPE",
        "influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "influxdb-3": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "INFLUX_DB_INSTANCE_URL",
        "-e",
        "INFLUX_DB_TOKEN",
        "-e",
        "INFLUX_DB_PRODUCT_TYPE",
        "influxdata/influxdb3-mcp-server"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.influxdb-3]
command = "docker"
args = ["run", "--rm", "-i", "-e", "INFLUX_DB_INSTANCE_URL", "-e", "INFLUX_DB_TOKEN", "-e", "INFLUX_DB_PRODUCT_TYPE", "influxdata/influxdb3-mcp-server"]

[mcp_servers.influxdb-3.env]
INFLUX_DB_PRODUCT_TYPE = "<INFLUX_DB_PRODUCT_TYPE>"
INFLUX_DB_INSTANCE_URL = "<INFLUX_DB_INSTANCE_URL>"
INFLUX_DB_TOKEN = "<INFLUX_DB_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> influxdb-3 docker -- run --rm -i -e INFLUX_DB_INSTANCE_URL -e INFLUX_DB_TOKEN -e INFLUX_DB_PRODUCT_TYPE influxdata/influxdb3-mcp-server
Local (from source)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs INFLUX_DB_PRODUCT_TYPE, INFLUX_DB_INSTANCE_URL, INFLUX_DB_TOKEN. Replace each <NAME> with your value.

FirstTerminal
git clone https://github.com/influxdata/influxdb3_mcp_server.git
cd influxdb3_mcp_server
corepack enable
pnpm install
pnpm run build
Claude CodeTerminal
claude mcp add influxdb-3 -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> -- node '<ABSOLUTE_PATH_TO_CLONE>/build/index.js'
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "influxdb-3": {
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "influxdb-3": {
      "type": "stdio",
      "command": "node",
      "args": [
        "<ABSOLUTE_PATH_TO_CLONE>/build/index.js"
      ],
      "env": {
        "INFLUX_DB_PRODUCT_TYPE": "<INFLUX_DB_PRODUCT_TYPE>",
        "INFLUX_DB_INSTANCE_URL": "<INFLUX_DB_INSTANCE_URL>",
        "INFLUX_DB_TOKEN": "<INFLUX_DB_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.influxdb-3]
command = "node"
args = ["<ABSOLUTE_PATH_TO_CLONE>/build/index.js"]

[mcp_servers.influxdb-3.env]
INFLUX_DB_PRODUCT_TYPE = "<INFLUX_DB_PRODUCT_TYPE>"
INFLUX_DB_INSTANCE_URL = "<INFLUX_DB_INSTANCE_URL>"
INFLUX_DB_TOKEN = "<INFLUX_DB_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e INFLUX_DB_PRODUCT_TYPE=<INFLUX_DB_PRODUCT_TYPE> -e INFLUX_DB_INSTANCE_URL=<INFLUX_DB_INSTANCE_URL> -e INFLUX_DB_TOKEN=<INFLUX_DB_TOKEN> influxdb-3 node -- '<ABSOLUTE_PATH_TO_CLONE>/build/index.js'

Settings 10

INFLUX_DB_PRODUCT_TYPE Required: core, enterprise, cloud-serverless, cloud-dedicated or clustered; the server refuses to start without a valid value.
INFLUX_DB_INSTANCE_URL Required: Address of the instance, e.g. http://localhost:8181/; checked at start for Core, Enterprise and Cloud Serverless, and needed for Clustered.
INFLUX_MCP_TOOL_PROFILE Optional: Set to readonly to expose only the nine read-only tools; any other value keeps all tools. Default operator.
Set together: credentials
INFLUX_DB_TOKEN secret Required: Admin, scoped or database token, sent as a Bearer header; on Dedicated/Clustered INFLUX_DB_MANAGEMENT_TOKEN can stand in. INFLUX_DB_DATABASE_TOKEN is read as a fallback.
INFLUX_DB_MANAGEMENT_TOKEN secret Optional: Management token for the cloud management API. For database and token management on Cloud Dedicated or Clustered.
Set together: cloud-dedicated
INFLUX_DB_CLUSTER_ID Optional: Cluster ID; required for Cloud Dedicated.
INFLUX_DB_ACCOUNT_ID Optional: Account ID; needed with the management token on Cloud Dedicated.
Set together: logging
MCP_LOG_TOOL_CALLS Optional: Set to false to stop the tool-call log; on by default.
MCP_LOG_BACKEND Optional: file writes the log to MCP_LOG_FILE (falls back to stderr if unset); stdout is also accepted but shares the MCP channel. Default stderr.
MCP_LOG_FILE Optional: Path of the log file when MCP_LOG_BACKEND=file.

In a container, a setting goes in with -e NAME=value after docker run.

What it does

InfluxData's own MCP server for InfluxDB 3. You point it at one instance of Core, Enterprise, Cloud Serverless, Cloud Dedicated or Clustered with INFLUX_DB_PRODUCT_TYPE, and it runs on your machine over stdio, from npm or as a container.

An assistant can use it to list databases and tables, look at column schemas, run SQL or InfluxQL, and write points in line protocol. It can also manage databases and tokens. The token tools depend on the product: admin tokens on Core and Enterprise, resource tokens on Enterprise only, and the cloud_* token tools on Cloud Dedicated and Clustered. There are four resources, three prompts, and a load_database_context tool that hands back a context file you write yourself to describe your data.

Version 2.0 changed the shape of query results and health-check output, so a client that parses those needs updating. execute_query is deprecated since 2.0.0 and stays only for older clients. Use query_sql instead, which returns 1000 rows by default and caps maxRows at 5000 (src/tools/categories/query.tools.ts).

All tools are exposed unless INFLUX_MCP_TOOL_PROFILE=readonly is set. That profile keeps nine of them: the context loader, help, health, database and table listing, table description, the two bounded query tools and a discovery pass. The config at v2.0.0 also takes readwrite and operator as values, but only readonly filters anything (src/tools/index.ts). Each tool call is written as a JSON line to stderr unless MCP_LOG_TOOL_CALLS=false. Tokens and query text are left out of that log.

What it needs

RuntimeNode.js 22+Docker
Runs onmacOS, Windows, Linux
InfluxDB 3Your own instanceCore, Enterprise or Clustered you run, or a Cloud Serverless or Cloud Dedicated account, plus a token for it

A reachable InfluxDB 3 instance and a token for it. Cloud Dedicated also needs its cluster ID, and an account ID plus management token for database management. The README asks for Node.js 22.23.4+, 24.22.1+ or 26.12.1+ for npx, because older releases trust root certificates tied to compromised eMudhra/emSign CAs. package.json still allows Node 20.11. Docker is the alternative, and its image ships a current Node 24.

Limits

  • Not covered Works with InfluxDB 3 products only (Core, Enterprise, Cloud Serverless, Cloud Dedicated, Clustered)
  • Not covered On Cloud Dedicated and Clustered a database token alone gives query and write but no management, a management token alone the reverse
  • Size cap query_sql and query_influxql return 1000 rows by default, 5000 at most with maxRows
  • Limit execute_query is deprecated since 2.0.0 and returns JSON only on Cloud Dedicated, Cloud Serverless and Clustered
  • Limit 2.0 changed query result envelopes, health-check output and argument errors, so clients parsing 1.x output must be updated
  • Not covered investigate_database samples the last 24 hours by default (sampleWindowHours, up to 8760). Cardinality estimates are not supported yet
  • Limit The README's npx section still says it will not work until published, and its Docker examples use local image names, not influxdata/influxdb3-mcp-server

Works with InfluxDB 3 products only. On Cloud Dedicated and Clustered, a database token alone gives query and write tools but no database management, and a management token alone gives management but no queries; both are needed for everything. query_sql and query_influxql return 1000 rows by default, 5000 at most; execute_query returns JSON only on Cloud Dedicated, Cloud Serverless and Clustered. The README's npx section still says it will not work until the package is published, which is out of date; its Docker examples use locally built image names (mcp/influxdb, influxdb-mcp-server), while released images are on Docker Hub as influxdata/influxdb3-mcp-server.

Who it suits

Suits teams running InfluxDB 3 who want an assistant to explore schemas, answer questions in SQL or InfluxQL, or work out why a dashboard query broke. Use the readonly profile when it should change nothing. The full profile can also delete databases and manage tokens, so give it a token scoped to what you are willing to let it do. It covers InfluxDB 3 products only, so for InfluxDB 1.x or 2.x look elsewhere.

Tools 27

15 only read, 8 change things, 4 can delete or overwrite. A ? marks an optional parameter.

load_database_context
Return the contents of your own context file describing the databases
get_help
Give guidance and troubleshooting tips for InfluxDB tasks
write_line_protocol changes
Write points to a database in line protocol
create_database changes
Create a database, with cloud-specific options where they apply
update_database changes
Change a database's retention, and table or column caps on Dedicated/Clustered
delete_database deletes
Delete a database by name; cannot be undone
execute_query changes
Deprecated since 2.0.0: run any SQL query, results in a chosen formatdatabase: stringquery: stringformat?: enum
query_sql
Run a read-only, row-capped SQL query with structured metadatadb?: stringq?: stringdatabase?: stringquery?: stringparams?: anyformat?: enummaxRows?: integertimeoutMs?: integer
query_influxql
Run a read-only, row-capped InfluxQL query with structured metadatadb?: stringq?: stringdatabase?: stringquery?: stringparams?: anyformat?: enummaxRows?: integertimeoutMs?: integer
get_measurements
List the measurements (tables) in a databasedatabase: string
get_measurement_schema
Show the columns and types of one measurementdatabase: stringmeasurement: string
list_tables
List the tables in a databasedb: string
describe_table
Describe a table's columns, marking unclear tag/field roles as unknowndb: stringtable: string
investigate_database
Survey a database's tables and schemas, optionally with recent sample rowsdb: stringincludeSamples?: booleanmaxTables?: integersampleWindowHours?: integersampleRowsPerTable?: integer
create_admin_token changes
Create a named admin token, optionally expiring (Core/Enterprise)
list_admin_tokens
List admin tokens with optional filters (Core/Enterprise)
create_resource_token changes
Create a token limited to chosen databases and permissions (Enterprise)
list_resource_tokens
List resource tokens with filtering and ordering (Enterprise)
delete_token deletes
Delete a token by name (Core/Enterprise)
regenerate_operator_token deletes
Replace the operator token; the old one stops working (Core/Enterprise)
cloud_list_database_tokens
List database tokens on a Dedicated or Clustered cluster
cloud_get_database_token
Show one database token by ID
cloud_create_database_token changes
Create a database token on a Dedicated or Clustered cluster
cloud_update_database_token changes
Change an existing database token
cloud_delete_database_token deletes
Delete a database token from the cluster
list_databases
List the databases on the instance
health_check
Check the connection to InfluxDB and report health and ping results

Resources 4

influx://config
The connection settings in use, read-only
influx://status
Current connection and health status
influx://databases
The databases on the instance
influx://context
Your own context file describing the data

Prompts 3

list-databases
Ask for a list of the databases
check-health
Ask for a health check of the instance
load-context
Load your context file into the conversation

Similar servers