by influxdata
Enables clients to interact with InfluxDB 3 via MCP, providing tools for querying, schema discovery, data ingestion, and administrative operations across Core, Enterprise, Cloud Serverless, Cloud Dedicated, and Clustered deployments.
Provides a Model Context Protocol (MCP) server that bridges MCP‑compatible agents and InfluxDB 3 instances. The server exposes a rich set of tools, resources, and prompts that let agents list databases, run bounded SQL or InfluxQL queries, write line protocol data, manage databases and tokens, and retrieve health/status information.
npx:{
"mcpServers": {
"influxdb": {
"command": "npx",
"args": ["-y", "@influxdata/influxdb3-mcp-server"],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://localhost:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "core"
}
}
}
}
list_databases, query_sql, write_line_protocol).INFLUX_MCP_TOOL_PROFILE.stderr), configurable to file or disabled.write_line_protocol to push time‑series data from external sources.create_database, update_database, and token‑management tools to spin up isolated test environments.list_admin_tokens and list_resource_tokens help enumerate active credentials across deployments.Q: Do I need to build the project before using it?\nA: No. The npx command downloads the pre‑published package and runs it directly. Building is only required for custom development.
Q: How do I enable a read‑only profile?\nA: Set INFLUX_MCP_TOOL_PROFILE=readonly in the environment before launching the server.
Q: Which tokens are required for Cloud Dedicated deployments?\nA: Either a database token (query/write only), a management token (admin only), or both for full functionality. Provide INFLUX_DB_CLUSTER_ID and optionally INFLUX_DB_ACCOUNT_ID.
Q: Where are tool‑call logs written?\nA: By default to stderr as JSON lines. Change MCP_LOG_BACKEND to file and set MCP_LOG_FILE to redirect to a file.
Q: Can I run the server inside Docker?\nA: Yes. Build the image with docker compose build or npm run docker:build, then run using the Docker example in the README.
Q: Is the server compatible with InfluxDB 3.11?\nA: Fully tested against InfluxDB 3.11.5 Core and Enterprise, including clustered Enterprise configurations.
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.
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.
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:
list_databases to see accessible databases.list_tables and describe_table to discover measurements and
columns.unknown.db, q, and optional params.query_sql with structured JSON output.The user gets a grounded answer and a reusable query while the agent explores and queries data without access to mutation or administration tools.
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:
query_influxql.SHOW queries and schema discovery to verify the measurement and
referenced columns.SELECT INTO or destructive
statements.request_id, query_id, and query_id_source so the operator can
correlate the MCP result with system.queries.id when query history is
available.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.
| 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 named admin token with an optional expiration | 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 | Enterprise only |
list_resource_tokens |
List all resource tokens (with filtering and ordering) | 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 |
| 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 |
| 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 |
You must provide:
INFLUX_DB_INSTANCE_URL (e.g. http://localhost:8181/)INFLUX_DB_TOKENINFLUX_DB_PRODUCT_TYPE (core or enterprise)Example .env:
INFLUX_DB_INSTANCE_URL=http://localhost:8181/
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=core
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-serverless
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_here
Option 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_here
Option 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_here
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_here
Option 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_here
Option 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_here
See corresponding env.<instancetype>.example for examples and detailed info.
Use INFLUX_MCP_TOOL_PROFILE=readonly to expose only read-only tools. If
unset, the server uses the full operator tool profile.
INFLUX_MCP_TOOL_PROFILE=readonly
Tool-call telemetry is enabled by default and writes structured JSON lines to
stderr, which keeps stdout reserved for MCP stdio protocol messages. To
disable telemetry:
MCP_LOG_TOOL_CALLS=false
To write telemetry to a file, configure the file backend:
MCP_LOG_BACKEND=file
MCP_LOG_FILE=/logs/influxdb-mcp.jsonl
The telemetry log includes tool name, request ID, query ID, duration, database,
row count, truncation state, success state, and error code. It does not log API
tokens, request headers, tool arguments, or query text. Sample harness profiles
live in harness-profiles/; for approval settings and repeatable E2E prompts,
see AGENT_E2E_TESTS.md.
npm install
npm run build
example-local.mcp.json):
{
"mcpServers": {
"influxdb": {
"command": "node",
"args": ["/path/to/influx-mcp-standalone/build/index.js"],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://localhost:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "core"
}
}
}
}
{
"mcpServers": {
"influxdb": {
"command": "npx",
"args": ["-y", "@influxdata/influxdb3-mcp-server"],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://localhost:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "core"
}
}
}
}
Before running the Docker integration, you must build the Docker image:
# Option 1: Use docker compose (recommended)
docker compose build
# Option 2: Use npm script
npm run docker:build
a) Docker with remote InfluxDB instance (see example-docker.mcp.json):
{
"mcpServers": {
"influxdb": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"INFLUX_DB_INSTANCE_URL",
"-e",
"INFLUX_DB_TOKEN",
"-e",
"INFLUX_DB_PRODUCT_TYPE",
"mcp/influxdb"
],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://remote-influxdb-host:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "core"
}
}
}
}
b) Docker with InfluxDB running in Docker on the same machine (see example-docker.mcp.json):
Use host.docker.internal as the InfluxDB URL so the MCP server container can reach the InfluxDB container:
{
"mcpServers": {
"influxdb": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--add-host=host.docker.internal:host-gateway",
"-e",
"INFLUX_DB_INSTANCE_URL",
"-e",
"INFLUX_DB_TOKEN",
"-e",
"INFLUX_DB_PRODUCT_TYPE",
"influxdb-mcp-server"
],
"env": {
"INFLUX_DB_INSTANCE_URL": "http://host.docker.internal:8181/",
"INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
"INFLUX_DB_PRODUCT_TYPE": "enterprise"
}
}
}
}
context/database-context.md file or remove it and create your own context file with "context" in the name (.json, .txt, .md) to provide database documentation. Use the load_database_context tool or load-context prompt to access it.example-*.mcp.json files for ready-to-use configuration templates:
example-local.mcp.json - Local development setupexample-npx.mcp.json - NPX-based setupexample-docker.mcp.json - Docker-based setupexample-cloud-dedicated.mcp.json - Cloud Dedicated with all variablesexample-clustered.mcp.json - Clustered with all variablesexample-cloud-serverless.mcp.json - Cloud Serverless configurationenv.example, env.cloud-dedicated.example, env.clustered.example, and env.cloud-serverless.example files for environment variable templates.AGENT_E2E_TESTS.md for MCP harness tips, read-only profile runs, and telemetry correlation checks.The Cloud Serverless test command accepts Claire's INFLUXDB3_CLOUD_* variables
and maps them to the MCP server's runtime variables.
The command sets INFLUX_TEST_ENABLED=true and INFLUX_DB_PRODUCT_TYPE=cloud-serverless.
For local tests with 1Password, store only op:// references in
~/.config/claire/cloud-serverless.env:
INFLUXDB3_CLOUD_URL=op://VAULT/ITEM/hostname
INFLUXDB3_CLOUD_TOKEN=op://VAULT/ITEM/token
INFLUXDB3_CLOUD_BUCKET=op://VAULT/ITEM/bucket
INFLUXDB3_CLOUD_ORG=op://VAULT/ITEM/org
Run the live tests through 1Password so the token exists only in the test process environment:
op run --env-file ~/.config/claire/cloud-serverless.env -- \
npm run test:integration:cloud-serverless
You can instead copy env.cloud-serverless.example to the ignored
.env.cloud-serverless.local file and set the MCP runtime variables there.
Then run npm run test:integration:cloud-serverless directly.
To use another plaintext credentials file, set INFLUX_TEST_ENV_FILE:
INFLUX_TEST_ENV_FILE=/path/to/serverless.env npm run test:integration:cloud-serverless
GitHub Actions runs the same command with the existing URL and token secrets
from the cloud-serverless environment. The workflow selects the
mcp-ci-tests bucket explicitly.
// Set 90-day retention policy on Enterprise instance
await mcp.update_database({
name: "my_database",
retentionPeriod: 7776000000000000, // 90 days in nanoseconds
});
// Update retention, maxTables, and maxColumnsPerTable
await mcp.update_database({
name: "my_database",
retentionPeriod: 7776000000000000, // 90 days
maxTables: 1000,
maxColumnsPerTable: 250,
});
| Duration | Nanoseconds |
|---|---|
| 7 days | 604,800,000,000,000 |
| 30 days | 2,592,000,000,000,000 |
| 90 days | 7,776,000,000,000,000 |
| 180 days | 15,552,000,000,000,000 |
| 1 year | 31,536,000,000,000,000 |
get_help tool for built-in help and troubleshooting..env and MCP config files.write_line_protocol surfaces InfluxDB's own error text, not a generic
message. If InfluxDB rejects a write — a duplicate tag key, an
unauthenticated token, a payload over the size limit — the tool error
includes the specific reason, for example:
Bad request: invalid line protocol - multiple instances of 'region' tag found
A 503 reaching this server is phrased as retryable
(Service temporarily unavailable, retry the write: ...) — safe to retry
the write. Any other status is not.
Verified against InfluxDB 3.11.5 Core and Enterprise, including a
multi-node Enterprise cluster). Core and Enterprise write through
POST /api/v3/write_lp, which 3.11's write-availability changes for the
legacy /api/v2/write endpoint do not affect; only clustered calls
/api/v2/write. Query and schema-discovery tools behave the same whether
the target database is on Parquet (Core, or Enterprise before an upgrade)
or PachaTree (Enterprise 3.11+ by default, or after
--upgrade-pacha-tree) — new system.pt_* tables are excluded from
get_measurements/get_measurement_schema results by the same
table_schema = 'iox' filter that already excludes other system tables.
Core and Enterprise create named admin tokens through
POST /api/v3/configure/token/named_admin.
Named admin tokens accept an optional expiration in seconds.
Only Enterprise supports resource tokens, so the MCP server doesn't advertise
resource-token tools for Core connections.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by googleapis
An MCP server that streamlines database tool development by handling connection pooling, authentication, observability, and secure access, allowing agents to interact with databases via natural language.
by TabularisDB
Provides a cross‑platform desktop workspace for managing, exploring, and querying a wide range of relational and NoSQL databases, with built‑in AI assistance, visual query building, and an extensible plugin system.
by bytebase
Provides a universal gateway that lets MCP‑compatible clients explore and query MySQL, PostgreSQL, SQL Server, MariaDB, and SQLite databases through a single standardized interface.
by designcomputer
Enables secure interaction with MySQL databases via the Model Context Protocol, allowing AI applications to list tables, read contents, and execute queries safely.
by benborla
Provides read‑only access to MySQL databases for large language models, allowing schema inspection and safe execution of SQL queries.
by neo4j-contrib
Enables natural‑language interaction with Neo4j databases, allowing large language models to query, modify, and manage graph data through multiple transport modes.
by mongodb-js
Provides a Model Context Protocol server that enables interaction with MongoDB databases and MongoDB Atlas clusters through a unified API.
by ClickHouse
Enables AI assistants to run read‑only ClickHouse queries, list databases and tables, and execute embedded chDB queries through an MCP interface.
by neondatabase
Interact with Neon Postgres databases using natural language commands through the Model Context Protocol, enabling conversational database creation, migration, and query execution.