SensorMCP Server

Automatiza la creación de conjuntos de datos y entrena modelos personalizados de detección de objetos usando lenguaje natural.

Documentación

SensorMCP Server

Un Servidor de Protocolo de Contexto de Modelo (MCP) SensorMCP que permite la creación automatizada de conjuntos de datos y el entrenamiento de modelos personalizados de detección de objetos mediante interacciones en lenguaje natural. Este proyecto integra capacidades de visión por computadora con Modelos de Lenguaje de Gran Escala utilizando el estándar MCP.

🌟 Acerca de

SensorMCP Server combina el poder de los modelos fundacionales (como GroundedSAM) con el entrenamiento de modelos personalizados (YOLOv8) para crear un flujo de trabajo fluido para la detección de objetos. Utilizando el Protocolo de Contexto de Modelo, permite a los LLM:

  • Etiquetar imágenes automáticamente usando modelos fundacionales
  • Crear conjuntos de datos personalizados de detección de objetos
  • Entrenar modelos de detección especializados
  • Descargar imágenes de Unsplash para datos de entrenamiento

[!NOTE] El Protocolo de Contexto de Modelo (MCP) permite una integración fluida entre LLM y herramientas externas, lo que lo hace ideal para flujos de trabajo de visión por computadora impulsados por IA.

✨ Características

  • Integración con Modelos Fundacionales: Utiliza GroundedSAM para el etiquetado automático de imágenes
  • Entrenamiento de Modelos Personalizados: Ajusta modelos YOLOv8 en tus objetos específicos
  • Gestión de Datos de Imágenes: Descarga imágenes de Unsplash o importa imágenes locales
  • Definición de Ontología: Define clases de objetos personalizadas mediante lenguaje natural
  • Protocolo MCP: Integración nativa con flujos de trabajo LLM e interfaces de chat
  • Estructura de Datos Fija: Diseño de directorios organizado para flujos de trabajo reproducibles

🛠️ Instalación

Requisitos previos

  • uv para la gestión de paquetes
  • Python 3.13+ (uv python install 3.13)
  • GPU compatible con CUDA (recomendado para entrenamiento)

Configuración

  1. Clonar el repositorio:
git clone <repository-url>
cd sensor-mcp
  1. Instalar dependencias:
uv sync
  1. Configurar variables de entorno (crear archivo .env):
UNSPLASH_API_KEY=your_unsplash_api_key_here

🚀 Uso

Ejecutar el Servidor MCP

Para integración MCP (recomendado):

uv run src/zoo_mcp.py

Para servidor web independiente:

uv run src/server.py

Configuración MCP

Agrega a la configuración de tu cliente MCP:

{
    "mcpServers": {
        "sensormcp-server": {
            "type": "stdio",
            "command": "uv",
            "args": [
                "--directory",
                "/path/to/sensor-mcp",
                "run",
                "src/zoo_mcp.py"
            ]
        }
    }
}

Herramientas MCP Disponibles

  1. list_available_models() - Ver modelos base y objetivo compatibles
  2. define_ontology(objects_list) - Definir clases de objetos a detectar
  3. set_base_model(model_name) - Inicializar modelo fundacional para etiquetado
  4. set_target_model(model_name) - Inicializar modelo objetivo para entrenamiento
  5. fetch_unsplash_images(query, max_images) - Descargar imágenes de entrenamiento
  6. import_images_from_folder(folder_path) - Importar imágenes locales
  7. label_images() - Etiquetar imágenes automáticamente usando el modelo base
  8. train_model(epochs, device) - Entrenar modelo de detección personalizado

Ejemplo de Flujo de Trabajo

A través de tu interfaz LLM habilitada para MCP:

  1. Definir qué detectar:

    Define ontology for "tiger, elephant, zebra"
    
  2. Configurar modelos:

    Set base model to grounded_sam
    Set target model to yolov8n.pt
    
  3. Obtener datos de entrenamiento:

    Fetch 50 images from Unsplash for "wildlife animals"
    
  4. Crear conjunto de datos:

    Label all images using the base model
    
  5. Entrenar modelo personalizado:

    Train model for 100 epochs on device 0
    

📁 Estructura del Proyecto

sensor-mcp/
├── src/
│   ├── server.py          # Main MCP server implementation
│   ├── zoo_mcp.py         # MCP entry point
│   ├── models.py          # Model management and training
│   ├── image_utils.py     # Image processing and Unsplash API
│   ├── state.py           # Application state management
│   └── data/              # Created automatically
│       ├── raw_images/    # Original/unlabeled images
│       ├── labeled_images/# Auto-labeled datasets  
│       └── models/        # Trained model weights
├── static/                # Web interface assets
└── index.html            # Web interface template

🔧 Modelos Compatibles

Modelos Base (para auto-etiquetado)

  • GroundedSAM: Modelo fundacional para detección y segmentación de objetos

Modelos Objetivo (para entrenamiento)

  • YOLOv8n.pt: Nano - inferencia más rápida
  • YOLOv8s.pt: Pequeño - velocidad/precisión equilibrada
  • YOLOv8m.pt: Mediano - mayor precisión
  • YOLOv8l.pt: Grande - alta precisión
  • YOLOv8x.pt: Extra Grande - máxima precisión

🌐 Integración de API

API de Unsplash

Para usar la funcionalidad de descarga de imágenes:

  1. Crea una cuenta en Desarrolladores de Unsplash
  2. Crea una nueva aplicación
  3. Agrega tu clave de acceso al archivo .env

🛠️ Desarrollo

Ejecutar Pruebas

uv run pytest

Formato de Código

uv run black src/

📋 Requisitos

Consulta pyproject.toml para la lista completa de dependencias. Dependencias clave:

  • mcp[cli] - Protocolo de Contexto de Modelo
  • autodistill - Integración con modelos fundacionales
  • torch y torchvision - Marco de aprendizaje profundo
  • ultralytics - Implementación de YOLOv8

🤝 Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Agrega pruebas para la nueva funcionalidad
  5. Envía una solicitud de extracción

📖 Citación

Si utilizas este código o datos en tu investigación, por favor cita nuestro artículo:

@inproceedings{Guo2025,
  author = {Guo, Yunqi and Zhu, Guanyu and Liu, Kaiwei and Xing, Guoliang},
  title = {A Model Context Protocol Server for Custom Sensor Tool Creation},
  booktitle = {3rd International Workshop on Networked AI Systems (NetAISys '25)},
  year = {2025},
  month = {jun},
  address = {Anaheim, CA, USA},
  publisher = {ACM},
  doi = {10.1145/3711875.3736687},
  isbn = {979-8-4007-1453-5/25/06}
}

📄 Licencia

Este proyecto está licenciado bajo la Licencia MIT.

📧 Contacto

Para preguntas sobre el conjunto de datos del zoológico mencionado en el desarrollo: Correo electrónico: yq@anysign.net