humanmcp-go
Personal MCP server — publish poems, images and data with Ed25519 signatures. AI agents can read, verify and license your work.
Documentation
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:
1. Owner API / mounted volume — POST `upsert_persona` / `upsert_skill` with the `EDIT_TOKEN`, or drop JSON files into `${CONTENT_DIR}/personas/` and `${CONTENT_DIR}/skills/` on the host volume.
2. External vault (recommended) — set `VAULT_URL` env to a server you control (e.g. a private FastAPI on your tailnet). SkillStore fetches `GET ${VAULT_URL}/persona/{id}` and `GET ${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":""}Skill JSON shape (vault response):
{"slug":"system-diagram","title":"...","description":"...","persona_id":"mira","tags":[...],"instructions":""}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 pieces
- `GET /api/content/{slug}` — read piece
- `GET /api/search?q=...` — full-text search
- `GET /api/profile` — author name, bio, tags
- `GET /api/blobs` — list data artifacts
- `GET /listings/feed.json` — listings feed
- `GET /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_peer` MCP tools and `/api/peers` REST
- 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 `/new` page
1-click deploy
git clone https://github.com/kapoost/humanmcp-go.git
cd humanmcp-go
bash setup.shThe 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 server
- `https://yourname.humanmcp.net/connect` — share with friends
- `https://humanmcp.net/humannetwork.html?add=https://yourname.humanmcp.net` — 1-click follow
Run locally
go build ./cmd/server/
EDIT_TOKEN=secret AUTHOR_NAME=yourname ./serverManual deploy
fly launch --name yourname-humanmcp
fly secrets set EDIT_TOKEN=secret AUTHOR_NAME=yourname
fly deploySigning 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 ./...Frequently asked questions
What is humanmcp-go?
humanmcp-go is Personal MCP server — publish poems, images and data with Ed25519 signatures. AI agents can read, verify and license your work.
How do I install humanmcp-go?
Open the GitHub repository and follow its README. Most MCP servers are added to your client's MCP config, then called by your agent.
Is humanmcp-go open source?
Yes — it is hosted on GitHub at https://github.com/kapoost/humanmcp-go and has 1 stars.
Related MCP tools
The missing open-source Kubernetes UI with a built-in MCP server for AI agents. See what's broken, why, and what changed. Issues, Topology, event timeline, Helm, GitOps, live service traffic, and cluster audits - all in one Go binary.
One place to manage & connect to all your MCP servers
mcp-language-server gives MCP enabled clients access semantic tools like get definition, references, rename, and diagnostics.
Official remote MCP server for Atlassian. Securely connect Jira, Confluence, Jira Service Management, Bitbucket, and Compass to Claude, ChatGPT, Cursor, VS Code, and other AI tools using OAuth 2.1 or API tokens.
Open-source coding agent memory. Records issues, attempts, fixes and decisions, then warns your agent before it repeats an approach that already failed. Native MCP server for Claude Code, Cursor, Antigravity and Codex. 100% local, no cloud, no telemetry. MIT.
Open-source AI agent firewall for MCP security and agent egress. Scans mediated HTTP, MCP, A2A, and WebSocket traffic for exfiltration, SSRF, and prompt injection, and emits mediator-signed action receipts: verifiable audit evidence from outside the agent.
Run your own MCP server? See who uses it and what to fix.
Measure it with TrackMCP