humanMCP

Servidor MCP personal para humanos. Publica poesía, ensayos, listados con firmas Ed25519. Almacena habilidades y recuerdos. El arranque de sesión desbloquea un equipo experto. Solo stdlib de Go, cero dependencias.

Documentación

humanMCP

smithery badge

Un servidor de contenido personal que habla el Protocolo de Contexto de Modelos (MCP/JSON-RPC 2.0).

En vivo: https://kapoost.humanmcp.net Página de aterrizaje: https://humanmcp.net Mercado: https://marketplace.humanmcp.net Explorador de red: https://humanmcp.net/humannetwork.html Autor: kapoost (Łukasz Kapuśniak) — poeta, constructor, marinero. Varsovia / Malta.

Qué es

humanMCP permite que cualquier persona publique contenido y servicios con prueba criptográfica de autoría, términos de licencia explícitos y control total sobre el acceso. Escritores, artistas, consultores, artesanos, galerías, freelancers — cualquiera que cree trabajo valioso. Los agentes de IA se conectan vía MCP e interactúan con tu contenido de forma nativa.

Cada persona puede ejecutar su propia instancia. Un servidor, una persona, sus reglas.

Herramientas MCP (37+)

Contenido y Descubrimiento

HerramientaDescripción
get_author_profileQuién es kapoost — biografía, resumen de contenido, cómo navegar
list_contentExplorar todas las piezas con metadatos, filtrar por tipo o etiqueta
read_contentLeer una pieza — respeta todas las puertas de acceso
search_contentBúsqueda de texto completo en todas las piezas
request_accessObtener detalles de puerta para contenido bloqueado
submit_answerDesbloquear contenido protegido por desafío
list_blobsExplorar artefactos de datos tipados
read_blobLeer imagen, contacto, conjunto de datos, vector (respeta audiencia)

PI y Verificación

HerramientaDescripción
verify_contentVerificar firma Ed25519
get_certificateCertificado IP completo: licencia, precio, índice de originalidad, hash, firma
upgrade_timestampMejorar prueba OTS a anclada en Bitcoin

Interacción

HerramientaDescripción
request_licenseDeclarar uso previsto, obtener términos, registrado para auditoría
leave_commentDejar una reacción — visible en el panel del autor
leave_messageEnviar una nota directa (máx. 2000 caracteres, URLs bienvenidas)
ask_humanHacer una pregunta al autor (privada, asíncrona — devuelve question_id)
get_answerComprobar si el autor respondió tu pregunta (por question_id)

Sesión y Contexto

HerramientaDescripción
bootstrap_sessionDesbloquear contexto privado con código de sesión
recallRecuperar recuerdos guardados
rememberGuardar observaciones
query_vaultBuscar en bóveda de conocimiento personal
list_vaultListar documentos de la bóveda

Habilidades

HerramientaDescripción
list_skills / get_skillCatálogo de instrucciones para agentes
upsert_skill / delete_skillGestionar habilidades (token de agente)

Personas

HerramientaDescripción
list_personas / get_personaTu equipo de expertos (requiere código de sesión o VAULT_URL)
upsert_persona / delete_personaGestionar personas (token de agente)

Personas y habilidades: dónde viven

humanmcp-go es un framework. Los prompts de personas y los cuerpos de habilidades son tuyos — no se incluyen en este repositorio. Dos formas de suministrarlos:

  1. API del propietario / volumen montado — POST upsert_persona / upsert_skill con el EDIT_TOKEN, o coloca archivos JSON en ${CONTENT_DIR}/personas/ y ${CONTENT_DIR}/skills/ en el volumen del host.

  2. Bóveda externa (recomendada) — establece la variable de entorno VAULT_URL a un servidor que controles (por ejemplo, un FastAPI privado en tu tailnet). SkillStore obtiene GET ${VAULT_URL}/persona/{id} y GET ${VAULT_URL}/skill/{slug} bajo demanda con caché en memoria de 5 minutos. Permite que tus prompts sensibles permanezcan en tu máquina mientras el framework público los sirve.

Forma del JSON de persona (respuesta de bóveda):

{"id":"hermes","name":"Hermes","role":"Process Optimizer","prompt":"<full system prompt>"}

Forma del JSON de habilidad (respuesta de bóveda):

{"slug":"system-diagram","title":"...","description":"...","persona_id":"mira","tags":[...],"instructions":"<full playbook>"}

Cuando VAULT_URL es inalcanzable, bootstrap_session informa claramente la degradación (no recurre silenciosamente). Consulta internal/content/skill.go para la implementación de fetch/caché.

Listados

HerramientaDescripción
list_listings / read_listingExplorar anuncios clasificados
respond_to_listingEnviar respuesta a un listado
subscribe_listings / unsubscribe_listingsSuscripciones a webhooks

Federación

HerramientaDescripción
list_peersListar servidores humanMCP conocidos en la red
announce_peerAnunciar tu servidor para unirte a la red

Meta

HerramientaDescripción
about_humanmcpInformación del proyecto de código abierto

Conectar

{
  "mcpServers": {
    "kapoost": {
      "type": "http",
      "url": "https://kapoost.humanmcp.net/mcp"
    }
  }
}

Tipos de contenido

Piezas (archivos Markdown):

  • Tipos: poem, essay, note, artwork, image, contact
  • Acceso: public / members / locked
  • Puertas: challenge (Q&A), time, manual, trade
  • Licencias: free, cc-by, cc-by-nc, commercial, exclusive, all-rights
  • Precio: cadena de formato libre (por ejemplo, "500 PLN", "$200", "trueque")

Blobs (artefactos de datos tipados):

  • Tipos: image, contact, vector, document, dataset, capsule, provenance
  • Audiencia: [agent:claude, human:alice, agent:*]
  • Auto-firmados al guardar si SIGNING_PRIVATE_KEY está configurado
  • Los documentos de procedencia enlazan a piezas de arte (certificado, venta, opinión, tasación)

Ecosistema

  • Mercado humanMCP — búsqueda federada en todos los servidores humanMCP. Encuentra listados, ofertas, intercambios de humanos. Endpoint MCP · Fuente
  • humanNetwork — agregador estilo muro que muestra contenido cronológico de tus servidores humanMCP seguidos (stream.json preferido, respaldo MCP)

Contacto

Enlaces públicos: read_blob slug:"kapoost-contact" — nombre, handle, github, instagram, facebook, página de aterrizaje.

Correo privado: read_content slug:"kapoost-contact-private" — protegido. Responde el desafío para acceder.

Propiedad intelectual

Cada pieza está firmada con Ed25519. get_certificate devuelve:

  • Hash de contenido SHA-256
  • Firma Ed25519 + clave pública
  • Índice de Originalidad (0.0–1.0): ráfaga (Factor de Fano), densidad léxica (CTTR), entropía de Shannon, firma estructural — grados S/A/B/C/D
  • Términos de licencia y precio en sats (para licencias comerciales)

Descubrimiento y API REST

Descubrimiento de agentes:

  • /.well-known/agent.json — tarjeta de perfil de agente
  • /.well-known/mcp-server.json — descubrimiento de servidor MCP
  • /openapi.json — especificación OpenAPI 3.1 (ChatGPT, Gemini)
  • /llms.txt — preferencias LLM (firmadas)
  • /for-agents — página de incorporación de agentes
  • /connect — página de métodos de conexión

API REST (para agentes sin MCP):

  • GET /api/content — listar todas las piezas
  • GET /api/content/{slug} — leer pieza
  • GET /api/search?q=... — búsqueda de texto completo
  • GET /api/profile — nombre del autor, biografía, etiquetas
  • GET /api/blobs — listar artefactos de datos
  • GET /listings/feed.json — feed de listados
  • GET /content/stream.json — flujo de contenido unificado (piezas + listados, para humanNetwork)

SEO:

  • robots.txt, sitemap.xml, humans.txt

Límites

CampoLímite
Texto de mensaje / comentario2000 caracteres
Texto en línea de blob512 KB
Subida de archivo50 MB
Slug64 caracteres
Título256 caracteres

Características

  • i18n — alternancia de idioma PL/EN en la página principal (EN por defecto, almacenado en localStorage)
  • Asistente de licencias — reglas de uso por pieza: qué pueden hacer los humanos, qué pueden hacer los agentes de IA
  • Obras de arte — subida de fotos, medio, dimensiones, año, documentos de procedencia
  • Procedencia — adjuntar certificados, registros de venta, opiniones de expertos a obras de arte (firmados)
  • ask_human — los agentes pueden hacer preguntas al autor de forma privada (Q&A asíncrono, invisible al público)
  • Federación — descubrimiento de pares vía herramientas MCP list_peers / announce_peer y REST /api/peers
  • Secciones dinámicas — la página principal muestra solo secciones con contenido publicado
  • Precios de formato libre — cualquier moneda, cualquier formato ("500 PLN", "$200", "solo trueque")

Stack

  • Go 1.22, cero dependencias externas
  • Fly.io (región: waw), volumen persistente en /data
  • Firma Ed25519 (crypto de stdlib)
  • Archivos Markdown simples como base de datos
  • Sin JS excepto drag-drop de 8 líneas en la página /new

Despliegue en 1 clic

git clone https://github.com/kapoost/humanmcp-go.git
cd humanmcp-go
bash setup.sh

El script pregunta tu nombre y biografía, luego:

  • Crea una aplicación Fly.io (nivel gratuito)
  • Genera claves de firma Ed25519
  • Establece secretos y despliega
  • Imprime tu token de inicio de sesión y enlace de seguimiento en 1 clic

Listo en ~2 minutos. Obtienes:

  • https://yourname.humanmcp.net — tu servidor
  • https://yourname.humanmcp.net/connect — comparte con amigos
  • https://humanmcp.net/humannetwork.html?add=https://yourname.humanmcp.net — seguimiento en 1 clic

Ejecutar localmente

go build ./cmd/server/
EDIT_TOKEN=secret AUTHOR_NAME=yourname ./server

Despliegue manual

fly launch --name yourname-humanmcp
fly secrets set EDIT_TOKEN=secret AUTHOR_NAME=yourname
fly deploy

Claves de firma (opcional pero recomendado)

go run ./cmd/keygen/
fly secrets set SIGNING_PRIVATE_KEY="..." SIGNING_PUBLIC_KEY="..."

Futuro

  • Incrustación de manifiesto C2PA para archivos blob (cuando la cadena de confianza CA se abra a individuos)
  • Puerta de pago de Lightning Network para licencias comerciales
  • Puerta conversacional puntuada (el agente trae clave API, Claude evalúa respuestas)
  • Limitación de tasa IP + tokens de participación para anti-spam

Pruebas

136 pruebas en suites de contenido, MCP y subida/firma/licencia.

go test ./...