InfluxDB MCP 服务器
模型上下文协议 (MCP) 服务器通过 JWT 身份验证提供对 InfluxDB 1.8 的安全只读访问。
概述
InfluxDB MCP 服务器允许 AI 助手通过标准化接口查询存储在 InfluxDB 中的时间序列数据。它通过 JWT 令牌进行身份验证,提供对 InfluxDB 实例的只读访问权限。
先决条件
- Docker
- InfluxDB 1.8 实例(已运行)
- 您的 InfluxDB 实例的凭证
安装
- 克隆存储库:
git clone https://github.com/m4tyn0/influx_mcp
cd influxdb-mcp-server
- 使用您的配置创建一个
.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-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 客户端一起使用
- 使用 JWT 令牌向 MCP 服务器进行身份验证:
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 凭据是否具有对数据库的读取权限
- 检查日志:
安全说明
- MCP 服务器仅允许对 InfluxDB 实例进行只读访问
- 所有查询都经过验证,以确保它们以 SELECT 开头
- JWT 身份验证保护对 MCP 服务器的访问
- 考虑在专用网络中运行服务器以获得额外的安全性
感谢您与我合作。如果您对代码有任何疑问,或者想要构建更多功能,请联系我: m4tyn0@gmail.com