About Marinas MCP
Marinas MCP is an MCP server published by Rafavermar in the Files category: servidor MCP (FastMCP) para consulta de tarifas de amarres en marinas deportivas, consumido desde un Custom GPT (MarinasGPT_BETA). Proyecto en fase muy beta, desarrollado con créditos Azure for Students y suscripción ChatGPT Plus.
The repository has 1 stars and 0 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/Rafavermar/marinas-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Marinas MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
Marinas MCP
Servidor MCP (FastMCP) para consulta de tarifas de amarres en marinas deportivas, consumido desde un Custom GPT (MarinasGPT_BETA).
Proyecto en fase muy beta, desarrollado con créditos Azure for Students y suscripción ChatGPT Plus.

Contenido
- Características
- Arquitectura
- Requisitos previos
- Desarrollo local
- Esquema de base de datos
- Provisionamiento en Azure
- Uso de la API
- CI/CD
- Licencia
Características
- Extracción de tarifas desde HTML o PDFs de tres marinas: Benalmádena, Marbella y Marina del Este.
- API MCP con herramientas:
trigger_scrape: fuerza actualización de datos.list_marinas: lista IDs disponibles.get_marina_content(marina_id): recupera tarifas JSON y texto PDF.list_history_dates(marina_id),get_marina_history(marina_id): histórico.
- Despliegue de contenedor Docker en Azure App Service.
- Base de datos PostgreSQL Flexible Server en Azure.
Arquitectura
- Cliente: Custom GPT o cualquier cliente HTTP.
- Azure App Service: ejecuta contenedor Docker con FastAPI + FastMCP.
- PostgreSQL Flexible Server: almacena
marinasymarinas_history. - Conectividad:
- Endpoint público para la App Service.
- Endpoint público para la DB (
0.0.0.0/0) con reglas de firewall (IP propia y Azure). - CORS habilitado para
https://chat.openai.com.
Requisitos previos
- Azure CLI instalada y logueada (
az login) - Docker y cuenta en Docker Hub
- Python 3.10+ y entorno virtual
- Variables de entorno en
.env:
DATABASE_URL="postgresql://pgadmin@marinas-pg:5432/marinasdb?sslmode=require"
Desarrollo local
git clone https://github.com/tu_usuario/marinas-mcp.git
cd marinas-mcp
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env # ajustar cadena de conexión
uvicorn server:app --reload
Esquema de base de datos
Conéctese al servidor PostgreSQL (Azure Cloud Shell o local):
psql "host=<SERVER>.postgres.database.azure.com port=5432 dbname=marinasdb user=pgadmin sslmode=require"
Ejecute:
CREATE TABLE IF NOT EXISTS marinas (
id TEXT PRIMARY KEY,
pdf_text TEXT,
tarifas_json JSONB,
updated_at TIMESTAMPTZ NOT NULL
);
CREATE TABLE IF NOT EXISTS marinas_history (
id TEXT NOT NULL,
pdf_text TEXT,
tarifas_json JSONB,
updated_at TIMESTAMPTZ NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_marinas_history_id_date
ON marinas_history(id, updated_at DESC);
Provisionamiento en Azure
1. PostgreSQL Flexible Server
az postgres flexible-server create \
--resource-group marinas-rg \
--name marinas-pg \
--location westeurope \
--admin-user pgadmin \
--admin-password "<PASSWORD>" \
--sku-name Standard_B1ms \
--tier Burstable \
--version 14 \
--storage-size 32 \
--public-access 0.0.0.0/0
az postgres flexible-server db create \
--resource-group marinas-rg \
--server-name marinas-pg \
--database-name marinasdb
# Firewall: tu IP
az postgres flexible-server firewall-rule create \
--resource-group marinas-rg \
--server-name marinas-pg \
--rule-name allow_my_ip \
--start-ip-address <MY_IP> \
--end-ip-address <MY_IP>
# Firewall: servicios Azure
az postgres flexible-server firewall-rule create \
--resource-group marinas-rg \
--server-name marinas-pg \
--rule-name allow_azure_services \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
2. Azure App Service (Contenedor Docker)
az group create \
--name marinas-rg \
--location westeurope
az appservice plan create \
--resource-group marinas-rg \
--name marinas-plan \
--is-linux \
--sku B1
az webapp create \
--resource-group marinas-rg \
--plan marinas-plan \
--name marinas-mcp-app \
--deployment-container-image-name <DOCKERHUB_USER>/marinas-mcp-app:latest
Configuración de la Web App
# Variables de entorno
az webapp config appsettings set \
--resource-group marinas-rg \
--name marinas-mcp-app \
--settings \
DATABASE_URL="<TU_CADENA_CONN_SIN_CREDENCIALES>" \
WEBSITES_PORT=8000
# Always On
az webapp config set \
--resource-group marinas-rg \
--name marinas-mcp-app \
--always-on true
# CORS
az webapp cors add \
--resource-group marinas-rg \
--name marinas-mcp-app \
--allowed-origins https://chat.openai.com
# Logging
az webapp log config \
--resource-group marinas-rg \
--name marinas-mcp-app \
--docker-container-logging filesystem \
--detailed-error-messages true \
--failed-request-tracing true
az webapp log tail \
--resource-group marinas-rg \
--name marinas-mcp-app
# (Opcional) Arrancar / detener base de datos
az postgres flexible-server stop -g marinas-rg -n marinas-pg
az postgres flexible-server start -g marinas-rg -n marinas-pg
Uso de la API
Acceda a los endpoints:
GET /→{ "status":"ok" }POST /run
Ejemplos de payload:
{ "name":"trigger_scrape" }
{ "name":"list_marinas" }
{ "name":"get_marina_content", "marina_id":"benalmadena" }
Consulte /docs para explorar OpenAPI y Swagger UI.
CI/CD
En esta PoC se utiliza GitHub Actions para compilar y publicar la imagen Docker en Docker Hub.
El flujo de trabajo se dispara al hacer push en main, y no cubre despliegue automático en Azure.
Licencia
Apache License 2.0
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.