belle-mcp-server
belle-mcp-server
Un servidor de referencia del Model Context Protocol (MCP) que expone datos reales de gestión de propiedades de Belle Realty (propiedades, inquilinos, contratos de arrendamiento, partes de mantenimiento, renta) como herramientas que Claude Desktop, Cursor o cualquier cliente compatible con MCP puede invocar directamente.
Seis herramientas. Cinco son estrictamente de solo lectura. Una es una propuesta de escritura controlada por HITL. Esa proporción es intencionada y es el objetivo principal de este repositorio.
Parte del AI Fluency Program — Nivel 2.
Por qué existe esto
La mayoría de las demostraciones de "IA + tus datos" otorgan al modelo acceso sin restricciones a la base de datos. Eso es un riesgo.
El Model Context Protocol está diseñado para exponer una superficie pequeña y seleccionada con autenticación por herramienta, límites de tasa y auditoría: la misma disciplina que aplicarías a una API REST pública. Este repositorio muestra cómo se ve eso para un dominio real (un centro comercial de Luisiana) con un esquema Postgres real, una semilla funcional y una única ruta de escritura controlada por HITL.
Si entiendes este repositorio, puedes crear uno para cualquier negocio que dirijas.
Qué incluye
Herramienta | Qué hace | ¿Escritura? |
| Filtra la cartera por tipo/ciudad. | no |
| Lista los inquilinos, opcionalmente limitados a una propiedad. | no |
| Obtiene un contrato por lease_id/suite_id/tenant_id. | no |
| Búsqueda multifiltro entre partes de mantenimiento. | no |
| Calcula una instantánea completa de la renta de una propiedad. | no |
| Guarda una respuesta propuesta al inquilino como BORRADOR (approved=false). | Escritura controlada por HITL |
Cada llamada tiene límite de tasa (60/min por defecto) y se registra en el registro de auditoría mcp_audit_log.
Inicio rápido
# 1. Clone + install
git clone https://github.com/OrangeOnyx/belle-mcp-server.git
cd belle-mcp-server
npm install
# 2. Configure
cp .env.example .env
# Paste your Supabase URL + service-role key
# 3. Set up the schema (Supabase project)
# Copy supabase/migrations/0001_init.sql into the SQL editor and run.
# 4. Seed demo data
npm run db:seed
# 5. Build + inspect
npm run build
npm run inspectEl MCP Inspector abre una interfaz donde puedes listar herramientas, invocarlas y ver las respuestas en bruto.
Conéctalo a Claude Desktop
Añade lo siguiente a ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o el equivalente en Windows/Linux:
{
"mcpServers": {
"belle-realty": {
"command": "node",
"args": ["/absolute/path/to/belle-mcp-server/dist/index.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_SERVICE_ROLE_KEY": "your-service-role-key"
}
}
}
}Reinicia Claude Desktop. Ahora verás un conjunto de herramientas belle-realty. Prueba con:
"¿Qué locales están ocupados actualmente en On The Boulevard y cuánto alquiler mensual generan?"
Claude llamará a get_rent_roll y responderá con los datos devueltos.
El patrón de escritura HITL
La única herramienta de escritura (draft_maintenance_response) ilustra un patrón general que deberías copiar para cualquier servicio orientado a IA:
La IA propone un cambio (aquí, una respuesta a un parte de mantenimiento de un inquilino).
El servidor lo guarda como
approved=false.Nada se entrega, envía ni aplica hasta que un humano lo aprueba fuera de banda (normalmente en la interfaz de administración del gestor de la propiedad).
La superficie MCP deliberadamente no expone una herramienta de aprobación. La aprobación es una operación exclusivamente humana.
Esto significa que un agente demasiado entusiasta o con inyección de prompts no puede enviar texto silenciosamente a un inquilino. Puede proponer, y puede proponer en voz alta. No puede enviar.
Para un tutorial más detallado, consulta docs/hitl-pattern.md.
Guía de uso personal
Eres un propietario particular con 3 casas de alquiler o un pequeño edificio comercial.
Ejecuta la migración en tu proyecto Supabase.
Siembra con tus propios datos (edita
supabase/seed.tso inserta filas manualmente).Apunta Claude Desktop al servidor.
Haz preguntas como "¿qué inquilino tiene un contrato que vence en los próximos 90 días?" o "redacta una respuesta al parte sobre el calentador de agua".
Ya has creado una capa de operaciones de inquilinos nativa de IA que habla tus datos. Te costó una tarde.
Guía de uso empresarial
Diriges Belle Realty (o una empresa de gestión equivalente). Varios empleados necesitan acceso a Claude a los datos de la cartera sin ver SQL en bruto y sin riesgo de escrituras accidentales.
Despliega este servidor como un proceso persistente (Railway, Fly o un host Docker).
Establece
MCP_TRANSPORT=httpyMCP_HTTP_TOKEN=<secreto-compartido>.Cada compañero configura Claude Desktop o Cursor con la URL y el token.
Las herramientas de solo lectura dan ventaja a todos. La única herramienta de escritura protege la relación con el inquilino.
mcp_audit_logte proporciona un registro posterior de cada acción de la IA.
Arquitectura
graph LR
A[Claude Desktop / Cursor] -->|MCP stdio or HTTP| B[belle-mcp-server]
B --> C[RateLimiter]
B --> D[Zod validation]
B --> E[Supabase Postgres]
B --> F[mcp_audit_log]
E --> G[(properties, tenants, leases, tickets)]Detalles en docs/architecture.md.
Cómo ampliarlo
Añade una nueva herramienta en 4 pasos:
Añade un esquema Zod para la entrada en
src/schemas/domain.ts(si la forma de los datos es nueva).Crea
src/tools/<nombre>.tscon un esquema deinput, un manejador y una definición JSON-Schema.Regístralo en
src/tools/index.ts.Añade pruebas en
tests/.
Toda herramienta de escritura debe seguir el patrón de propuesta de escritura en draft_maintenance_response.
Despliegue
Railway (recomendado para transporte HTTP)
railway uprailway.json compila el servidor y ejecuta node dist/index.js. Establece las variables de entorno en el panel de Railway.
Local (solo stdio)
Solo compila y apunta tu cliente MCP a dist/index.js. No se necesita alojamiento.
Desarrollo
npm run dev # tsx watch mode
npm run test # vitest
npm run build # tsc → dist/
npm run inspect # MCP Inspector UIRepositorios relacionados
lease-abstractor— extrae una abstracción estructurada de un PDF/DOCX de contratosupport-triage-agent— el mismo patrón HITL aplicado a mensajes de soportediligence-agent— diligencia basada en RAG sobre una carpeta de documentosai-fluency-program— plan de estudios principal
Licencia
MIT — consulta LICENSE.
No es asesoramiento legal, fiscal ni de gestión de propiedades. No lo utilices para decisiones críticas de cumplimiento sin un profesional autorizado.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/OrangeOnyx/belle-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server