ContextVM MCP Bridge
Enables direct queries to PostgreSQL databases for read-only operations on ContextVM data without generating DVM events
Exposes bridge metrics in Prometheus format for monitoring MCP-to-DVM translation requests, success rates, and errors
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ContextVM MCP Bridgecreate a payment for $1500 with concept 'Payroll' to beneficiary 'Juan Pérez'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ContextVM MCP Bridge
Expone servicios ContextVM (Event Sourcing + FSM + DDD) a LLMs mediante Model Context Protocol sobre Nostr.
🎯 ¿Qué hace este Bridge?
Este bridge actúa como traductor bidireccional entre:
MCP (Model Context Protocol): Protocolo estándar para que LLMs interactúen con servicios externos
ContextVM: Nuestra arquitectura de Event Sourcing + FSM + DDD
LLMs (Claude, GPT, etc.)
↓ MCP (kind 25910)
MCP Bridge (Traductor)
↓ DVM (kind 5051-6054)
ContextVM Services (sin cambios)✨ Características
✅ No invasivo: Los ContextVMs existentes no se modifican
✅ Nostr como BUS: Un solo relay para MCP y DVM
✅ Bidireccional: Traduce peticiones y respuestas
✅ Configurable: Mapeos externos en JSON
✅ Observable: Logs detallados y métricas
✅ Production-ready: Docker, health checks, error handling
🚀 Quick Start
1. Instalación
# Clonar repositorio
git clone https://github.com/your-org/contextvm-mcp-bridge.git
cd contextvm-mcp-bridge
# Instalar dependencias
npm install
# Configurar
cp .env.example .env
# Editar .env con tu configuración2. Generar Keypair
# Generar nueva keypair para el bridge
npx tsx scripts/generate-keypair.ts
# Copiar el private key a .env
# BRIDGE_PRIVATE_KEY=<hex-key>3. Configurar Contextos
Editar config/contexts.json con los ContextVMs disponibles:
{
"contexts": [
{
"id": "cbz_tesoreria_pagos",
"name": "CBZ Tesorería - Pagos Ejecutados",
"namespace": "cbz-tesoreria-pagos-ejecutados",
"jobRequestKind": 5053,
"jobResultKind": 6053,
"rootEntity": {
"type": "pago-tesoreria",
"initialState": "planificado",
"schema": { ... },
"transitions": [ ... ]
}
}
]
}4. Ejecutar
# Modo desarrollo
npm run dev
# Modo producción
npm run build
npm start
# Con Docker
docker-compose up -d📋 Uso para LLMs
Conectar desde Claude/GPT
import { NostrMCPProxy } from '@contextvm/sdk/proxy';
// Crear proxy MCP
const proxy = new NostrMCPProxy({
privateKey: "llm-private-key-hex",
relays: ["wss://relay.controller-ai.com"],
serverPubkey: "bridge-public-key-hex"
});
await proxy.start();
// Listar herramientas disponibles
const tools = await proxy.request({
method: "tools/list"
});
// Llamar herramienta
const result = await proxy.request({
method: "tools/call",
params: {
name: "cbz_tesoreria_pagos_create",
arguments: {
importe: 1500.00,
concepto: "Pago nómina",
beneficiario: "Juan Pérez"
}
}
});🏗️ Arquitectura
src/
├── core/
│ ├── bridge.ts # Clase principal del bridge
│ ├── translator.ts # MCP ↔ DVM translator
│ └── routing.ts # Routing logic
├── mcp/
│ ├── mcp-listener.ts # Escucha kind 25910
│ ├── mcp-publisher.ts # Publica kind 25910
│ └── mcp-types.ts # Tipos MCP
├── dvm/
│ ├── dvm-listener.ts # Escucha kind 5051-6054
│ ├── dvm-publisher.ts # Publica kind 5051-6054
│ └── dvm-types.ts # Tipos DVM
├── mapping/
│ ├── capabilities.ts # Mapeo de capabilities
│ ├── schemas.ts # Schemas de validación
│ └── contexts.ts # Contextos disponibles
├── config/
│ └── index.ts # Configuración
└── index.ts # Entry point🔧 Configuración Avanzada
Mapeo de Contextos
Ver docs/context-mapping.md para detalles sobre cómo mapear ContextVMs a MCP tools.
Queries sin Eventos
Para consultas de solo lectura, el bridge puede consultar directamente la API/PostgreSQL sin generar eventos DVM:
// En config/contexts.json
{
"queries": {
"enabled": true,
"apiEndpoint": "https://api.cbz-tesoreria.controller-ai.com",
"cacheEnabled": true,
"cacheTTL": 300
}
}📊 Monitoring
Health Check
curl http://localhost:4000/health
# Response:
{
"status": "healthy",
"uptime": 3600,
"relay": "connected",
"contexts": 4,
"requests": {
"total": 1234,
"success": 1200,
"errors": 34
}
}Métricas
El bridge expone métricas en formato Prometheus:
curl http://localhost:4000/metrics🧪 Testing
# Tests unitarios
npm test
# Tests con watch
npm run test:watch
# Tests de integración (requiere relay activo)
npm run test:integration🐳 Docker
Build
docker build -t contextvm-mcp-bridge:latest .Run
docker run -d \
--name mcp-bridge \
-p 4000:4000 \
-e BRIDGE_PRIVATE_KEY=your-key \
-e RELAY_URL=ws://relay:8080 \
contextvm-mcp-bridge:latestDocker Compose
docker-compose up -d📖 Documentación
🤝 Contribuir
Fork el repositorio
Crear feature branch (
git checkout -b feature/amazing-feature)Commit cambios (
git commit -m 'Add amazing feature')Push al branch (
git push origin feature/amazing-feature)Abrir Pull Request
📄 Licencia
MIT License - ver LICENSE
🔗 Links
ContextVM Docs: https://contextvm.org
MCP Protocol: https://modelcontextprotocol.io
Nostr Protocol: https://nostr.com
GitHub: https://github.com/your-org/contextvm-mcp-bridge
Última actualización: 23 de diciembre de 2025
This server cannot be installed
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/machette-tech/contextvm-mcp-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server