Skip to main content
Glama
DaniMH03

OHIP MCP Server

by DaniMH03
README.md
# OHIP MCP Server

Un servidor MCP (Model Context Protocol) en Python que actúa como **Gateway Universal** para la plataforma Oracle Hospitality Interface Platform (OHIP). Permite a asistentes de IA ejecutar cualquier petición contra la API de OHIP de forma segura y autenticada.

## 🚀 Características

- **Herramienta Universal (`call_ohip_api`)**: Una única herramienta flexible capaz de ejecutar cualquier endpoint de OHIP (reservas, inventario, housekeeping, etc.).
- **Autenticación Automática**: Gestión transparente de tokens OAuth 2.0 (obtención, almacenamiento en memoria y renovación automática antes de expirar).
- **Seguridad**: Manejo seguro de credenciales mediante variables de entorno.
- **Ligero**: Construido con `mcp` y `httpx` para alto rendimiento asíncrono.

## 📋 Requisitos

- Python 3.10+
- Una cuenta de desarrollador en Oracle Hospitality (OHIP) con credenciales válidas.
- [uv](https://github.com/astral-sh/uv) (Recomendado para gestión de paquetes) o `pip`.

## 🛠️ Instalación

1. **Clonar el repositorio**
   ```bash
   git clone https://github.com/tu-usuario/ohip-mcp.git
   cd ohip-mcp
   ```

2. **Configurar entorno**
   Copia el archivo de ejemplo y configura tus credenciales:
   ```bash
   cp .env.example .env
   ```
   Edita `.env` con tus datos de OHIP:
   ```env
   OHIP_BASE_URL=https://<environment>.oraclecloud.com
   OHIP_CLIENT_ID=tu_client_id
   OHIP_CLIENT_SECRET=tu_client_secret
   OHIP_APP_KEY=tu_app_key
   ```

3. **Instalar dependencias**
   ```bash
   # Usando pip
   pip install -r requirements.txt
   
   # O usando uv (más rápido)
   uv sync
   ```

## ⚙️ Configuración en Clientes MCP

### Claude Desktop

Edita tu configuración en `%APPDATA%\Claude\claude_desktop_config.json` (Windows) o `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):

```json
{
  "mcpServers": {
    "ohip": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "C:/Ruta/Absoluta/A/ohip-mcp",
        "python",
        "-m",
        "src.server"
      ],
      "env": {
        "OHIP_BASE_URL": "https://...",
        "OHIP_CLIENT_ID": "...",
        "OHIP_CLIENT_SECRET": "...",
        "OHIP_APP_KEY": "..."
      }
    }
  }
}
```

### Cursor / TRAE IDE

Puedes añadir el servidor directamente en la configuración del proyecto (`.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "ohip": {
      "command": "python",
      "args": ["-m", "src.server"],
      "cwd": "C:/Ruta/Absoluta/A/ohip-mcp",
      "env": { "DOTENV_PATH": "../.env" }
    }
  }
}
```

## 📖 Uso

Una vez conectado, el asistente tendrá acceso a la herramienta `call_ohip_api`.

**Ejemplo de Prompt:**
> "Busca las reservas del hotel con ID 'H123' para el huésped 'Smith'."

El modelo llamará internamente a:
```python
call_ohip_api(
    method="GET",
    endpoint="/rsv/v1/hotels/H123/reservations",
    hotel_id="H123",
    query_params={"lastName": "Smith"}
)
```

## 📂 Estructura del Proyecto

```
ohip-mcp/
├── src/
│   ├── auth.py         # Manejo de autenticación OAuth (Singleton)
│   └── server.py       # Definición del servidor y herramientas MCP
├── .env.example        # Plantilla de variables de entorno
├── .gitignore          # Archivos ignorados por git
├── mcp.example.json    # Ejemplos de configuración para IDEs
├── requirements.txt    # Dependencias del proyecto
└── README.md           # Documentación
```

## 🛡️ Licencia

Este proyecto está bajo la Licencia MIT.