InfluxDB MCP服务器
一种模型上下文协议(MCP)服务器,通过JWT身份验证提供对InfluxDB 1.8的安全、只读访问。
概述
InfluxDB MCP Server允许AI助手通过标准化的接口查询存储在InfluxDB中的时间序列数据。它通过JWT令牌进行身份验证,提供对InfluxDB实例的只读访问。
先决条件
- 码头工人
- InfluxDB 1.8实例(已运行)
- InfluxDB实例的凭据
安装
- 克隆存储库:
git clone https://github.com/m4tyn0/influx_mcp
cd influxdb-mcp-server- 创建一个
.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- 构建并运行Docker容器:
docker build -t influxdb-mcp-server .
docker run -d --env-file .env -p 8000:8000 influxdb-mcp-serverJWT身份验证
服务器使用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客户端一起使用
- 验证 MCP服务器使用JWT令牌:
Tool: auth
Arguments: {"token": "your.jwt.token.here"}- 查询您的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"
}故障排除
如果您遇到问题:
- InfluxDB连接错误:
- 验证INFLUXDB_HOST是否正确,是否可以从Docker容器访问 - 检查您的InfluxDB凭据是否正确 - 确保您的InfluxDB实例已配置为接受来自外部主机的连接
- 身份验证问题:
- 验证您的JWT_SECRET设置是否正确 - 确保您使用的令牌与JWT_SECRET匹配并且尚未过期 - 检查您的InfluxDB凭据是否具有对数据库的读取权限
- 检查日志:
docker logs 安全说明
- MCP服务器只允许对InfluxDB实例进行只读访问
- 所有查询都经过验证,以确保它们以SELECT开头
- JWT身份验证保护对MCP服务器的访问
- 考虑在专用网络中运行服务器以提高安全性
