humanMCP

Servidor MCP pessoal para humanos. Publique poesia, ensaios, anúncios com assinaturas Ed25519. Armazene habilidades e memórias. Sessão de inicialização desbloqueia equipe especializada. Apenas stdlib Go, zero dependências.

Documentação

humanMCP

smithery badge

Um servidor de conteúdo pessoal que fala Model Context Protocol (MCP/JSON-RPC 2.0).

Ao vivo: https://kapoost.humanmcp.net Página inicial: https://humanmcp.net Marketplace: https://marketplace.humanmcp.net Explorador de rede: https://humanmcp.net/humannetwork.html Autor: kapoost (Łukasz Kapuśniak) — poeta, construtor, marinheiro. Varsóvia / Malta.

O que é

O humanMCP permite que qualquer pessoa publique conteúdo e serviços com prova criptográfica de autoria, termos de licença explícitos e controle total sobre o acesso. Escritores, artistas, consultores, artesãos, galerias, freelancers — qualquer pessoa que crie trabalho valioso. Agentes de IA se conectam via MCP e interagem com seu conteúdo de forma nativa.

Cada pessoa pode executar sua própria instância. Um servidor, uma pessoa, suas regras.

Ferramentas MCP (37+)

Conteúdo e Descoberta

FerramentaDescrição
get_author_profileQuem é kapoost — bio, visão geral do conteúdo, como navegar
list_contentNavegue por todas as peças com metadados, filtre por tipo ou tag
read_contentLeia uma peça — respeita todos os portões de acesso
search_contentBusca de texto completo em todas as peças
request_accessObtenha detalhes do portão para conteúdo bloqueado
submit_answerDesbloqueie conteúdo protegido por desafio
list_blobsNavegue por artefatos de dados tipados
read_blobLeia imagem, contato, conjunto de dados, vetor (respeita o público)

Propriedade Intelectual e Verificação

FerramentaDescrição
verify_contentVerifique assinatura Ed25519
get_certificateCertificado IP completo: licença, preço, índice de originalidade, hash, assinatura
upgrade_timestampAtualize prova OTS para ancorada em Bitcoin

Interação

FerramentaDescrição
request_licenseDeclare uso pretendido, obtenha termos, registrado para auditoria
leave_commentDeixe uma reação — visível no painel do autor
leave_messageEnvie uma nota direta (máx. 2000 caracteres, URLs bem-vindas)
ask_humanFaça uma pergunta ao autor (privada, assíncrona — retorna question_id)
get_answerVerifique se o autor respondeu sua pergunta (por question_id)

Sessão e Contexto

FerramentaDescrição
bootstrap_sessionDesbloqueie contexto privado com código de sessão
recallRecupere memórias salvas
rememberSalve observações
query_vaultPesquise no cofre de conhecimento pessoal
list_vaultListe documentos do cofre

Habilidades

FerramentaDescrição
list_skills / get_skillCatálogo de instruções para agentes
upsert_skill / delete_skillGerencie habilidades (token de agente)

Personas

FerramentaDescrição
list_personas / get_personaSua equipe de especialistas (requer código de sessão ou VAULT_URL)
upsert_persona / delete_personaGerencie personas (token de agente)

Personas e habilidades: onde elas vivem

humanmcp-go é um framework. Os prompts de persona e os corpos de habilidade são seus — eles não vêm neste repositório. Duas formas de fornecê-los:

  1. API do proprietário / volume montado — POST upsert_persona / upsert_skill com o EDIT_TOKEN, ou coloque arquivos JSON em ${CONTENT_DIR}/personas/ e ${CONTENT_DIR}/skills/ no volume do host.

  2. Cofre externo (recomendado) — defina a env VAULT_URL para um servidor que você controla (ex.: um FastAPI privado na sua tailnet). O SkillStore busca GET ${VAULT_URL}/persona/{id} e GET ${VAULT_URL}/skill/{slug} sob demanda com cache em memória de 5min. Isso permite que seus prompts sensíveis permaneçam na sua máquina enquanto o framework público os serve.

Formato JSON de persona (resposta do cofre):

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

Formato JSON de habilidade (resposta do cofre):

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

Quando VAULT_URL está inacessível, bootstrap_session reporta claramente o rebaixamento (não fará fallback silencioso). Veja internal/content/skill.go para a implementação de busca/cache.

Listagens

FerramentaDescrição
list_listings / read_listingNavegue por anúncios classificados
respond_to_listingEnvie resposta a uma listagem
subscribe_listings / unsubscribe_listingsAssinaturas de webhook

Federação

FerramentaDescrição
list_peersListe servidores humanMCP conhecidos na rede
announce_peerAnuncie seu servidor para entrar na rede

Meta

FerramentaDescrição
about_humanmcpInformações do projeto open-source

Conectar

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

Tipos de conteúdo

Peças (arquivos Markdown):

  • Tipos: poem, essay, note, artwork, image, contact
  • Acesso: public / members / locked
  • Portões: challenge (Q&A), time, manual, trade
  • Licenças: free, cc-by, cc-by-nc, commercial, exclusive, all-rights
  • Preço: string de formato livre (ex.: "500 PLN", "$200", "troca")

Blobs (artefatos de dados tipados):

  • Tipos: image, contact, vector, document, dataset, capsule, provenance
  • Público: [agent:claude, human:alice, agent:*]
  • Auto-assinados ao salvar se SIGNING_PRIVATE_KEY estiver definido
  • Documentos de proveniência vinculam-se a peças de arte (certificado, venda, opinião, avaliação)

Ecossistema

  • Marketplace humanMCP — busca federada em todos os servidores humanMCP. Encontre listagens, ofertas, trocas feitas por humanos. Endpoint MCP · Código-fonte
  • humanNetwork — agregador estilo mural mostrando conteúdo cronológico dos seus servidores humanMCP seguidos (stream.json preferido, fallback MCP)

Contato

Links públicos: read_blob slug:"kapoost-contact" — nome, handle, github, instagram, facebook, página inicial.

E-mail privado: read_content slug:"kapoost-contact-private" — protegido. Responda ao desafio para acessar.

Propriedade intelectual

Cada peça é assinada com Ed25519. get_certificate retorna:

  • Hash SHA-256 do conteúdo
  • Assinatura Ed25519 + chave pública
  • Índice de Originalidade (0.0–1.0): burstiness (Fator de Fano), densidade lexical (CTTR), entropia de Shannon, assinatura estrutural — notas S/A/B/C/D
  • Termos de licença e preço em sats (para licenças comerciais)

Descoberta e API REST

Descoberta de agentes:

  • /.well-known/agent.json — cartão de perfil do agente
  • /.well-known/mcp-server.json — descoberta de servidor MCP
  • /openapi.json — especificação OpenAPI 3.1 (ChatGPT, Gemini)
  • /llms.txt — preferências de LLM (assinadas)
  • /for-agents — página de onboarding do agente
  • /connect — página de métodos de conexão

API REST (para agentes sem MCP):

  • GET /api/content — lista todas as peças
  • GET /api/content/{slug} — lê uma peça
  • GET /api/search?q=... — busca de texto completo
  • GET /api/profile — nome do autor, bio, tags
  • GET /api/blobs — lista artefatos de dados
  • GET /listings/feed.json — feed de listagens
  • GET /content/stream.json — stream de conteúdo unificado (peças + listagens, para humanNetwork)

SEO:

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

Limites

CampoLimite
Texto de mensagem / comentário2000 caracteres
Texto inline de blob512 KB
Upload de arquivo50 MB
Slug64 caracteres
Título256 caracteres

Recursos

  • i18n — alternância de idioma PL/EN na página principal (EN padrão, armazenado em localStorage)
  • Assistente de licença — regras de uso por peça: o que humanos podem fazer, o que agentes de IA podem fazer
  • Obras de arte — upload de foto, meio, dimensões, ano, documentos de proveniência
  • Proveniência — anexe certificados, registros de venda, opiniões de especialistas a obras de arte (assinados)
  • ask_human — agentes podem fazer perguntas ao autor de forma privada (Q&A assíncrono, invisível ao público)
  • Federação — descoberta de pares via ferramentas MCP list_peers / announce_peer e REST /api/peers
  • Seções dinâmicas — a página principal mostra apenas seções com conteúdo publicado
  • Precificação de formato livre — qualquer moeda, qualquer formato ("500 PLN", "$200", "somente troca")

Stack

  • Go 1.22, zero dependências externas
  • Fly.io (região: waw), volume persistente em /data
  • Assinatura Ed25519 (crypto da stdlib)
  • Arquivos Markdown simples como banco de dados
  • Sem JS exceto drag-drop de 8 linhas na página /new

Deploy em 1 clique

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

O script pergunta seu nome e bio, então:

  • Cria um app Fly.io (plano gratuito)
  • Gera chaves de assinatura Ed25519
  • Define segredos e faz o deploy
  • Imprime seu token de login e link de seguir em 1 clique

Pronto em ~2 minutos. Você recebe:

  • https://yourname.humanmcp.net — seu servidor
  • https://yourname.humanmcp.net/connect — compartilhe com amigos
  • https://humanmcp.net/humannetwork.html?add=https://yourname.humanmcp.net — seguir em 1 clique

Executar localmente

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

Deploy manual

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

Chaves de assinatura (opcional, mas recomendado)

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

Futuro

  • Incorporação de manifesto C2PA para arquivos blob (quando a cadeia de confiança de CA abrir para indivíduos)
  • Portão de pagamento via Lightning Network para licenças comerciais
  • Portão conversacional com pontuação (agente traz chave de API, Claude avalia respostas)
  • Rate limiting de IP + tokens de engajamento para anti-spam

Testes

136 testes nas suítes de conteúdo, MCP e upload/assinatura/licença.

go test ./...