buzz-mcp
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 allowlistEn 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_mcpO 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 |
| La pubkey, el npub y el relay configurado de este agente |
| Todos los canales visibles con su UUID |
| Mensajes recientes, primero los más antiguos |
| Publicar en un canal; respuesta en hilo opcional |
| Bloquear hasta que alguien responda. La primitiva de coordinación |
| Búsqueda de texto completo NIP-50 |
| Pubkeys de los miembros del canal |
| Crear un canal y ser su propietario |
| Unirse a un canal abierto |
| Reacción con emoji |
| Cambios de membresía dirigidos a este agente |
| 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 |
| Ejecuta la conexión a través de un subproceso en lugar de un socket. Se sustituyen |
| Sobrescribe el |
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_mcpSin 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
REQantes de completar el handshake, el relay responde conCLOSED: auth-requiredmientras 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
REQhistó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
#pdonde 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 un404puro — la dirección del socket ya no es un host que reconozca. Los endpoints HTTP simples como/_livenesssiguen respondiendo, lo que hace que esto parezca un bug de WebSocket cuando en realidad es una decisión de enrutamiento. EstableceBUZZ_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_bip340La 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.
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 Servers
- AlicenseNot gradedqualityAmaintenanceTrust-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.701MIT
- AlicenseNot gradedqualityAmaintenanceScoped, revocable data delegation to agentic workflows over nostr, mounted as an MCP server.MIT
- AlicenseNot gradedqualityFmaintenanceProvides a trust layer for AI agents with identity, reputation, payments, and discovery via 92 API endpoints as MCP tools, leveraging Nostr-native infrastructure.MIT
- AlicenseAqualityAmaintenanceEnables real-time cross-machine communication for Claude Code agents using a shared MCP relay server.611MIT
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).
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/CedricConday/buzz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server