Fledge MCP Server

by Krupalp525
Verified

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Enables building and deploying the Fledge MCP server using Docker containers, supporting deployment to Smithery.ai for enhanced scalability and availability.

  • Supports deployment behind an Nginx reverse proxy for production environments, enhancing security and performance for the Fledge MCP server.

  • Allows generation of React components for Fledge data visualization, enabling the creation of custom UI elements to display sensor data from Fledge instances.

Servidor MCP de Fledge

Este es un servidor de Protocolo de Contexto de Modelo (MCP) que conecta la funcionalidad de Fledge con Cursor AI, lo que permite que la IA interactúe con las instancias de Fledge a través de comandos de lenguaje natural.

Prerrequisitos

  • Fledge instalado localmente o accesible a través de API (predeterminado: http://localhost:8081 )
  • Cursor AI instalado
  • Python 3.8+

Instalación

  1. Clonar este repositorio:
git clone https://github.com/Krupalp525/fledge-mcp.git cd fledge-mcp
  1. Instalar las dependencias:
pip install -r requirements.txt

Ejecución del servidor

  1. Asegúrese de que Fledge se esté ejecutando:
fledge start
  1. Inicie el servidor MCP:
python mcp_server.py

Para una operación segura con autenticación de clave API:

python secure_mcp_server.py
  1. Verifique que esté funcionando accediendo al punto final de salud:
curl http://localhost:8082/health

Debería recibir "Fledge MCP Server se está ejecutando" como respuesta.

Conectando al cursor

  1. En Cursor, vaya a Configuración > Servidores MCP
  2. Agregar un nuevo servidor:
  3. Para el servidor seguro, configure el encabezado "X-API-Key" con el valor del archivo api_key.txt que se genera cuando se inicia el servidor seguro.
  4. Pruébelo: abra Cursor's Composer (Ctrl+I), escriba "Verificar si la API de Fledge es accesible" y la IA debería llamar a la herramienta validate_api_connection .

Herramientas disponibles

Acceso y gestión de datos

  1. get_sensor_data : obtiene datos del sensor de Fledge con filtrado opcional por rango de tiempo y límite
  2. list_sensors : Lista todos los sensores disponibles en Fledge
  3. ingest_test_data : Ingesta datos de prueba en Fledge, con recuento de lotes opcional

Control de servicio

  1. get_service_status : Obtener el estado de todos los servicios de Fledge
  2. start_stop_service : Iniciar o detener un servicio Fledge por tipo
  3. update_config : Actualizar los parámetros de configuración de Fledge

Generación de código frontend

  1. generate_ui_component : Genera componentes React para la visualización de datos de Fledge
  2. fetch_sample_frontend : Obtenga plantillas de interfaz de usuario de muestra para diferentes marcos
  3. suggests_ui_improvements : Obtenga sugerencias impulsadas por IA para mejorar el código de la interfaz de usuario

Transmisión de datos en tiempo real

  1. subscribe_to_sensor : Configurar una suscripción para actualizaciones de datos del sensor
  2. get_latest_reading : Obtener la lectura más reciente de un sensor específico

Depuración y validación

  1. validate_api_connection : Comprueba si la API de Fledge es accesible
  2. simulator_frontend_request : prueba solicitudes de API con diferentes métodos y cargas útiles

Documentación y esquema

  1. get_api_schema : obtener información sobre los puntos finales de la API de Fledge disponibles
  2. list_plugins : Lista de complementos de Fledge disponibles

Funciones avanzadas asistidas por IA

  1. generate_mock_data : Genera datos simulados de sensores realistas para realizar pruebas.

Probando la API

Puede probar el servidor utilizando los scripts de prueba incluidos:

# For standard server python test_mcp.py # For secure server with API key python test_secure_mcp.py

Opciones de seguridad

El servidor seguro (secure_mcp_server.py) agrega autenticación de clave API:

  1. En la primera ejecución, genera una clave API almacenada en api_key.txt
  2. Todas las solicitudes deben incluir esta clave en el encabezado X-API-Key
  3. El punto final de verificación de estado permanece accesible sin autenticación

Solicitudes de API de ejemplo

# Validate API connection curl -X POST -H "Content-Type: application/json" -d '{"name": "validate_api_connection"}' http://localhost:8082/tools # Generate mock data curl -X POST -H "Content-Type: application/json" -d '{"name": "generate_mock_data", "parameters": {"sensor_id": "temp1", "count": 5}}' http://localhost:8082/tools # Generate React chart component curl -X POST -H "Content-Type: application/json" -d '{"name": "generate_ui_component", "parameters": {"component_type": "chart", "sensor_id": "temp1"}}' http://localhost:8082/tools # For secure server, add API key header curl -X POST -H "Content-Type: application/json" -H "X-API-Key: YOUR_API_KEY" -d '{"name": "list_sensors"}' http://localhost:8082/tools

Ampliación del servidor

Para agregar más herramientas:

  1. Agregue la definición de la herramienta a tools.json
  2. Implementar el controlador de herramientas en mcp_server.py y secure_mcp_server.py

Consideraciones de producción

Para la implementación de producción:

  • Utilice HTTPS
  • Implementar detrás de un proxy inverso como Nginx
  • Implementar una autenticación más robusta (JWT, OAuth)
  • Añadir limitación de velocidad
  • Configurar el almacenamiento de datos persistente para las suscripciones

Implementación en Smithery.ai

El servidor Fledge MCP se puede implementar en Smithery.ai para mejorar la escalabilidad y la disponibilidad. Siga estos pasos para la implementación:

  1. Prerrequisitos
    • Docker instalado en su máquina local
    • Una cuenta de Smithery.ai
    • La herramienta CLI de Smithery instalada
  2. Construir e implementar
    # Build the Docker image docker build -t fledge-mcp . # Deploy to Smithery.ai smithery deploy
  3. Configuración El archivo smithery.json contiene la configuración para su implementación:
    • Transporte de WebSocket en el puerto 8082
    • URL de API de Fledge configurable
    • Definiciones y parámetros de herramientas
    • Configuración de tiempo de espera
  4. Variables de entorno Configure las siguientes variables de entorno en su panel de Smithery.ai:
    • FLEDGE_API_URL : Su punto final de la API de Fledge
    • API_KEY : Su clave API segura (si usa el modo seguro)
  5. Verificación Después de la implementación, verifique que su servidor esté funcionando:
    smithery status fledge-mcp
  6. Monitoreo Monitoree su implementación a través del panel de Smithery.ai:
    • Registros en tiempo real
    • Métricas de rendimiento
    • Seguimiento de errores
    • Uso de recursos
  7. Actualización Para actualizar su implementación:
    # Build new image docker build -t fledge-mcp . # Deploy updates smithery deploy --update

Compatibilidad con el protocolo JSON-RPC

El servidor implementa el Protocolo de Contexto de Modelo (MCP) mediante JSON-RPC 2.0 sobre WebSocket. Se admiten los siguientes métodos:

  1. inicializar
    { "jsonrpc": "2.0", "method": "initialize", "params": {}, "id": "1" }
    Respuesta:
    { "jsonrpc": "2.0", "result": { "serverInfo": { "name": "fledge-mcp", "version": "1.0.0", "description": "Fledge Model Context Protocol (MCP) Server", "vendor": "Fledge", "capabilities": { "tools": true, "streaming": true, "authentication": "api_key" } }, "configSchema": { "type": "object", "properties": { "fledge_api_url": { "type": "string", "description": "Fledge API URL", "default": "http://localhost:8081/fledge" } } } }, "id": "1" }
  2. herramientas/lista
    { "jsonrpc": "2.0", "method": "tools/list", "params": {}, "id": "2" }
    Respuesta: Devuelve la lista de herramientas disponibles y sus parámetros.
  3. herramientas/llamada
    { "jsonrpc": "2.0", "method": "tools/call", "params": { "name": "get_sensor_data", "parameters": { "sensor_id": "temp1", "limit": 10 } }, "id": "3" }

Códigos de error

El servidor sigue los códigos de error estándar JSON-RPC 2.0:

  • -32700: Error de análisis
  • -32600: Solicitud no válida
  • -32601: Método no encontrado
  • -32602: Parámetros no válidos
  • -32000: Error del servidor
ID: 4a3t88dbgq