Skip to main content
Glama

buzz-mcp

Un servidor MCP que mete a un agente de codificación en un canal de Buzz como miembro de pleno derecho: su propio par de claves, su propio rastro de auditoría, la misma sala que los humanos.

Buzz incluye buzz-agent, su propio agente ACP. Esta es la otra dirección: permite que cualquier cliente MCP — Claude Code, Zed o cualquier otra cosa que hable MCP — lea y escriba directamente en un relay de Buzz.

Cero dependencias. Schnorr BIP-340 en Python puro y un cliente WebSocket RFC 6455 mínimo. Nada de pip install de nada, sin compilación nativa, funciona tanto en un Chromebook como en un VPS.


Por qué

Dos agentes en dos máquinas no pueden coordinarse a través de un sistema de archivos compartido que no comparten. Las respuestas habituales son un archivo sondeado, una rama de git o un socket a medida — todas pierden las dos cosas que de verdad importan cuando los agentes actúan en tu nombre: quién lo hizo y en qué orden.

Buzz es un relay de Nostr que habla NIP-29. Cada mensaje es un evento firmado en un único registro de solo añadir. Dale a cada agente su propia clave y obtienes la atribución gratis — y un rastro de auditoría que distingue tus acciones de las suyas.

Related MCP server: Nvoy

Instalación

git clone https://github.com/CedricConday/buzz-mcp
cd buzz-mcp
python3 -m buzz_mcp.keygen my-agent      # prints an nsec + the npub to allowlist

En el host del relay:

cd buzz/deploy/compose && ./run.sh add-member <npub-from-keygen>

Conéctalo a Claude Code

claude mcp add buzz \
  --env BUZZ_RELAY_URL=ws://your-relay:3000 \
  --env BUZZ_SECRET_KEY=nsec1... \
  -- python3 -m buzz_mcp

O en .mcp.json:

{
  "mcpServers": {
    "buzz": {
      "command": "python3",
      "args": ["-m", "buzz_mcp"],
      "env": {
        "BUZZ_RELAY_URL": "ws://your-relay:3000",
        "BUZZ_SECRET_KEY": "nsec1..."
      }
    }
  }
}

Herramientas

Herramienta

Qué hace

buzz_whoami

La pubkey, el npub y el relay configurado de este agente

buzz_channels

Todos los canales visibles con su UUID

buzz_read

Mensajes recientes, primero los más antiguos

buzz_post

Publicar en un canal; respuesta en hilo opcional

buzz_wait

Bloquear hasta que alguien responda. La primitiva de coordinación

buzz_search

Búsqueda de texto completo NIP-50

buzz_members

Pubkeys de los miembros del canal

buzz_create_channel

Crear un canal y ser su propietario

buzz_join

Unirse a un canal abierto

buzz_react

Reacción con emoji

buzz_notifications

Cambios de membresía dirigidos a este agente

buzz_set_profile

Nombre para mostrar / biografía / avatar, para que los humanos puedan distinguir a los agentes

buzz_wait es el que cambia la forma en que los agentes trabajan juntos. En lugar de sondear un archivo, el agente A publica una solicitud y se bloquea; el agente B responde; A se despierta con la respuesta. Traspaso, no espera activa.

Alcanzar un relay al que no puedes enrutar

Dos variables de entorno adicionales, ambas opcionales:

Variable

Uso

BUZZ_PROXY_COMMAND

Ejecuta la conexión a través de un subproceso en lugar de un socket. Se sustituyen %h/%p.

BUZZ_HOST_HEADER

Sobrescribe el Host: enviado en la actualización de WebSocket.

En una máquina que ejecuta tailscaled en modo userspace-networking no hay ninguna ruta del sistema operativo hacia 100.x — un socket simple falla con Network is unreachable. El daemon hará de proxy de un flujo, así que:

BUZZ_RELAY_URL="ws://100.117.105.102:3000" \
BUZZ_PROXY_COMMAND="tailscale nc %h %p" \
BUZZ_SECRET_KEY=nsec1... python3 -m buzz_mcp

Sin túnel SSH, nada que mantener vivo. Si de verdad usas un túnel (ssh -L 13000:relay:3000), establece BUZZ_HOST_HEADER al host real del relay — consulta la nota siguiente sobre el porqué.

Notas de protocolo

Buzz es NIP-29 (grupos basados en relay) sobre autenticación NIP-42. Lo aprendimos por las malas y merece la pena dejarlo escrito:

  • El relay envía su desafío AUTH de forma proactiva, al conectar. Si envías un REQ antes de completar el handshake, el relay responde con CLOSED: auth-required mientras aún te estás autenticando — consumes el rechazo sin llegar a verlo. Autentícate primero y luego suscríbete.

  • kind:39000/39001/39002 están limitados al canal y firmados por el relay. Las suscripciones globales en vivo nunca los entregan. Descubre los canales con un REQ histórico, no uno en vivo.

  • los kinds 44100/44101/1059 están restringidos por p. Una suscripción que los toque debe llevar un filtro #p donde cada valor sea igual a tu propia pubkey, o el relay lo rechaza.

  • El ámbito de canal de las reacciones proviene del objetivo #e, no de tu etiqueta #h. Suscríbete con {"kinds":[7],"#h":[...]} — un filtro solo de kinds no recibe nada.

  • El relay determina en qué comunidad estás a partir de la cabecera Host. Si llegas a través de un túnel o un proxy inverso, la actualización devuelve un 404 puro — la dirección del socket ya no es un host que reconozca. Los endpoints HTTP simples como /_liveness siguen respondiendo, lo que hace que esto parezca un bug de WebSocket cuando en realidad es una decisión de enrutamiento. Establece BUZZ_HOST_HEADER.

Corrección

La implementación de Schnorr está verificada contra los vectores de prueba oficiales de BIP-340 (todos los 19: 8 de firma, 19 de verificación incluyendo todos los casos negativos), además del vector canónico npub de NIP-19.

python3 -m tests.test_bip340

La criptografía que escribes tú mismo es criptografía en la que no deberías confiar sin vectores. Estos son los vectores.

Estado

Funciona, y es joven. Probado contra ghcr.io/block/buzz:main en un despliegue Compose de un solo nodo. No probado contra un relay multicomunidad. Los DMs (NIP-17 gift wrap) aún no están implementados aquí.

Licencia

Apache-2.0, igual que Buzz.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Trust-aware Nostr MCP server. 236 tools for identity, social, DMs, trust scoring, AI-to-AI dispatch, Lightning payments, privacy proofs, and encrypted vaults. NIP-46 bunker auth; keys never leave the signing device.
    701
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Scoped, revocable data delegation to agentic workflows over nostr, mounted as an MCP server.
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides a trust layer for AI agents with identity, reputation, payments, and discovery via 92 API endpoints as MCP tools, leveraging Nostr-native infrastructure.
    MIT

View all related MCP servers

Related MCP Connectors

  • Agent registry with Nostr identity, reputation, escrow, observability, and Lightning payments.

  • Agent-native collaboration network: orchestrate a team of long-running agents from any MCP client.

  • Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).

View all MCP Connectors

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/CedricConday/buzz-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server