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
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
| Ferramenta | Descrição |
|---|---|
get_author_profile | Quem é kapoost — bio, visão geral do conteúdo, como navegar |
list_content | Navegue por todas as peças com metadados, filtre por tipo ou tag |
read_content | Leia uma peça — respeita todos os portões de acesso |
search_content | Busca de texto completo em todas as peças |
request_access | Obtenha detalhes do portão para conteúdo bloqueado |
submit_answer | Desbloqueie conteúdo protegido por desafio |
list_blobs | Navegue por artefatos de dados tipados |
read_blob | Leia imagem, contato, conjunto de dados, vetor (respeita o público) |
Propriedade Intelectual e Verificação
| Ferramenta | Descrição |
|---|---|
verify_content | Verifique assinatura Ed25519 |
get_certificate | Certificado IP completo: licença, preço, índice de originalidade, hash, assinatura |
upgrade_timestamp | Atualize prova OTS para ancorada em Bitcoin |
Interação
| Ferramenta | Descrição |
|---|---|
request_license | Declare uso pretendido, obtenha termos, registrado para auditoria |
leave_comment | Deixe uma reação — visível no painel do autor |
leave_message | Envie uma nota direta (máx. 2000 caracteres, URLs bem-vindas) |
ask_human | Faça uma pergunta ao autor (privada, assíncrona — retorna question_id) |
get_answer | Verifique se o autor respondeu sua pergunta (por question_id) |
Sessão e Contexto
| Ferramenta | Descrição |
|---|---|
bootstrap_session | Desbloqueie contexto privado com código de sessão |
recall | Recupere memórias salvas |
remember | Salve observações |
query_vault | Pesquise no cofre de conhecimento pessoal |
list_vault | Liste documentos do cofre |
Habilidades
| Ferramenta | Descrição |
|---|---|
list_skills / get_skill | Catálogo de instruções para agentes |
upsert_skill / delete_skill | Gerencie habilidades (token de agente) |
Personas
| Ferramenta | Descrição |
|---|---|
list_personas / get_persona | Sua equipe de especialistas (requer código de sessão ou VAULT_URL) |
upsert_persona / delete_persona | Gerencie 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:
-
API do proprietário / volume montado — POST
upsert_persona/upsert_skillcom oEDIT_TOKEN, ou coloque arquivos JSON em${CONTENT_DIR}/personas/e${CONTENT_DIR}/skills/no volume do host. -
Cofre externo (recomendado) — defina a env
VAULT_URLpara um servidor que você controla (ex.: um FastAPI privado na sua tailnet). O SkillStore buscaGET ${VAULT_URL}/persona/{id}eGET ${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
| Ferramenta | Descrição |
|---|---|
list_listings / read_listing | Navegue por anúncios classificados |
respond_to_listing | Envie resposta a uma listagem |
subscribe_listings / unsubscribe_listings | Assinaturas de webhook |
Federação
| Ferramenta | Descrição |
|---|---|
list_peers | Liste servidores humanMCP conhecidos na rede |
announce_peer | Anuncie seu servidor para entrar na rede |
Meta
| Ferramenta | Descrição |
|---|---|
about_humanmcp | Informaçõ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çasGET /api/content/{slug}— lê uma peçaGET /api/search?q=...— busca de texto completoGET /api/profile— nome do autor, bio, tagsGET /api/blobs— lista artefatos de dadosGET /listings/feed.json— feed de listagensGET /content/stream.json— stream de conteúdo unificado (peças + listagens, para humanNetwork)
SEO:
robots.txt,sitemap.xml,humans.txt
Limites
| Campo | Limite |
|---|---|
| Texto de mensagem / comentário | 2000 caracteres |
| Texto inline de blob | 512 KB |
| Upload de arquivo | 50 MB |
| Slug | 64 caracteres |
| Título | 256 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_peere 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 servidorhttps://yourname.humanmcp.net/connect— compartilhe com amigoshttps://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 ./...