时序数据库查询服务

InfluxDB MCP Server 是一个提供安全、只读访问 InfluxDB 1.8 的服务器,通过 JWT 认证实现标准化查询接口,适用于AI助手查询时序数据。

  • by m4tyn0
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 m4tyn0/influx_mcp

使用说明

InfluxDB MCP服务器

一种模型上下文协议(MCP)服务器,通过JWT身份验证提供对InfluxDB 1.8的安全、只读访问。

概述

InfluxDB MCP Server允许AI助手通过标准化的接口查询存储在InfluxDB中的时间序列数据。它通过JWT令牌进行身份验证,提供对InfluxDB实例的只读访问。

先决条件

  • 码头工人
  • InfluxDB 1.8实例(已运行)
  • InfluxDB实例的凭据

安装

  1. 克隆存储库:

    git clone https://github.com/m4tyn0/influx_mcp
    cd influxdb-mcp-server
    
  2. 创建一个 .env 文件 根据您的配置:

    cp env.example .env
    
    INFLUXDB_HOST=
    INFLUXDB_PORT=8086
    INFLUXDB_USERNAME=
    INFLUXDB_PASSWORD=
    INFLUXDB_SSL=false
    INFLUXDB_VERIFY_SSL=true
    INFLUXDB_TIMEOUT=10
    JWT_SECRET=
    JWT_ALGORITHM=HS256
    
  3. 构建并运行Docker容器:

    docker build -t influxdb-mcp-server .
    docker run -d --env-file .env -p 8000:8000 influxdb-mcp-server
    

JWT身份验证

服务器使用JWT令牌进行身份验证。您需要生成一个令牌来向MCP服务器进行身份验证,以下是一个简单的脚本:

import jwt
import datetime

# Create a token
payload = {
    "sub": "username",  # Replace with the username you want to identify with
    "iat": datetime.datetime.utcnow(),
    "exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, "your-jwt-secret", algorithm="HS256")
print(token)

保存此令牌以供MCP客户端使用。

与MCP客户端一起使用

  1. 验证 MCP服务器使用JWT令牌:

    Tool: auth
    Arguments: {"token": "your.jwt.token.here"}
    
  2. 查询您的InfluxDB数据:

    Tool: list_databases
    Arguments: {}
    
    Tool: list_measurements
    Arguments: {"database": "your_database_name"}
    
    Tool: query
    Arguments: {
      "database": "your_database_name",
      "query": "SELECT * FROM measurement_name LIMIT 10"
    }
    

故障排除

如果您遇到问题:

  1. InfluxDB连接错误:

    • 验证INFLUXDB_HOST是否正确,是否可以从Docker容器访问
    • 检查您的InfluxDB凭据是否正确
    • 确保您的InfluxDB实例已配置为接受来自外部主机的连接
  2. 身份验证问题:

    • 验证您的JWT_SECRET设置是否正确
    • 确保您使用的令牌与JWT_SECRET匹配并且尚未过期
    • 检查您的InfluxDB凭据是否具有对数据库的读取权限
  3. 检查日志:

    docker logs 
    

安全说明

  • MCP服务器只允许对InfluxDB实例进行只读访问
  • 所有查询都经过验证,以确保它们以SELECT开头
  • JWT身份验证保护对MCP服务器的访问
  • 考虑在专用网络中运行服务器以提高安全性

感谢您与我合作。如果您对代码有任何疑问,或希望构建更多内容,请联系我:m4tyn0@gmail.com