Skip to main content

EV Chargers MCP Server

Servidor Model Context Protocol (MCP) para gestionar y extraer información de cargadores de vehículos eléctricos.

Descripción

Este proyecto proporciona un servidor MCP que se conecta a cargadores EV, extrae datos de sesiones, warnings y logs del sistema, y los procesa en formatos accesibles (CSV, TXT, JSON).

Características

  • Autenticación segura con soporte para SSL/TLS configurable
  • Extracción de sesiones de carga desde HTML del cargador
  • Extracción de warnings con códigos de estado y fecha
  • Extracción de logs del sistema (syslog) con filtrado por fecha
  • Filtrado temporal por rangos de fechas o últimos N días
  • Procesamiento de HTML con BeautifulSoup
  • Manejo asincrónico con aiohttp

Requisitos

  • Python 3.10 o superior
  • pip (gestor de paquetes de Python)

Instalación

1. Crear el entorno virtual

python -m venv venv

2. Activar el entorno virtual

.\venv\Scripts\Activate.ps1

3. Instalar dependencias

pip install -e .

O instalar las librerías directamente:

pip install fastmcp paramiko aiohttp python-dotenv beautifulsoup4 lxml

Configuración

Variables de Entorno

Crea un archivo .env en la raíz del proyecto con las siguientes variables:

# Configuración del cargador
CHARGER_HOST=192.168.1.100
CHARGER_USERNAME=admin
CHARGER_PASSWORD=password
DEVICE_ID=6W0A19240050

# Configuración SSL
VERIFY_SSL=false
SSL_CERT_PATH=/ruta/al/certificado.pem

Descripción de variables:

Variable Descripción Ejemplo
CHARGER_HOST Dirección IP o hostname del cargador 192.168.1.100
CHARGER_USERNAME Usuario para autenticación admin
CHARGER_PASSWORD Contraseña del usuario password123
DEVICE_ID ID del dispositivo del cargador 6W0A19240050
VERIFY_SSL Habilitar verificación SSL (true/false) false
SSL_CERT_PATH Ruta al certificado SSL (opcional) /path/to/cert.pem

Uso

en librechat

Ejecutar el servidor

python fusionMCP.py

O si instalaste como paquete:

ev-charger-mcp

Herramientas disponibles

El servidor expone las siguientes herramientas MCP:

1. obtener_warnings

Obtiene y procesa los warnings del cargador EV.

Parámetros:

  • days (int, opcional): Últimos N días a incluir (ej: 7, 30)
  • start_date (str, opcional): Fecha de inicio (formato: YYYY-MM-DD)
  • end_date (str, opcional): Fecha de fin (formato: YYYY-MM-DD)

Retorno:

{
  "status": 200,
  "count": 42,
  "filtered_count": 5,
  "data": [
    {
      "Serial Number": "6W0A19240050",
      "Connector": "1",
      "Date": "Thu Nov 27 06:12:19 2025",
      "Code": "W001",
      "State": "Active"
    }
  ]
}

2. obtener_sessions

Obtiene y procesa las sesiones de carga del cargador EV.

Parámetros:

  • days (int, opcional): Últimos N días a incluir
  • start_date (str, opcional): Fecha de inicio (formato: YYYY-MM-DD)
  • end_date (str, opcional): Fecha de fin (formato: YYYY-MM-DD)

Retorno:

{
  "status": 200,
  "count": 156,
  "filtered_count": 0,
  "data": [
    {
      "Serial Number": "6W0A19240050",
      "Connector": "1",
      "Start Date": "Thu Nov 27 06:12:19 2025",
      "End Date": "Thu Nov 27 08:45:30 2025",
      "Energy": "23.5 kWh",
      "User ID": "USER001"
    }
  ]
}

3. obtener_logs

Obtiene y procesa los logs del sistema (syslog) del cargador EV.

Parámetros:

  • days (int, opcional): Últimos N días a incluir
  • start_date (str, opcional): Fecha de inicio (formato: YYYY-MM-DD)
  • end_date (str, opcional): Fecha de fin (formato: YYYY-MM-DD)

Retorno:

{
  "status": 200,
  "count": 1250,
  "filtered_count": 100,
  "data": [
    "Nov 27 06:12:19 charger kernel: System boot",
    "Nov 27 06:15:45 charger daemon: Service started"
  ]
}

Estructura del Proyecto

EVChargers_MCP/
├── fusionMCP.py                 # Servidor MCP principal
├── pyproject.toml               # Configuración del proyecto
├── README.md                    # Este archivo
├── .env                         # Variables de entorno (crear)
├── venv/                        # Entorno virtual de Python
└── scriptsWebScrapping/
    ├── extract_sessions.py      # Extractor de sesiones
    ├── extract_syslog.py        # Extractor de logs
    ├── extract_warnings.py      # Extractor de warnings
    ├── sessions.csv             # Datos de ejemplo
    ├── syslog.txt               # Datos de ejemplo
    ├── warnings.csv             # Datos de ejemplo
    └── __pycache__/

Módulos internos

extract_sessions.py

Extrae datos de sesiones de carga de archivos HTML.

  • Parsea fechas en múltiples formatos
  • Filtra por rango de fechas
  • Convierte a CSV o devuelve en JSON

extract_syslog.py

Extrae logs del sistema desde textarea HTML.

  • Extrae líneas de syslog
  • Filtra por rango de fechas
  • Devuelve líneas procesadas

extract_warnings.py

Extrae warnings del cargador desde tablas HTML.

  • Parsea código de warnings y estado
  • Filtra por rango de fechas
  • Convierte a CSV o devuelve en JSON

Desarrollo

Dependencias de desarrollo

pip install -e ".[dev]"

Esto instala herramientas adicionales:

  • pytest - Framework de testing
  • pytest-asyncio - Soporte para tests asincrónico
  • black - Formateador de código
  • pylint - Linter de Python
  • mypy - Verificador de tipos

Ejecutar tests

pytest

Formatear código

black .

Verificar tipo

mypy fusionMCP.py

Solución de problemas

Error: "Las variables CHARGER_HOST, CHARGER_USERNAME o CHARGER_PASSWORD no están definidas"

Solución: Verifica que el archivo .env exista en la raíz del proyecto y contenga las variables requeridas.

Error: "Falló la autenticación con el cargador"

Solución:

  • Verifica que las credenciales sean correctas
  • Comprueba que el cargador sea accesible desde tu red
  • Si usas SSL, verifica la configuración de VERIFY_SSL y SSL_CERT_PATH

Error: "No se encontró la tabla con id 'sessions_dump'"

Solución: El HTML descargado no tiene el formato esperado. Esto puede deberse a:

  • Versión diferente del firmware del cargador
  • HTML corrupto o incompleto

Logging

Los logs se muestran en la consola con el siguiente formato:

2025-11-28 10:30:45,123 - INFO - Iniciando EV Charger MCP Server
2025-11-28 10:30:46,456 - INFO - Token STOK obtenido: abc123def456

Puedes controlar el nivel de logging modificando en fusionMCP.py:

logging.basicConfig(level=logging.DEBUG)  # Para más detalles

Licencia

MIT

Contribuciones

Las contribuciones son bienvenidas. Por favor, abre un issue o pull request con tus cambios.

Contacto

Para preguntas o problemas, crea un issue en el repositorio.

Metadata

Release files for evchargers-mcp 0.2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for evchargers-mcp 0.2.4
File Size Uploaded
evchargers_mcp-0.2.4.tar.gz 15.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for evchargers-mcp 0.2.4
File Interpreter ABI Platform
evchargers_mcp-0.2.4-py3-none-any.whl Python 3 none any Details

Total release size: 36.7 kB

Release files / evchargers_mcp-0.2.4.tar.gz

Download URL evchargers_mcp-0.2.4.tar.gz
Size 15.6 kB
Tags Source
SHA-256 checksum
How to use checksums
673f38d5910de01df09ad0e68ae9e08214efafe835b26ddcf3c8790afdc724da
BLAKE2b-256 checksum
How to use checksums
814f209043ec3b18860eb4776a9608197457bf6221f476c7e54dffaab005316b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release files / evchargers_mcp-0.2.4-py3-none-any.whl

Download URL evchargers_mcp-0.2.4-py3-none-any.whl
Size 21.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bc92b7954414083c7b2a5ade3f19ab9b2e872f27e54beff86516a9c23d013837
BLAKE2b-256 checksum
How to use checksums
51cacd4fffcea68ff3eb2f2e299d3c96a45a62e52313e0cd63b0b2d3af0f3d2a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.5

Release history Release notifications | RSS feed

This release

0.2.4 This release

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

1 release file

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page