README.md•3.15 kB
# 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