Skip to main content
Glama
intern-analytics

Brand MCP Server

MCP para GBL

Un servidor seguro y multiinquilino del Protocolo de Contexto de Modelos (MCP) para acceder a bases de datos Postgres específicas de cada marca. Este servidor admite tanto la ejecución local como el acceso remoto autenticado mediante HTTP/SSE.

🔐 Autenticación y Seguridad

Este servidor utiliza Autenticación mediante Token Bearer. El acceso a los endpoints /sse y /messages requiere una clave API válida con el prefijo gbl-.

CLI de Gestión de Claves

Gestione sus claves localmente o en EC2 utilizando el módulo de autenticación integrado:

# Activate your environment first
source .venv/bin/activate  # Linux/EC2
.\.venv\Scripts\activate   # Windows

### 6. Manage Multi-Tenant API Keys (Admin API)
To provision unique database tenants to separate keys, we host an internal Admin REST API.
This API handles secrets, so it should **only** be accessed from localhost on your EC2 instance (binds to `:8001`).

### Option A: Use it securely locally via SSH Tunneling (Recommended)
You can build a secure tunnel from your Windows PC directly to your EC2 instance so you can interact with the Admin API from your own local browser (like Swagger UI) or local terminal smoothly:
```powershell
# Run this on your local Windows PC
ssh -i "path/to/your/key.pem" -L 8001:127.0.0.1:8001 ubuntu@YOUR_EC2_IP

Ahora, puede interactuar con la API o ver la interfaz de Swagger directamente desde su máquina local: http://127.0.0.1:8001/docs

Opción B: Usarlo directamente en EC2

Para iniciar la API de administración en EC2:

python3 -m src.admin_api

Con la API de administración en ejecución, puede crear una nueva clave de inquilino de marca desde otra ventana de terminal de EC2:

curl -X POST http://127.0.0.1:8001/keys/generate \
     -H "Content-Type: application/json" \
     -d '{"db_user": "brand_a_user", "db_pass": "supersecret"}'

(La respuesta contendrá la api_key asignada a brand_a_user.)

Otros endpoints de utilidad:

  • Listar inquilinos: curl http://127.0.0.1:8001/keys

  • Revocar inquilino: curl -X DELETE http://127.0.0.1:8001/keys/brand_a_user


🖥️ Despliegue en EC2 (Persistencia con systemd)

Para producción, utilizamos systemd para garantizar que el servidor se inicie automáticamente al reiniciar y se reinicie si falla.

1. Configuración del Proyecto

git clone https://github.com/intern-analytics/MCPforGBL.git
cd MCPforGBL
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

2. Configuración

Cree un archivo .env para las credenciales de la base de datos (ignorado por git):

nano .env
# Add DB_USER, DB_PASS, DB_HOST, etc.

3. Crear el Servicio del Sistema

Cree un archivo de servicio:

sudo nano /etc/systemd/system/mcp-server.service

Pegue lo siguiente (ajuste las rutas si es necesario):

[Unit]
Description=Brand MCP FastAPI Server
After=network.target

[Service]
User=ubuntu
WorkingDirectory=/home/ubuntu/projects/MCPforGBL
ExecStart=/home/ubuntu/projects/MCPforGBL/.venv/bin/python -m src.server2
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target

4. Habilitar e Iniciar

sudo systemctl daemon-reload
sudo systemctl enable mcp-server
sudo systemctl start mcp-server
sudo systemctl status mcp-server

🤖 Conexión a Claude

Opción A: Usar Claude.ai (Aplicación Web)

Debido a que este servidor está expuesto públicamente a través de Nginx y protegido con un certificado HTTPS de Let's Encrypt, puede conectarse directamente en su navegador.

  1. Vaya a la Configuración de Claude.ai -> Desarrollador / Conectores.

  2. Haga clic en Añadir conector personalizado.

  3. Pegue su URL segura: https://mcpforgbl.duckdns.org/sse?token=gbl-YOUR_KEY_HERE

  4. ¡Conéctese y consulte!

Opción B: Usar la aplicación Claude Desktop (HTTPS)

Actualice su %APPDATA%\Claude\claude_desktop_config.json en Windows.

IMPORTANT

UseC:\\PROGRA~1\\nodejs\\npx.cmd para evitar problemas con espacios en la ruta de archivo de Windows.

{
  "mcpServers": {
    "gbl-data-lake": {
      "command": "C:\\PROGRA~1\\nodejs\\npx.cmd",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcpforgbl.duckdns.org/sse?token=gbl-YOUR_KEY_HERE"
      ]
    }
  }
}

Opción C: Usar la aplicación Claude Desktop (Dirección IP HTTP y Cabecera Bearer)

Si prefiere conectarse directamente a la IP de la instancia EC2 sin usar la URL de DuckDNS o desea pasar el token como una cabecera en lugar de un parámetro de URL, utilice esta configuración:

{
  "mcpServers": {
    "gbl-data-lake": {
      "command": "C:\\PROGRA~1\\nodejs\\npx.cmd",
      "args": [
        "-y",
        "mcp-remote",
        "http://YOUR-EC2-PUBLIC-IP:8000/sse",
        "--allow-http",
        "--header",
        "Authorization: Bearer gbl-YOUR_KEY_HERE"
      ]
    }
  }
}

📈 Hoja de ruta de escalabilidad

Nuestra plataforma está diseñada para escalar de forma segura y eficiente a través de un sistema robusto de control de acceso basado en roles.

Planeamos escalar la gestión de usuarios generando claves API separadas y dedicadas para cada usuario/inquilino. En nuestra arquitectura, la clave API actúa como algo más que un simple token de autenticación: define intrínsecamente el perfil de permisos completo del usuario. La clave en sí le indica al servidor exactamente cuánto acceso tiene el usuario.

Este enfoque nos permite aplicar estrictamente las interacciones con la base de datos y la disponibilidad de herramientas basadas en cuentas de acceso limitado y archivos de habilidades personalizados, asegurando que cada usuario solo interactúe con los datos y capacidades que está explícitamente autorizado a usar.


🛠️ Desarrollo

  • Servidor Local: python -m src.server (stdio estándar)

  • Servidor SSE: python -m src.server2 (HTTP/SSE vía FastAPI)

  • Utilidades de Autenticación: src/auth.py

  • Lógica de Base de Datos: src/db.py

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/intern-analytics/MCPforGBL'

If you have feedback or need assistance with the MCP directory API, please join our Discord server