humanMCP
A personal content server that lets individuals publish content with cryptographic proof of authorship and explicit license terms, allowing AI agents to interact via the Model Context Protocol.
README
humanMCP
A personal content server speaking Model Context Protocol (MCP/JSON-RPC 2.0).
Live: https://kapoost.humanmcp.net Landing page: https://humanmcp.net Marketplace: https://marketplace.humanmcp.net Network explorer: https://humanmcp.net/humannetwork.html Author: kapoost (Łukasz Kapuśniak) — poet, builder, sailor. Warsaw / Malta.
What it is
humanMCP lets any human publish content and services with cryptographic proof of authorship, explicit license terms, and full control over access. Writers, artists, consultants, craftspeople, galleries, freelancers — anyone who creates valuable work. AI agents connect via MCP and interact with your content natively.
Every human can run their own instance. One server, one person, their rules.
MCP Tools (37+)
Content & Discovery
| Tool | Description |
|---|---|
get_author_profile |
Who is kapoost — bio, content overview, how to browse |
list_content |
Browse all pieces with metadata, filter by type or tag |
read_content |
Read a piece — respects all access gates |
search_content |
Full-text search across all pieces |
request_access |
Get gate details for locked content |
submit_answer |
Unlock challenge-gated content |
list_blobs |
Browse typed data artifacts |
read_blob |
Read image, contact, dataset, vector (respects audience) |
IP & Verification
| Tool | Description |
|---|---|
verify_content |
Verify Ed25519 signature |
get_certificate |
Full IP certificate: license, price, originality index, hash, signature |
upgrade_timestamp |
Upgrade OTS proof to Bitcoin-anchored |
Interaction
| Tool | Description |
|---|---|
request_license |
Declare intended use, get terms, logged for audit |
leave_comment |
Leave a reaction — visible in author dashboard |
leave_message |
Send a direct note (max 2000 chars, URLs welcome) |
ask_human |
Ask the author a question (private, async — returns question_id) |
get_answer |
Check if the author answered your question (by question_id) |
Session & Context
| Tool | Description |
|---|---|
bootstrap_session |
Unlock private context with session code |
recall |
Retrieve saved memories |
remember |
Save observations |
query_vault |
Search personal knowledge vault |
list_vault |
List vault documents |
Skills
| Tool | Description |
|---|---|
list_skills / get_skill |
Agent instruction catalog |
upsert_skill / delete_skill |
Manage skills (agent token) |
Personas
| Tool | Description |
|---|---|
list_personas / get_persona |
Your expert team (requires session code or VAULT_URL) |
upsert_persona / delete_persona |
Manage personas (agent token) |
Personas & skills: where they live
humanmcp-go is a framework. Persona prompts and skill bodies are yours — they don't ship in this repo. Two ways to supply them:
-
Owner API / mounted volume — POST
upsert_persona/upsert_skillwith theEDIT_TOKEN, or drop JSON files into${CONTENT_DIR}/personas/and${CONTENT_DIR}/skills/on the host volume. -
External vault (recommended) — set
VAULT_URLenv to a server you control (e.g. a private FastAPI on your tailnet). SkillStore fetchesGET ${VAULT_URL}/persona/{id}andGET ${VAULT_URL}/skill/{slug}on demand with a 5min in-memory cache. Lets your sensitive prompts stay on your machine while the public framework serves them.
Persona JSON shape (vault response):
{"id":"hermes","name":"Hermes","role":"Process Optimizer","prompt":"<full system prompt>"}
Skill JSON shape (vault response):
{"slug":"system-diagram","title":"...","description":"...","persona_id":"mira","tags":[...],"instructions":"<full playbook>"}
When VAULT_URL is unreachable, bootstrap_session loudly reports the downgrade (won't silently fall back). See internal/content/skill.go for the fetch/cache implementation.
Listings
| Tool | Description |
|---|---|
list_listings / read_listing |
Browse classified ads |
respond_to_listing |
Send response to listing |
subscribe_listings / unsubscribe_listings |
Webhook subscriptions |
Federation
| Tool | Description |
|---|---|
list_peers |
List known humanMCP servers in the network |
announce_peer |
Announce your server to join the network |
Meta
| Tool | Description |
|---|---|
about_humanmcp |
Open-source project info |
Connect
{
"mcpServers": {
"kapoost": {
"type": "http",
"url": "https://kapoost.humanmcp.net/mcp"
}
}
}
Content types
Pieces (Markdown files):
- Types:
poem,essay,note,artwork,image,contact - Access:
public/members/locked - Gates:
challenge(Q&A),time,manual,trade - Licenses:
free,cc-by,cc-by-nc,commercial,exclusive,all-rights - Price: free-form string (e.g. "500 PLN", "$200", "trade")
Blobs (typed data artifacts):
- Types:
image,contact,vector,document,dataset,capsule,provenance - Audience:
[agent:claude, human:alice, agent:*] - Auto-signed on save if SIGNING_PRIVATE_KEY is set
- Provenance documents link to artwork pieces (certificate, sale, opinion, appraisal)
Ecosystem
- humanMCP Marketplace — federated search across all humanMCP servers. Find listings, offers, trades by humans. MCP endpoint · Source
- humanNetwork — wall-style aggregator showing chronological content from your followed humanMCP servers (stream.json preferred, MCP fallback)
Contact
Public links: read_blob slug:"kapoost-contact" — name, handle, github, instagram, facebook, landing page.
Private email: read_content slug:"kapoost-contact-private" — gated. Answer the challenge to access.
Intellectual property
Every piece is signed with Ed25519. get_certificate returns:
- SHA-256 content hash
- Ed25519 signature + public key
- Originality Index (0.0–1.0): burstiness (Fano Factor), lexical density (CTTR), Shannon entropy, structural signature — grades S/A/B/C/D
- License terms and price in sats (for commercial licenses)
Discovery & REST API
Agent discovery:
/.well-known/agent.json— agent profile card/.well-known/mcp-server.json— MCP server discovery/openapi.json— OpenAPI 3.1 spec (ChatGPT, Gemini)/llms.txt— LLM preferences (signed)/for-agents— agent onboarding page/connect— connection methods page
REST API (for agents without MCP):
GET /api/content— list all piecesGET /api/content/{slug}— read pieceGET /api/search?q=...— full-text searchGET /api/profile— author name, bio, tagsGET /api/blobs— list data artifactsGET /listings/feed.json— listings feedGET /content/stream.json— unified content stream (pieces + listings, for humanNetwork)
SEO:
robots.txt,sitemap.xml,humans.txt
Limits
| Field | Limit |
|---|---|
| Message / comment text | 2000 chars |
| Blob inline text | 512 KB |
| File upload | 50 MB |
| Slug | 64 chars |
| Title | 256 chars |
Features
- i18n — PL/EN language toggle on main page (EN default, stored in localStorage)
- License wizard — per-piece usage rules: what humans may do, what AI agents may do
- Artworks — photo upload, medium, dimensions, year, provenance documents
- Provenance — attach certificates, sale records, expert opinions to artworks (signed)
- ask_human — agents can ask the author questions privately (async Q&A, invisible to public)
- Federation — peer discovery via
list_peers/announce_peerMCP tools and/api/peersREST - Dynamic sections — main page shows only sections with published content
- Free-form pricing — any currency, any format ("500 PLN", "$200", "trade only")
Stack
- Go 1.22, zero external dependencies
- Fly.io (region: waw), persistent volume at
/data - Ed25519 signing (stdlib crypto)
- Plain Markdown files as database
- No JS except 8-line drag-drop on
/newpage
1-click deploy
git clone https://github.com/kapoost/humanmcp-go.git
cd humanmcp-go
bash setup.sh
The script asks for your name and bio, then:
- Creates a Fly.io app (free tier)
- Generates Ed25519 signing keys
- Sets secrets and deploys
- Prints your login token and 1-click follow link
Done in ~2 minutes. You get:
https://yourname.humanmcp.net— your serverhttps://yourname.humanmcp.net/connect— share with friendshttps://humanmcp.net/humannetwork.html?add=https://yourname.humanmcp.net— 1-click follow
Run locally
go build ./cmd/server/
EDIT_TOKEN=secret AUTHOR_NAME=yourname ./server
Manual deploy
fly launch --name yourname-humanmcp
fly secrets set EDIT_TOKEN=secret AUTHOR_NAME=yourname
fly deploy
Signing keys (optional but recommended)
go run ./cmd/keygen/
fly secrets set SIGNING_PRIVATE_KEY="..." SIGNING_PUBLIC_KEY="..."
Future
- C2PA manifest embedding for blob files (when CA trust chain opens to individuals)
- Lightning Network payment gate for commercial licenses
- Scored conversational gate (agent brings API key, Claude evaluates answers)
- IP rate limiting + engagement tokens for anti-spam
Tests
136 tests across content, MCP, and upload/signature/license suites.
go test ./...
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.