# 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.