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
- Clonar el repositorio:
git clone <repository-url>
cd sensor-mcp
- Instalar dependencias:
uv sync
- 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
- list_available_models() - Ver modelos base y objetivo compatibles
- define_ontology(objects_list) - Definir clases de objetos a detectar
- set_base_model(model_name) - Inicializar modelo fundacional para etiquetado
- set_target_model(model_name) - Inicializar modelo objetivo para entrenamiento
- fetch_unsplash_images(query, max_images) - Descargar imágenes de entrenamiento
- import_images_from_folder(folder_path) - Importar imágenes locales
- label_images() - Etiquetar imágenes automáticamente usando el modelo base
- 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:
-
Definir qué detectar:
Define ontology for "tiger, elephant, zebra" -
Configurar modelos:
Set base model to grounded_sam Set target model to yolov8n.pt -
Obtener datos de entrenamiento:
Fetch 50 images from Unsplash for "wildlife animals" -
Crear conjunto de datos:
Label all images using the base model -
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:
- Crea una cuenta en Desarrolladores de Unsplash
- Crea una nueva aplicación
- 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 Modeloautodistill- Integración con modelos fundacionalestorchytorchvision- Marco de aprendizaje profundoultralytics- Implementación de YOLOv8
🤝 Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Realiza tus cambios
- Agrega pruebas para la nueva funcionalidad
- 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