Skip to main content
Glama
LeoSole423

Image Analysis MCP Server

by LeoSole423
README.md
# Servidor MCP de Análisis de Imágenes 🖼️🔍

Un servidor MCP (Model Context Protocol) completo para procesamiento avanzado de imágenes. Proporciona herramientas potentes que las IAs (ChatGPT, Claude, etc.) pueden usar para manipular, procesar y analizar imágenes complejas.

## 🚀 Características

### Herramientas para IA
- **Usado POR la IA**: La IA usa estas herramientas para procesar imágenes, no necesitas API keys
- **Procesamiento local**: Todas las operaciones se realizan con PIL, OpenCV y scikit-image
- **Flujo inteligente**: La IA puede combinar herramientas para análisis complejos

### Manipulación de Imágenes
- **Zoom inteligente**: Acercamiento/alejamiento con control de punto focal
- **Recorte preciso**: Extracción de regiones específicas
- **Mejora automática**: Ajuste de brillo, contraste y nitidez

### Procesamiento Avanzado
- **Detección de bordes**: Algoritmo Canny para identificar contornos
- **Segmentación**: División en regiones usando algoritmo SLIC
- **Extracción de texto**: Identificación de áreas con texto potencial
- **Análisis estadístico**: Información detallada sobre propiedades de la imagen

## 📦 Instalación

### Prerrequisitos
- Python 3.8 o superior
- **NO necesitas API keys** - El servidor es usado POR la IA, no llama a APIs externas

### Instalación automática
```bash
# Clonar el repositorio
git clone <tu-repositorio>
cd image_mcp_server

# Opción 1: Instalar con pyproject.toml
pip install -e .

# Opción 2: Instalar con requirements.txt
pip install -r requirements.txt
```

## ⚙️ Configuración

### Variables de Entorno (Opcional)
Crea un archivo `.env` si quieres personalizar la configuración:

```bash
# Server Configuration
SERVER_PORT=8083

# Image Processing Configuration
MAX_IMAGE_SIZE=10485760  # 10MB en bytes  
TEMP_DIR=./temp_images
OUTPUT_DIR=./processed_images
DEBUG=true
```

### Configuración MCP
Actualiza tu archivo de configuración MCP (`config.json`):

```json
{
  "mcpServers": {
    "image-analysis": {
      "command": "python", 
      "args": ["src/main.py"]
    }
  }
}
```

## 🛠️ Uso

### 🔄 Flujo de Trabajo
```
1. USUARIO → envía imagen a ChatGPT/Claude
2. CHATGPT/CLAUDE → usa herramientas MCP para procesar
3. SERVIDOR MCP → procesa con PIL/OpenCV/scikit-image  
4. SERVIDOR MCP → devuelve imagen procesada
5. CHATGPT/CLAUDE → analiza resultado y responde al usuario
```

### Iniciando el Servidor

#### 🖥️ Para uso LOCAL (Claude Desktop, etc.)
```bash
python src/main.py
```

#### 🌐 Para uso con OpenAI ChatGPT (URL)
```bash
python src/http_server.py
```

Esto iniciará un servidor HTTP en puerto 8083 compatible con URLs.

### 🤖 Configuración para OpenAI ChatGPT

1. **Ejecutar servidor HTTP**: `python src/http_server.py`
2. **Configurar URL en OpenAI**: `https://imagemcp.aeye.com.ar/`
3. **Endpoints disponibles**:
   - `GET /` - Información del servidor
   - `GET /tools` - Lista de herramientas
   - `POST /execute/{tool_name}` - Ejecutar herramientas
   - `GET /health` - Estado del servidor

**Ver archivo `openai_setup.md` para instrucciones detalladas.**

### Herramientas Disponibles

#### 1. `crop_image`
Recorta una imagen especificando coordenadas.

```json
{
  "tool": "crop_image", 
  "arguments": {
    "image_data": "base64_encoded_image",
    "x": 100,
    "y": 100,
    "width": 300,
    "height": 200
  }
}
```

#### 2. `zoom_image`
Aplica zoom a una imagen con control de punto focal.

```json
{
  "tool": "zoom_image",
  "arguments": {
    "image_data": "base64_encoded_image",
    "zoom_factor": 2.0,
    "center_x": 250,
    "center_y": 150
  }
}
```

#### 3. `enhance_image`
Mejora la calidad de la imagen.

```json
{
  "tool": "enhance_image",
  "arguments": {
    "image_data": "base64_encoded_image",
    "brightness": 1.2,
    "contrast": 1.3,
    "sharpness": 1.1
  }
}
```

#### 4. `detect_edges`
Detecta bordes usando el algoritmo Canny.

```json
{
  "tool": "detect_edges",
  "arguments": {
    "image_data": "base64_encoded_image",
    "threshold1": 100,
    "threshold2": 200
  }
}
```

#### 5. `segment_image`
Segmenta la imagen en regiones usando SLIC.

```json
{
  "tool": "segment_image",
  "arguments": {
    "image_data": "base64_encoded_image",
    "n_segments": 100
  }
}
```

#### 6. `extract_text_regions`
Identifica regiones que podrían contener texto.

```json
{
  "tool": "extract_text_regions",
  "arguments": {
    "image_data": "base64_encoded_image"
  }
}
```

#### 7. `get_image_info`
Obtiene información detallada sobre la imagen.

```json
{
  "tool": "get_image_info",
  "arguments": {
    "image_data": "base64_encoded_image"
  }
}
```

## 🎯 Casos de Uso

### Análisis Médico
```python
# Flujo que una IA puede usar para análisis médico
Usuario: "Analiza esta radiografía"
IA usa herramientas MCP:
1. get_image_info() - IA verifica calidad de imagen
2. enhance_image() - IA mejora contraste/nitidez  
3. detect_edges() - IA identifica estructuras
4. segment_image() - IA aísla regiones de interés
5. zoom_image() - IA enfoca áreas sospechosas
6. IA analiza todos los resultados con su capacidad visual
```

### Análisis de Documentos
```python
# Procesamiento de documentos complejos
Usuario: "Extrae el texto de este documento escaneado"
IA usa herramientas MCP:
1. get_image_info() - IA verifica resolución
2. enhance_image() - IA mejora legibilidad
3. extract_text_regions() - IA identifica áreas de texto
4. crop_image() - IA extrae secciones específicas
5. IA lee y transcribe el contenido usando su capacidad OCR
```

### Análisis de Imágenes Satelitales
```python
# Análisis geoespacial
Usuario: "Identifica características en esta imagen satelital"
IA usa herramientas MCP:
1. segment_image() - IA identifica diferentes terrenos
2. detect_edges() - IA encuentra características geográficas
3. zoom_image() - IA enfoca áreas de interés
4. IA clasifica y describe las características encontradas
```

## 📁 Estructura del Proyecto

```
image_mcp_server/
├── src/
│   ├── __init__.py
│   ├── main.py              # Servidor MCP local (stdio)
│   └── http_server.py       # Servidor HTTP para OpenAI ChatGPT ✨ NUEVO
├── pyproject.toml          # Configuración del proyecto y dependencias
├── requirements.txt        # Dependencias para pip install
├── config.json             # Configuración MCP local (puerto 8083)
├── openai_setup.md         # Instrucciones para OpenAI ChatGPT ✨ NUEVO
└── README.md               # Documentación
```

## 🧪 Ejemplos de Uso

### Ejemplo básico de herramienta:
```json
{
  "tool": "zoom_image",
  "arguments": {
    "image_data": "base64_encoded_image",
    "zoom_factor": 2.0,
    "center_x": 250,
    "center_y": 150
  }
}
```

## 🐛 Solución de Problemas

### ¿Necesito API keys?
- **NO** - Este servidor es usado POR la IA, no llama a APIs externas
- La IA (ChatGPT/Claude) usa estas herramientas para procesar imágenes localmente

### Error: "Módulo no encontrado"
- Ejecuta `pip install -e .` o `pip install -r requirements.txt` para instalar dependencias
- Verifica que estés usando Python 3.8 o superior

### Imágenes muy grandes
- El servidor limita el tamaño de imagen a 10MB por defecto
- Ajusta `MAX_IMAGE_SIZE` en las variables de entorno si necesitas procesar imágenes más grandes

### Problemas de rendimiento
- Las operaciones de segmentación y detección de bordes pueden ser lentas en imágenes grandes
- Considera redimensionar imágenes muy grandes antes del procesamiento

## 🤝 Contribución

Las contribuciones son bienvenidas. Por favor:

1. Fork el proyecto
2. Crea una rama para tu feature (`git checkout -b feature/AmazingFeature`)
3. Commit tus cambios (`git commit -m 'Add some AmazingFeature'`)
4. Push a la rama (`git push origin feature/AmazingFeature`)
5. Abre un Pull Request

## 📝 Licencia

Este proyecto está bajo la Licencia MIT. Ver el archivo `LICENSE` para más detalles.

## 🎖️ Características Técnicas

- **Asíncrono**: Diseñado para manejar múltiples solicitudes concurrentes
- **Extensible**: Fácil agregar nuevas herramientas de procesamiento
- **Robusto**: Manejo de errores completo y logging detallado
- **Optimizado**: Procesamiento eficiente de imágenes grandes
- **Compatible**: Funciona con cualquier cliente MCP estándar

## 📞 Soporte

Si encuentras problemas o tienes preguntas:

1. Consulta la sección de solución de problemas
2. Revisa la documentación en este README
3. Abre un issue en el repositorio
4. Contacta al equipo de desarrollo

---

¡Disfruta analizando imágenes con IA! 🚀✨