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
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
| Herramienta | Descripción |
|---|---|
get_author_profile | Quién es kapoost — biografía, resumen de contenido, cómo navegar |
list_content | Explorar todas las piezas con metadatos, filtrar por tipo o etiqueta |
read_content | Leer una pieza — respeta todas las puertas de acceso |
search_content | Búsqueda de texto completo en todas las piezas |
request_access | Obtener detalles de puerta para contenido bloqueado |
submit_answer | Desbloquear contenido protegido por desafío |
list_blobs | Explorar artefactos de datos tipados |
read_blob | Leer imagen, contacto, conjunto de datos, vector (respeta audiencia) |
PI y Verificación
| Herramienta | Descripción |
|---|---|
verify_content | Verificar firma Ed25519 |
get_certificate | Certificado IP completo: licencia, precio, índice de originalidad, hash, firma |
upgrade_timestamp | Mejorar prueba OTS a anclada en Bitcoin |
Interacción
| Herramienta | Descripción |
|---|---|
request_license | Declarar uso previsto, obtener términos, registrado para auditoría |
leave_comment | Dejar una reacción — visible en el panel del autor |
leave_message | Enviar una nota directa (máx. 2000 caracteres, URLs bienvenidas) |
ask_human | Hacer una pregunta al autor (privada, asíncrona — devuelve question_id) |
get_answer | Comprobar si el autor respondió tu pregunta (por question_id) |
Sesión y Contexto
| Herramienta | Descripción |
|---|---|
bootstrap_session | Desbloquear contexto privado con código de sesión |
recall | Recuperar recuerdos guardados |
remember | Guardar observaciones |
query_vault | Buscar en bóveda de conocimiento personal |
list_vault | Listar documentos de la bóveda |
Habilidades
| Herramienta | Descripción |
|---|---|
list_skills / get_skill | Catálogo de instrucciones para agentes |
upsert_skill / delete_skill | Gestionar habilidades (token de agente) |
Personas
| Herramienta | Descripción |
|---|---|
list_personas / get_persona | Tu equipo de expertos (requiere código de sesión o VAULT_URL) |
upsert_persona / delete_persona | Gestionar 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:
-
API del propietario / volumen montado — POST
upsert_persona/upsert_skillcon elEDIT_TOKEN, o coloca archivos JSON en${CONTENT_DIR}/personas/y${CONTENT_DIR}/skills/en el volumen del host. -
Bóveda externa (recomendada) — establece la variable de entorno
VAULT_URLa un servidor que controles (por ejemplo, un FastAPI privado en tu tailnet). SkillStore obtieneGET ${VAULT_URL}/persona/{id}yGET ${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
| Herramienta | Descripción |
|---|---|
list_listings / read_listing | Explorar anuncios clasificados |
respond_to_listing | Enviar respuesta a un listado |
subscribe_listings / unsubscribe_listings | Suscripciones a webhooks |
Federación
| Herramienta | Descripción |
|---|---|
list_peers | Listar servidores humanMCP conocidos en la red |
announce_peer | Anunciar tu servidor para unirte a la red |
Meta
| Herramienta | Descripción |
|---|---|
about_humanmcp | Informació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 piezasGET /api/content/{slug}— leer piezaGET /api/search?q=...— búsqueda de texto completoGET /api/profile— nombre del autor, biografía, etiquetasGET /api/blobs— listar artefactos de datosGET /listings/feed.json— feed de listadosGET /content/stream.json— flujo de contenido unificado (piezas + listados, para humanNetwork)
SEO:
robots.txt,sitemap.xml,humans.txt
Límites
| Campo | Límite |
|---|---|
| Texto de mensaje / comentario | 2000 caracteres |
| Texto en línea de blob | 512 KB |
| Subida de archivo | 50 MB |
| Slug | 64 caracteres |
| Título | 256 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_peery 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 servidorhttps://yourname.humanmcp.net/connect— comparte con amigoshttps://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 ./...