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)
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues