Information
# InfluxDB MCP Server
A Model Context Protocol (MCP) server that provides secure, read-only access to InfluxDB 1.8 via JWT authentication.
## Overview
InfluxDB MCP Server allows AI assistants to query time-series data stored in InfluxDB through a standardized interface. It provides read-only access to your InfluxDB instance with authentication via JWT tokens.
## Prerequisites
- Docker
- InfluxDB 1.8 instance (already running)
- Credentials for your InfluxDB instance
## Installation
1. **Clone the repository**:
\`\`\`bash
git clone https://github.com/m4tyn0/influx_mcp
cd influxdb-mcp-server
\`\`\`
2. **Create a \`.env\` file** with your configuration :
\`\`\`bash
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. **Build and run the Docker container**:
\`\`\`bash
docker build -t influxdb-mcp-server .
docker run -d --env-file .env -p 8000:8000 influxdb-mcp-server
\`\`\`
## JWT Authentication
The server uses JWT tokens for authentication. You need to generate a token to authenticate with the MCP server, here is a simple script to do that:
\`\`\`python
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)
\`\`\`
Save this token for use with your MCP client.
## Using with MCP Clients
1. **Authenticate** with the MCP server using the JWT token:
\`\`\`
Tool: auth
Arguments: \{"token": "your.jwt.token.here"\}
\`\`\`
2. **Query your InfluxDB data**:
\`\`\`
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"
\}
\`\`\`
## Troubleshooting
If you encounter issues:
1. **Connection errors to InfluxDB**:
- Verify the INFLUXDB_HOST is correct and accessible from the Docker container
- Check that your InfluxDB credentials are correct
- Ensure your InfluxDB instance is configured to accept connections from external hosts
2. **Authentication issues**:
- Verify your JWT_SECRET is set correctly
- Ensure the token you're using matches the JWT_SECRET and hasn't expired
- Check that your InfluxDB credentials have read access to the databases
3. **Check logs**:
\`\`\`bash
docker logs
\`\`\`
## Security Notes
- The MCP server only allows read-only access to your InfluxDB instance
- All queries are validated to ensure they begin with SELECT
- JWT authentication protects access to the MCP server
- Consider running the server in a private network for additional security
#### Thank you for working with me. If you have any issues with the code, or want more things built, hit me up: m4tyn0@gmail.com