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
- Clone o repositório:
git clone <repository-url>
cd sensor-mcp
- Instale as dependências:
uv sync
- 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
- list_available_models() - Visualize modelos base e alvo suportados
- define_ontology(objects_list) - Defina classes de objetos para detectar
- set_base_model(model_name) - Inicialize o modelo de fundação para rotulagem
- set_target_model(model_name) - Inicialize o modelo alvo para treinamento
- fetch_unsplash_images(query, max_images) - Baixe imagens de treinamento
- import_images_from_folder(folder_path) - Importe imagens locais
- label_images() - Rotule imagens automaticamente usando o modelo base
- 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:
-
Defina o que detectar:
Define ontology for "tiger, elephant, zebra" -
Configure os modelos:
Set base model to grounded_sam Set target model to yolov8n.pt -
Obtenha dados de treinamento:
Fetch 50 images from Unsplash for "wildlife animals" -
Crie o conjunto de dados:
Label all images using the base model -
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:
- Crie uma conta em Unsplash Developers
- Crie um novo aplicativo
- 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 Modeloautodistill- Integração com modelo de fundaçãotorchetorchvision- Estrutura de aprendizado profundoultralytics- Implementação YOLOv8
🤝 Contribuindo
- Faça um fork do repositório
- Crie um branch de funcionalidade
- Faça suas alterações
- Adicione testes para novas funcionalidades
- 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