InfluxDB MCP服务器

InfluxDB MCP服务器是用于InfluxDB集成的官方模型上下文协议服务器,提供工具、资源和提示,用于通过MCP客户端与InfluxDB v3(Core/Enterprise/Cloud Dedicated)交互。

  • by Quorralyne
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 quorralyne/mcp_test_server

使用说明

InfluxDB MCP服务器

用于InfluxDB集成的官方模型上下文协议(MCP)服务器。提供通过MCP客户端与InfluxDB v3(核心/企业/云专用)交互的工具、资源和提示。


先决条件

  • InfluxDB实例:URL和令牌(核心/企业)或集群ID和令牌(云专用)
  • Node.js:v18或更新版本(适用于npm/npx)
  • npm:v9或更新版本(适用于npm/npx)
  • 码头工人:(用于基于Docker的设置)

可用工具

工具名称 描述 可用性
get_help 获取InfluxDB操作的帮助和故障排除指南 所有版本
write_line_protocol 使用InfluxDB线路协议写入数据 所有版本
create_database 创建新数据库(使用云专用配置选项) 所有版本
update_database 更新数据库配置(maxTables、保留期等) 仅限云专用
delete_database 按名称删除数据库(不可逆) 所有版本
execute_query 对数据库运行SQL查询(支持多种格式) 所有版本
get_measurements 列出数据库中的所有测量值(表) 所有版本
get_measurement_schema 获取度量/表的架构(列/类型) 所有版本
create_admin_token 创建新的管理员令牌(完全权限) 仅限核心/企业
list_admin_tokens 列出所有管理员令牌(可选过滤) 仅限核心/企业
create_resource_token 为特定数据库和权限创建资源令牌 仅限核心/企业
list_resource_tokens 列出所有资源令牌(带过滤和排序) 仅限核心/企业
delete_token 按名称删除令牌 仅限核心/企业
regenerate_operator_token 重新生成操作员令牌(危险/不可逆) 仅限核心/企业
cloud_list_database_tokens 列出云专用集群的所有数据库令牌 仅限云专用
cloud_get_database_token 按ID获取特定数据库令牌的详细信息 仅限云专用
cloud_create_database_token 为云专用集群创建新的数据库令牌 仅限云专用
cloud_update_database_token 更新现有数据库令牌 仅限云专用
cloud_delete_database_token 从云专用集群中删除数据库令牌 仅限云专用
list_databases 列出实例中的所有可用数据库 所有版本
health_check 检查InfluxDB连接和运行状况 所有版本

可用资源

资源名称 描述
influx-config 对InfluxDB配置的只读访问
influx-status 实时连接和健康状态
influx-databases 实例中所有数据库的列表

设置和集成指南

1.环境变量

对于核心/企业InfluxDB:

您必须提供:

  • INFLUX_DB_INSTANCE_URL (例如。 http://localhost:8181/)
  • INFLUX_DB_TOKEN
  • INFLUX_DB_PRODUCT_TYPE (core 或 enterprise)

示例 .env:

INFLUX_DB_INSTANCE_URL=http://localhost:8181/
INFLUX_DB_TOKEN=your_influxdb_token_here
INFLUX_DB_PRODUCT_TYPE=core

对于云专用InfluxDB:

您必须提供 INFLUX_DB_PRODUCT_TYPE=cloud-dedicated 和 INFLUX_DB_CLUSTER_ID,再加上以下令牌组合之一:

选项1:仅数据库令牌 (仅限查询/写入操作):

INFLUX_DB_PRODUCT_TYPE=cloud-dedicated
INFLUX_DB_CLUSTER_ID=your_cluster_id_here
INFLUX_DB_TOKEN=your_database_token_here

选项2:仅管理令牌 (仅限数据库管理):

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

选项3:两种代币 (全功能):

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

看 env.cloud-dedicated.example 查看详细的配置选项和注释。


2.与MCP客户端集成

A.本地(npm安装并运行)

  1. 安装依赖项:
    npm install
    
  2. 构建服务器:
    npm run build
    
  3. 配置您的MCP客户端 使用内置的服务器。示例(参见 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"
          }
        }
      }
    }
    

B.本地(npx,无需安装/构建)

  1. 直接使用npx运行 (发布到npm后,还不起作用):
    {
      "mcpServers": {
        "influxdb": {
          "command": "npx",
          "args": ["-y", "@modelcontextprotocol/server-influxdb"],
          "env": {
            "INFLUX_DB_INSTANCE_URL": "http://localhost:8181/",
            "INFLUX_DB_TOKEN": "<YOUR_INFLUXDB_TOKEN>",
            "INFLUX_DB_PRODUCT_TYPE": "core"
          }
        }
      }
    }
    

C.Docker

在运行Docker集成之前,您必须构建Docker镜像:

# Option 1: Use docker compose (recommended)
docker compose build
# Option 2: Use npm script
npm run docker:build

a) 带有远程InfluxDB实例的Docker (参见 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与InfluxDB在同一台机器上运行 (参见 example-docker.mcp.json):

使用 host.docker.internal 作为InfluxDB URL,以便MCP服务器容器可以访问InfluxDA容器:

{
  "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"
      }
    }
  }
}

示例用法

  • 如上所述,使用MCP客户端调用工具、资源或提示。
  • 请参阅 example-*.mcp.json 即用型配置模板的文件:
    • example-local.mcp.json -当地开发设置
    • example-npx.mcp.json -基于NPX的设置
    • example-docker.mcp.json -基于Docker的设置
    • example-cloud-dedicated.mcp.json -云端专用,支持所有变量
  • 请参阅 env.example 和 env.cloud-dedicated.example 环境变量模板的文件。

支持和故障排除

  • 使用 get_help 用于内置帮助和故障排除的工具。
  • 对于连接问题,请检查您的环境变量和InfluxDB实例状态。
  • 有关高级配置,请参阅示例中的注释 .env 以及MCP配置文件。

许可证

麻省理工学院