74
/ 100
1 month ago
glama

bot-relay-mcp

MCP coordination primitive for multi-agent workflows. Lets multiple AI coding agents (Claude Code, Cursor, n8n, custom clients) discover each other and exchange messages and tasks via a shared SQLite-backed message bus.

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find.

Install from

M8ven verifies MCPs across every public registry — install directly from whichever one you prefer.

// key findings
🚨
Secret credentials may flow to a network call
1 flow detected: RELAY_AGENT_TOKEN. We can’t prove the destination matches the brand the credential belongs to.
🔐
You'll be asked for 4 credentials: RELAY_AGENT_TOKEN, RELAY_DASHBOARD_SECRET, RELAY_ENCRYPTION_KEY, RELAY_HTTP_SECRET
These are read from process.env at runtime. Make sure you trust where they’ll be sent.
// known CVEs in dependencies2 low

Disclosed vulnerabilities in this server's declared npm dependencies (via OSV). Whether each is reachable depends on the installed versions.

lowuuid@11.1.0GHSA-w5hq-g745-h8pq

uuid: Missing buffer bounds check in v3/v5/v6 when buf is provided

ws: Uninitialized memory disclosure

Depend on this server? Get alerted when its CVEs change.Watch this server free →
// required environment variables
This server reads these from process.env. You'll be asked to provide them before it can run.
configRELAY_AGENT_ABANDON_DAYS
configRELAY_AGENT_CAPABILITIES
configRELAY_AGENT_NAMEexport =codex-5-5
configRELAY_AGENT_ROLE
🔐 secretRELAY_AGENT_TOKENexport =<token>
configRELAY_AGENT_TOKEN_STORE
configRELAY_ALLOW_LEGACY
configRELAY_ALLOW_OPEN_PUBLICDev-only escape hatch: =1 lets the relay start anyway on a public host without a secret — useful for throwaway local Docker nets, but logs a loud warning every startup. Never use in production.
configRELAY_ALLOW_PRIVATE_WEBHOOKS
configRELAY_AUDIT_LOG_PURGE_INTERVAL
configRELAY_AUDIT_LOG_RETENTION_DAYS
configRELAY_AUTO_ASSIGN_LIMIT
configRELAY_BUSY_TTL_MINUTES
configRELAY_CONFIG_PATH
configRELAY_CONSISTENCY_PROBE
configRELAY_CONSISTENCY_PROBE_RATE
configRELAY_DASHBOARD_HOSTS
configRELAY_DASHBOARD_OPERATOR
🔐 secretRELAY_DASHBOARD_SECRET
configRELAY_DB_PATH
🔐 secretRELAY_ENCRYPTION_KEYexport ="<base64-32>"
configRELAY_ENCRYPTION_KEYRINGexport ='{"current":"k1","keys":{"k1":"<base64-32>"}}'
configRELAY_ENCRYPTION_KEYRING_PATHexport =~/.bot-relay/keyring.json
configRELAY_ENCRYPTION_LEGACY_KEY_ID
configRELAY_FILESYSTEM_MARKERS
configRELAY_HEALTH_DISABLED
configRELAY_HEALTH_REASSIGN_GRACE_MINUTES
configRELAY_HEALTH_SCAN_LIMIT
configRELAY_HOME
configRELAY_HTTP_ALLOWED_HOSTS
configRELAY_HTTP_BODY_LIMIT
configRELAY_HTTP_HOSTEnv vars override file config: RELAY_TRANSPORT, RELAY_HTTP_PORT, , RELAY_HTTP_SECRET, RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_HTTP_MAX_CONCURRENT_PER_IP
configRELAY_HTTP_MAX_SESSIONS
configRELAY_HTTP_PORTEnv vars override file config: RELAY_TRANSPORT, , RELAY_HTTP_HOST, RELAY_HTTP_SECRET, RELAY_TRUSTED_PROXIES (comma-separated CIDRs).
configRELAY_HTTP_RATE_LIMIT_PER_MINUTE
configRELAY_HTTP_REAPER_INTERVAL_MS
configRELAY_HTTP_REAPER_TEST_MODE
🔐 secretRELAY_HTTP_SECRETRELAY_TRANSPORT=http =your-shared-secret node dist/index.js
configRELAY_HTTP_SECRET_PREVIOUS"old-secret-v1" \
configRELAY_HTTP_SESSION_IDLE_SECONDS
configRELAY_INSTANCE_ID
configRELAY_LAZY_REENCRYPT
configRELAY_LOAD_CONSUMERS
configRELAY_LOAD_MESSAGES
configRELAY_LOAD_P99_MS
configRELAY_LOAD_PRODUCERS
configRELAY_LOG_DEBUG
configRELAY_LOG_LEVEL
configRELAY_MARKER_DIR
configRELAY_MAX_PAYLOAD_BYTES
configRELAY_OUTBOX_POLL_MS
configRELAY_OUTBOX_RETENTION_DAYS
configRELAY_POLL_INTERVAL
configRELAY_RATE_LIMIT_MESSAGES_PER_HOUR
configRELAY_RATE_LIMIT_TASKS_PER_HOUR
configRELAY_RECORD_TRAFFIC
configRELAY_ROTATION_GRACE_SECONDS
configRELAY_SKIP_TTY_CHECK
configRELAY_SPAWN_DRY_RUN
configRELAY_SPAWN_KICKSTARTKickstart prompt sent as positional arg ="custom" / RELAY_SPAWN_NO_KICKSTART=1 The default tells the spawned agent to pull get_messages and act on inbox.
configRELAY_SPAWN_NO_KICKSTARTKickstart prompt sent as positional arg RELAY_SPAWN_KICKSTART="custom" / =1 The default tells the spawned agent to pull get_messages and act on inbox.
configRELAY_SQLITE_DRIVERwasm node dist/index.js
configRELAY_SSE_KEEPALIVE_MS
configRELAY_TERMINAL_APPDriver selection: override (allowlist-gated) > process.platform auto-detect > in-driver fallback chain.
configRELAY_TLS_ENABLED
configRELAY_TRANSPORThttp RELAY_HTTP_SECRET=your-shared-secret node dist/index.js
configRELAY_TRUSTED_PROXIESEnv vars override file config: RELAY_TRANSPORT, RELAY_HTTP_PORT, RELAY_HTTP_HOST, RELAY_HTTP_SECRET, (comma-separated CIDRs).
configRELAY_TTY_GRACE_MS
configRELAY_WEBHOOK_CLAIM_LEASE_SECONDS
configRELAY_WEBHOOK_RETRY_BATCH_SIZE
// full audit trail
The full breakdown of what we checked, the deductions that landed, the network hosts, the dependency advisories, and concrete fix guidance is available to verified publishers.
// improvement guidance — verified publishers only
We have 2 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Score](https://m8ven.ai/badge/mcp/maxlumiere-bot-relay-mcp-1atwak)](https://m8ven.ai/mcp/maxlumiere-bot-relay-mcp-1atwak)
commit: bfba23a017b52f9535c8988328f540899a25e6f0
code hash: 4a01b4a6acecebc3fa12846cd420cc4e1c07a7c23c9cf028654eed393e5da1e6
verified: 6/10/2026, 10:54:29 AM
view raw JSON →