InfluxDB MCP サーバー
JWT 認証を介して InfluxDB 1.8 への安全な読み取り専用アクセスを提供するモデル コンテキスト プロトコル (MCP) サーバー。
概要
InfluxDB MCPサーバーは、AIアシスタントが標準化されたインターフェースを介してInfluxDBに保存された時系列データにクエリを実行できるようにします。JWTトークンによる認証により、InfluxDBインスタンスへの読み取り専用アクセスを提供します。
前提条件
- ドッカー
- 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までご連絡ください。