SensorMCP Server

Automatize a criação de conjuntos de dados e treine modelos personalizados de detecção de objetos usando linguagem natural.

Documentação

SensorMCP Server

Um Servidor de Protocolo de Contexto de Modelo (MCP) SensorMCP que permite a criação automatizada de conjuntos de dados e treinamento de modelos personalizados de detecção de objetos por meio de interações em linguagem natural. Este projeto integra capacidades de visão computacional com Modelos de Linguagem de Grande Escala usando o padrão MCP.

🌟 Sobre

O SensorMCP Server combina o poder de modelos de fundação (como GroundedSAM) com treinamento de modelos personalizados (YOLOv8) para criar um fluxo de trabalho contínuo para detecção de objetos. Usando o Protocolo de Contexto de Modelo, ele permite que LLMs:

  • Rotulem imagens automaticamente usando modelos de fundação
  • Criem conjuntos de dados personalizados de detecção de objetos
  • Treinem modelos de detecção especializados
  • Baixem imagens do Unsplash para dados de treinamento

[!NOTE] O Protocolo de Contexto de Modelo (MCP) permite integração contínua entre LLMs e ferramentas externas, tornando isso ideal para fluxos de trabalho de visão computacional impulsionados por IA.

✨ Recursos

  • Integração com Modelos de Fundação: Usa GroundedSAM para rotulagem automática de imagens
  • Treinamento de Modelos Personalizados: Ajuste fino de modelos YOLOv8 em seus objetos específicos
  • Gerenciamento de Dados de Imagem: Baixe imagens do Unsplash ou importe imagens locais
  • Definição de Ontologia: Defina classes de objetos personalizadas por meio de linguagem natural
  • Protocolo MCP: Integração nativa com fluxos de trabalho de LLM e interfaces de chat
  • Estrutura de Dados Fixa: Layout de diretórios organizado para fluxos de trabalho reproduzíveis

🛠️ Instalação

Pré-requisitos

  • uv para gerenciamento de pacotes
  • Python 3.13+ (uv python install 3.13)
  • GPU compatível com CUDA (recomendado para treinamento)

Configuração

  1. Clone o repositório:
git clone <repository-url>
cd sensor-mcp
  1. Instale as dependências:
uv sync
  1. Configure as variáveis de ambiente (crie o arquivo .env):
UNSPLASH_API_KEY=your_unsplash_api_key_here

🚀 Uso

Executando o Servidor MCP

Para integração MCP (recomendado):

uv run src/zoo_mcp.py

Para servidor web autônomo:

uv run src/server.py

Configuração MCP

Adicione à configuração do seu cliente MCP:

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

Ferramentas MCP Disponíveis

  1. list_available_models() - Visualize modelos base e alvo suportados
  2. define_ontology(objects_list) - Defina classes de objetos para detectar
  3. set_base_model(model_name) - Inicialize o modelo de fundação para rotulagem
  4. set_target_model(model_name) - Inicialize o modelo alvo para treinamento
  5. fetch_unsplash_images(query, max_images) - Baixe imagens de treinamento
  6. import_images_from_folder(folder_path) - Importe imagens locais
  7. label_images() - Rotule imagens automaticamente usando o modelo base
  8. train_model(epochs, device) - Treine o modelo de detecção personalizado

Exemplo de Fluxo de Trabalho

Através da sua interface LLM habilitada para MCP:

  1. Defina o que detectar:

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

    Set base model to grounded_sam
    Set target model to yolov8n.pt
    
  3. Obtenha dados de treinamento:

    Fetch 50 images from Unsplash for "wildlife animals"
    
  4. Crie o conjunto de dados:

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

    Train model for 100 epochs on device 0
    

📁 Estrutura do Projeto

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 Suportados

Modelos Base (para rotulagem automática)

  • GroundedSAM: Modelo de fundação para detecção e segmentação de objetos

Modelos Alvo (para treinamento)

  • YOLOv8n.pt: Nano - inferência mais rápida
  • YOLOv8s.pt: Pequeno - velocidade/precisão equilibradas
  • YOLOv8m.pt: Médio - maior precisão
  • YOLOv8l.pt: Grande - alta precisão
  • YOLOv8x.pt: Extra Grande - precisão mais alta

🌐 Integração de API

API do Unsplash

Para usar a funcionalidade de download de imagens:

  1. Crie uma conta em Unsplash Developers
  2. Crie um novo aplicativo
  3. Adicione sua chave de acesso ao arquivo .env

🛠️ Desenvolvimento

Executando Testes

uv run pytest

Formatação de Código

uv run black src/

📋 Requisitos

Consulte pyproject.toml para a lista completa de dependências. Dependências principais:

  • mcp[cli] - Protocolo de Contexto de Modelo
  • autodistill - Integração com modelo de fundação
  • torch e torchvision - Estrutura de aprendizado profundo
  • ultralytics - Implementação YOLOv8

🤝 Contribuindo

  1. Faça um fork do repositório
  2. Crie um branch de funcionalidade
  3. Faça suas alterações
  4. Adicione testes para novas funcionalidades
  5. Envie um pull request

📖 Citação

Se você usar este código ou dados em sua pesquisa, cite nosso artigo:

@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}
}

📄 Licença

Este projeto está licenciado sob a Licença MIT.

📧 Contato

Para perguntas sobre o conjunto de dados do zoológico mencionado no desenvolvimento: E-mail: yq@anysign.net