Moondream
Um modelo de linguagem visual para análise de imagens, incluindo legendagem, VQA e detecção de objetos.
Documentação
Servidor MCP Moondream
Um servidor FastMCP para Moondream, um modelo de linguagem de visão por IA. Este servidor fornece capacidades de análise de imagens, incluindo legendagem, resposta a perguntas visuais, detecção de objetos e apontamento visual através do Model Context Protocol (MCP).
Recursos
- 🖼️ Legendagem de Imagens: Gere legendas curtas, normais ou detalhadas para imagens
- ❓ Resposta a Perguntas Visuais: Faça perguntas em linguagem natural sobre imagens
- 🔍 Detecção de Objetos: Detecte e localize objetos específicos com caixas delimitadoras
- 📍 Apontamento Visual: Obtenha coordenadas precisas de objetos em imagens
- 🔗 Suporte a URL: Processe imagens de arquivos locais e URLs remotas
- ⚡ Processamento em Lote: Analise várias imagens de forma eficiente
- 🚀 Otimização de Dispositivo: Detecção e otimização automáticas para CPU, CUDA e MPS (Apple Silicon)
Instalação
Pré-requisitos
- Python 3.10 ou superior
- PyTorch 2.0+ (com suporte adequado ao dispositivo)
Usando uvx (Recomendado para Claude Desktop)
# Run without installation
uvx moondream-mcp
# Or specify a specific version
uvx moondream-mcp==1.0.2
Instalar a partir do PyPI
pip install moondream-mcp
Instalar a partir do Código Fonte
git clone https://github.com/ColeMurray/moondream-mcp.git
cd moondream-mcp
pip install -e .
Instalação para Desenvolvimento
git clone https://github.com/ColeMurray/moondream-mcp.git
cd moondream-mcp
pip install -e ".[dev]"
Início Rápido
Executando o Servidor
# Using uvx (no installation needed)
uvx moondream-mcp
# Using pip-installed command
moondream-mcp
# Or run directly with Python
python -m moondream_mcp.server
Integração com Claude Desktop
Adicione ao seu arquivo de configuração do Claude Desktop:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Usando uvx (Recomendado)
{
"mcpServers": {
"moondream": {
"command": "uvx",
"args": ["moondream-mcp"],
"env": {
"MOONDREAM_DEVICE": "auto"
}
}
}
}
Usando comando instalado via pip
{
"mcpServers": {
"moondream": {
"command": "moondream-mcp",
"env": {
"MOONDREAM_DEVICE": "auto"
}
}
}
}
Configuração
O servidor pode ser configurado usando variáveis de ambiente:
Configurações do Modelo
MOONDREAM_MODEL_NAME: Nome do modelo (padrão:vikhyatk/moondream2)MOONDREAM_MODEL_REVISION: Revisão do modelo (padrão:2025-01-09)MOONDREAM_TRUST_REMOTE_CODE: Confiar em código remoto (padrão:true)
Configurações do Dispositivo
MOONDREAM_DEVICE: Forçar dispositivo específico (cpu,cuda,mpsouauto)
Processamento de Imagens
MOONDREAM_MAX_IMAGE_SIZE: Dimensões máximas da imagem (padrão:2048x2048)MOONDREAM_MAX_FILE_SIZE_MB: Tamanho máximo do arquivo em MB (padrão:50)
Desempenho
MOONDREAM_TIMEOUT_SECONDS: Tempo limite de processamento (padrão:120)MOONDREAM_MAX_CONCURRENT_REQUESTS: Máximo de solicitações simultâneas (padrão:5)MOONDREAM_ENABLE_STREAMING: Habilitar streaming para legendas (padrão:true)MOONDREAM_MAX_BATCH_SIZE: Tamanho máximo do lote para operações em lote (padrão:10)MOONDREAM_BATCH_CONCURRENCY: Limite de processamento em lote simultâneo (padrão:3)MOONDREAM_ENABLE_BATCH_PROGRESS: Habilitar relatório de progresso para operações em lote (padrão:true)
Rede (para URLs)
MOONDREAM_REQUEST_TIMEOUT_SECONDS: Tempo limite de solicitação HTTP (padrão:30)MOONDREAM_MAX_REDIRECTS: Máximo de redirecionamentos HTTP (padrão:5)MOONDREAM_USER_AGENT: Cabeçalho HTTP User-Agent
Ferramentas Disponíveis
1. caption_image
Gere legendas para imagens.
Parâmetros:
image_path(string): Caminho para arquivo de imagem ou URLlength(string): Comprimento da legenda -"short","normal"ou"detailed"stream(boolean): Se deve transmitir a geração de legendas
Exemplo:
{
"image_path": "https://example.com/image.jpg",
"length": "detailed",
"stream": false
}
2. query_image
Faça perguntas sobre imagens.
Parâmetros:
image_path(string): Caminho para arquivo de imagem ou URLquestion(string): Pergunta a fazer sobre a imagem
Exemplo:
{
"image_path": "/path/to/image.jpg",
"question": "How many people are in this image?"
}
3. detect_objects
Detecte objetos específicos em imagens.
Parâmetros:
image_path(string): Caminho para arquivo de imagem ou URLobject_name(string): Nome do objeto a detectar
Exemplo:
{
"image_path": "https://example.com/photo.jpg",
"object_name": "person"
}
4. point_objects
Obtenha coordenadas de objetos em imagens.
Parâmetros:
image_path(string): Caminho para arquivo de imagem ou URLobject_name(string): Nome do objeto a localizar
Exemplo:
{
"image_path": "/path/to/image.jpg",
"object_name": "car"
}
5. analyze_image
Ferramenta de análise de imagens multiuso.
Parâmetros:
image_path(string): Caminho para arquivo de imagem ou URLoperation(string): Tipo de operação ("caption","query","detect","point")parameters(string): String JSON com parâmetros específicos da operação
Exemplo:
{
"image_path": "https://example.com/image.jpg",
"operation": "query",
"parameters": "{\"question\": \"What is the weather like?\"}"
}
6. batch_analyze_images
Processe várias imagens em lote.
Parâmetros:
image_paths(string): Matriz JSON de caminhos de imagensoperation(string): Operação a ser executada em todas as imagensparameters(string): String JSON com parâmetros específicos da operação
Exemplo:
{
"image_paths": "[\"image1.jpg\", \"image2.jpg\"]",
"operation": "caption",
"parameters": "{\"length\": \"short\"}"
}
Exemplos de Uso
Legendagem Básica de Imagens
# Using the caption_image tool
result = await caption_image(
image_path="https://example.com/sunset.jpg",
length="detailed"
)
Resposta a Perguntas Visuais
# Ask about image content
result = await query_image(
image_path="/path/to/family_photo.jpg",
question="How many children are in this photo?"
)
Detecção de Objetos
# Detect faces in an image
result = await detect_objects(
image_path="https://example.com/group_photo.jpg",
object_name="face"
)
Processamento em Lote
# Process multiple images
result = await batch_analyze_images(
image_paths='["img1.jpg", "img2.jpg", "img3.jpg"]',
operation="caption",
parameters='{"length": "normal"}'
)
Suporte a Dispositivos
O servidor detecta e otimiza automaticamente para o hardware disponível:
Apple Silicon (MPS)
- Desempenho ideal em Macs M1/M2/M3
- Gerenciamento automático de memória
- Aceleração nativa
NVIDIA CUDA
- Aceleração de GPU para placas NVIDIA
- Gerenciamento automático de memória CUDA
- Suporte a precisão mista
Fallback de CPU
- Funciona em qualquer sistema
- Otimizado para processamento multi-core
- Menores requisitos de memória
Tratamento de Erros
O servidor fornece informações detalhadas de erro:
{
"success": false,
"error_message": "Image file not found: /path/to/missing.jpg",
"error_code": "IMAGE_PROCESSING_ERROR",
"processing_time_ms": 15.2
}
Códigos de erro comuns:
MODEL_LOAD_ERROR: Problemas ao carregar o modelo MoondreamIMAGE_PROCESSING_ERROR: Problemas com arquivos de imagem ou URLsINFERENCE_ERROR: Falhas na inferência do modeloINVALID_REQUEST: Parâmetros ou solicitações inválidos
Dicas de Desempenho
- Use tamanhos de imagem adequados: Redimensione imagens grandes antes do processamento
- Processamento em lote: Use
batch_analyze_imagespara várias imagens - Otimização de dispositivo: Deixe o servidor detectar automaticamente o melhor dispositivo
- Solicitações simultâneas: Ajuste
MOONDREAM_MAX_CONCURRENT_REQUESTScom base no seu hardware - Gerenciamento de memória: Monitore o uso de memória, especialmente com imagens grandes
Solução de Problemas
Problemas de Carregamento do Modelo
# Check PyTorch installation
python -c "import torch; print(torch.__version__)"
# Check device availability
python -c "import torch; print(f'CUDA: {torch.cuda.is_available()}, MPS: {torch.backends.mps.is_available()}')"
Problemas de Memória
- Reduza
MOONDREAM_MAX_IMAGE_SIZE - Diminua
MOONDREAM_MAX_CONCURRENT_REQUESTS - Use CPU em vez de GPU para imagens grandes
Problemas de Rede
- Verifique as configurações do firewall para acesso a URLs
- Aumente
MOONDREAM_REQUEST_TIMEOUT_SECONDS - Verifique os certificados SSL para URLs HTTPS
Desenvolvimento
Executando Testes
pytest tests/
Qualidade do Código
# Format code
black src/ tests/
# Sort imports
isort src/ tests/
# Type checking
mypy src/
Contribuindo
- Faça um fork do repositório
- Crie um branch de recurso
- Faça suas alterações
- Adicione testes
- Execute verificações de qualidade
- Envie um pull request
Licença
Este projeto é licenciado sob a Licença MIT. Consulte LICENSE para obter detalhes.
Agradecimentos
- Moondream - O incrível modelo de linguagem de visão
- FastMCP - O framework de servidor MCP
- Model Context Protocol - A especificação do protocolo
Suporte
Nota: Este servidor requer o download do modelo Moondream no primeiro uso, o que pode levar algum tempo dependendo da sua conexão com a internet.