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 "Deploy 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
Última actualización: 23 de diciembre de 2025
Related MCP Connectors
Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.
Connect AI agents to Replynodes over the Model Context Protocol.
Continuity protocol for autonomous AI agents. Agent messaging with SMTP bridge and LN payments.
Design domain models and generate deterministic multi-stack code, driven by your coding agent.