MCP---FastApi
by SERV-DRV
README.md
# API de Inventario con MCP y Chat con IA
Sistema completo de gestión de inventario integrado con inteligencia artificial y el protocolo MCP (Model Context Protocol), ejecutándose en contenedores Docker.
## 📋 Descripción
API REST para gestión de inventario con capacidades de IA mediante Ollama y soporte MCP para integración con clientes como Claude Desktop y VS Code. El sistema permite gestionar empresas y productos, con persistencia en PostgreSQL, y ofrece un chat interactivo con IA que puede usar las herramientas del inventario.
## 🏗️ Estructura de Carpetas
```
Prueba_fastAPI/
├── app/
│ ├── __init__.py
│ ├── main.py # Aplicación principal FastAPI
│ ├── database.py # Configuración de base de datos
│ ├── models.py # Modelos SQLAlchemy
│ ├── crud.py # Operaciones CRUD
│ ├── api/
│ │ ├── __init__.py
│ │ ├── rutas_usuarios.py # Endpoints de usuarios
│ │ ├── rutas_inventario.py # Endpoints de inventario
│ │ ├── rutas_generals.py # Endpoints generales
│ │ └── rutas_chat.py # Endpoint de chat con IA
│ └── schemas/
│ ├── usuario.py # Schemas de usuarios
│ └── inventario.py # Schemas de inventario
├── Dockerfile # Imagen Docker para FastAPI
├── Dockerfile.mcp-inspector # Imagen Docker para MCP Inspector
├── docker-compose.yml # Orquestación de contenedores
├── nginx.conf # Configuración de Nginx
├── requirements.txt # Dependencias Python
└── chat_ia.py # Script original de chat (legacy)
```
## 🛠️ Tecnologías
### Backend
- **FastAPI**: Framework web moderno para Python
- **SQLAlchemy**: ORM para base de datos
- **Pydantic**: Validación de datos
- **Uvicorn**: Servidor ASGI
### Base de Datos
- **PostgreSQL 15**: Base de datos relacional
- **psycopg2-binary**: Driver PostgreSQL para Python
### Inteligencia Artificial
- **Ollama**: Plataforma para ejecutar modelos LLM
- **llama3.2:3b**: Modelo de lenguaje local
- **fastapi-mcp**: Integración MCP con FastAPI
### Infraestructura
- **Docker & Docker Compose**: Contenedores
- **Nginx**: Proxy reverso y balanceador
- **Node.js 22**: Para MCP Inspector
## 🐳 Contenedores Docker
El proyecto utiliza 5 contenedores:
1. **web-api**: Aplicación FastAPI principal
2. **ollama**: Modelo de IA llama3.2:3b
3. **postgres**: Base de datos PostgreSQL
4. **nginx**: Proxy reverso con soporte SSE
5. **mcp-inspector**: Herramienta de desarrollo para MCP (opcional)
## 🚀 Instalación y Uso
### Requisitos Previos
- Docker instalado
- Docker Compose instalado
### Clonar el Proyecto
```bash
git clone <url-del-repositorio>
cd Prueba_fastAPI
```
### Iniciar el Sistema
```bash
# Iniciar todos los contenedores
docker-compose up -d
# Ver logs de todos los servicios
docker-compose logs -f
# Detener todos los servicios
docker-compose down
```
## 📡 Endpoints Disponibles
### API REST
- `POST /usuarios/` - Crear usuario
- `GET /usuarios/` - Listar usuarios
- `PUT /usuarios/{id}` - Actualizar usuario
- `DELETE /usuarios/{id}` - Eliminar usuario
- `POST /inventario/empresas` - Crear empresa
- `GET /inventario/empresas` - Listar empresas
- `POST /inventario/productos` - Crear producto
- `GET /inventario/productos` - Listar productos
### Chat con IA
- `POST /chat/chat` - Chat interactivo con Ollama
### MCP
- `GET /sse` - Endpoint Server-Sent Events para MCP
### Documentación
- `GET /docs` - Documentación interactiva Swagger UI
- `GET /redoc` - Documentación ReDoc
## 🔍 Ver Funcionalidad
### 1. Documentación API
Abre en tu navegador:
```
http://localhost:8000/docs
```
### 2. Chat con IA
Usa el endpoint `/chat/chat` en la documentación Swagger:
```json
{
"mensaje": "Crea una empresa llamada TestEmpresa"
}
```
### 3. Ver Datos en Base de Datos
```bash
docker exec -it postgres_container psql -U postgres -d inventario -c "SELECT * FROM empresas;"
```
### 4. MCP Inspector (Opcional)
Si el servicio mcp-inspector está activo, verifica los logs para obtener el token de acceso:
```bash
docker logs mcp_inspector_container
```
## 🔧 Configuración
### Variables de Entorno
Las variables de entorno se configuran en `docker-compose.yml`:
- `OLLAMA_HOST`: URL del servicio Ollama
- `DATABASE_URL`: URL de conexión PostgreSQL
- `API_URL`: URL interna de la API
### Puertos
- `8000`: Nginx (API principal)
- `11434`: Ollama
- `5432`: PostgreSQL
- `6274-6275`: MCP Inspector (si está activo)
## 📝 Notas Importantes
- El modelo `llama3.2:3b` tarda ~1 minuto en responder por ejecutarse en CPU
- MCP Inspector es opcional y puede eliminarse del docker-compose
- Los datos persisten en volúmenes Docker incluso al reiniciar contenedores
- Nginx está configurado para soportar Server-Sent Events (SSE) para MCP
- Si se desea probar desde docker en MCP inspector se coloca Nginx como ruta ya que maneja e trafico y la comunicacion ([/nignx/sse](http://nginx/sse))
## 🤝 Contribución
Este proyecto es un sistema de demostración para integrar MCP con FastAPI y Ollama.This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues