Skip to main content
Glama
nucky1

Business Assistant MCP

by nucky1
README.md
# Business Assistant MCP

Servidor MCP remoto, multiempresa y stateless para un asistente conversacional de negocios.

## Responsabilidad

El MCP no contiene el LLM. Su función es:

- Resolver el negocio correcto desde un widget público o una sesión administrativa.
- Buscar conocimiento activo sin mezclar tenants.
- Preparar altas, ediciones, borrados lógicos y restauraciones.
- Exigir confirmación humana antes de persistir cambios.
- Aplicar guardrails determinísticos.
- Validar JWT, membresía y rol.
- Mantener auditoría.

El agente se encarga de interpretar lenguaje natural y redactar. Supabase persiste y protege los datos.

## Stack

- Node.js 22+
- TypeScript
- `@modelcontextprotocol/sdk` v1.x
- Streamable HTTP stateless con respuesta JSON
- Express para desarrollo local
- Supabase PostgreSQL + Auth + RLS
- Zod 4
- Vercel Functions

## Inicio local

```bash
cp .env.example .env
npm install
npm run typecheck
npm test
npm run dev
```

Endpoints:

```text
GET  http://localhost:3001/health
POST http://localhost:3001/mcp
```

## Aplicar base de datos

```bash
npm install -g supabase
supabase login
supabase link --project-ref TU_PROJECT_REF
supabase db push
```

La migración principal está en:

```text
supabase/migrations/202607100001_business_assistant_mcp.sql
```

## Inspector MCP

Con el servidor local ejecutándose:

```bash
npm run inspect
```

Configurar estos headers en el Inspector:

```text
X-Internal-Service-Key: valor de MCP_INTERNAL_SERVICE_KEY
X-Widget-Key: UUID público del widget
X-Client-Origin: http://localhost:3000
```

Para herramientas administrativas, agregar además:

```text
Authorization: Bearer <SUPABASE_ACCESS_TOKEN_DEL_USUARIO>
```

## Seguridad

- `MCP_INTERNAL_SERVICE_KEY` solo lo conocen la API del agente y el MCP.
- `SUPABASE_SECRET_KEY` solo existe en el MCP y Vercel.
- El navegador nunca llama directamente al MCP.
- Las contraseñas se envían desde el formulario a Supabase Auth, no al agente ni al MCP.
- Las herramientas administrativas requieren JWT válido y rol suficiente.
- Toda búsqueda filtra por `business_id` dentro de PostgreSQL.
- El borrado es lógico.
- El commit es transaccional mediante RPC.

## GitHub: crear y subir a nucky1

Desde la raíz del proyecto:

```bash
git init
git add .
git commit -m "feat: initialize multi-tenant business assistant MCP"
git branch -M main
```

Con GitHub CLI autenticada:

```bash
gh auth login
gh repo create nucky1/business-assistant-mcp \
  --public \
  --source=. \
  --remote=origin \
  --push
```

Si el repositorio ya existe:

```bash
git remote add origin https://github.com/nucky1/business-assistant-mcp.git
git push -u origin main
```

## Documentación

- [Contrato MCP](docs/MCP_CONTRACT.md)
- [Implementación y decisiones](docs/IMPLEMENTATION_GUIDE.md)

Maintenance

ActivitySlowing
ResponsivenessNo issues