humanMCP — kapoost

io.github.kapoost由 GitHub 帳號 kapoost 發布v0.3.0更新於 Oct 25, 2026

Personal MCP server for humans who create. Proof of authorship, license control.

發布方自己的服務:TAP

已驗證Streamable HTTP可網頁執行知識與記憶溝通與協作商業與電商

概覽

AI 產生的概覽

個人發布伺服器,讓助理瀏覽、搜尋並閱讀某位作者帶簽名的作品、申請授權,並留言或提問。

可以做什麼
瀏覽與搜尋已發布的作品、合集和具型別的資料產物,讀取時遵守存取限制,並可提交挑戰答案與存取申請來解鎖受限內容。取得作者身分憑證、來源紀錄與授權條款,並聲明作品的使用意圖。留下評論、傳送較長的留言,以及提交非同步問題供作者稍後回覆。用工作階段碼解鎖受工作階段保護的內容,然後讀取與儲存記憶,並查看人格與技能目錄。提供 bearer 權杖時可搜尋、列出並讀取作者私人保管庫中的文件。
適用情境
適合助理需要處理某位創作者已發布內容目錄的情境:尋找與閱讀作品、核對作者身分與授權,或非同步聯絡作者。也適合想把自己工作流程接上作者人格提示詞與技能手冊的代理。
執行需求
遠端 streamable HTTP 端點,不需要本機執行環境或安裝套件。公開工具未宣告驗證,但受工作階段保護的工具需要 bootstrap_session 提供的工作階段碼,保管庫工具需要 Authorization bearer 權杖(編輯權杖或好友權杖)。僅限擁有者的工具需要擁有者權杖。
安裝前請注意
多個工具會寫入或傳送資料:評論、留言、問題、授權聲明、存取申請、記憶與保管庫寫入都會被記錄,部分還會進入稽核日誌。保管庫存取需要 bearer 權杖,會在其範圍內揭露私人文件。部分作品受付款條款、時間鎖或交換規則限制,授權可能附帶價格。問題與留言由作者依自己的時間安排回覆。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 humanMCP — kapoost,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.kapoost%2Fhumanmcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

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

README

humanMCP

[smithery badge]

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

ToolDescription
get_author_profileWho is kapoost — bio, content overview, how to browse
list_contentBrowse all pieces with metadata, filter by type or tag
read_contentRead a piece — respects all access gates
search_contentFull-text search across all pieces
request_accessGet gate details for locked content
submit_answerUnlock challenge-gated content
list_blobsBrowse typed data artifacts
read_blobRead image, contact, dataset, vector (respects audience)

IP & Verification

ToolDescription
verify_contentVerify Ed25519 signature
get_certificateFull IP certificate: license, price, originality index, hash, signature
upgrade_timestampUpgrade OTS proof to Bitcoin-anchored

Interaction

ToolDescription
request_licenseDeclare intended use, get terms, logged for audit
leave_commentLeave a reaction — visible in author dashboard
leave_messageSend a direct note (max 2000 chars, URLs welcome)
ask_humanAsk the author a question (private, async — returns question_id)
get_answerCheck if the author answered your question (by question_id)

Session & Context

ToolDescription
bootstrap_sessionUnlock private context with session code
recallRetrieve saved memories
rememberSave observations
query_vaultSearch personal knowledge vault
list_vaultList vault documents

Skills

ToolDescription
list_skills / get_skillAgent instruction catalog
upsert_skill / delete_skillManage skills (agent token)

Personas

ToolDescription
list_personas / get_personaYour expert team (requires session code or VAULT_URL)
upsert_persona / delete_personaManage 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):

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

Skill JSON shape (vault response):

json
{"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

ToolDescription
list_listings / read_listingBrowse classified ads
respond_to_listingSend response to listing
subscribe_listings / unsubscribe_listingsWebhook subscriptions

Federation

ToolDescription
list_peersList known humanMCP servers in the network
announce_peerAnnounce your server to join the network

Meta

ToolDescription
about_humanmcpOpen-source project info

Connect

json
{  "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

FieldLimit
Message / comment text2000 chars
Blob inline text512 KB
File upload50 MB
Slug64 chars
Title256 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

bash
git clone https://github.com/kapoost/humanmcp-go.gitcd humanmcp-gobash 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 server
  • https://yourname.humanmcp.net/connect — share with friends
  • https://humanmcp.net/humannetwork.html?add=https://yourname.humanmcp.net — 1-click follow

Run locally

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

Manual deploy

bash
fly launch --name yourname-humanmcpfly secrets set EDIT_TOKEN=secret AUTHOR_NAME=yournamefly deploy

Signing keys (optional but recommended)

bash
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.

bash
go test ./...

來源:README.md,提交 d5b43b9

工具

43

about_humanmcp

Self-description of this humanMCP server. Deterministic, no bootstrap required — call this first to decide whether the rest of the API is relevant.

無需輸入參數。

ask_human

Submit an async question to kapoost. Returns an ID. Rate-limited 5/hr/IP. Poll fetch_answer later — kapoost answers on his own schedule (minutes, hours, or days). ALWAYS set `from` to a stable name for yourself: with it, sending the same question again returns the answer instead of creating a duplicate, which is the reliable path when your runtime cannot keep the ID between sessions.

輸入參數fromcontextquestion必填

bootstrap_session

Validate the Polish poetry session code, then emit the full team briefing (guardian + style + personas + skills + persist block). Rate-limited 5/min/IP.

輸入參數code必填

delete_skill

Delete a skill by slug. Owner-only: requires Authorization: Bearer <token>.

輸入參數slug必填

fetch_answer

Poll for an answer to an ask_human question. Marks the question as fetched the first time an answer is returned. Rate-limited 30/hr/IP.

輸入參數id必填

fetch_narada_result

Poll a narada job by ID. Statuses: pending, running, done, failed. When done, returns all persona voices.

輸入參數id必填

get_author_profile

Author identity, bio, and a browsing cheatsheet. Records a profile-view event.

無需輸入參數。

get_certificate

Return a formatted copyright/authenticity certificate for a piece.

輸入參數slug必填

get_persona

Return one persona's full prompt by slug. Session-gated except for Hodor (guardian rules must always apply). Pass session_token if your client cannot set an Authorization header.

輸入參數slug必填session_token

get_persona_journal

Read a persona's raw reflection journal. Owner-only — the journal is a private feedback loop, not for external callers.

輸入參數slug必填

get_skill

Return one skill's full body by slug. Session-gated except for -public suffixed skills (guardian bypass). Pass session_token if your client cannot set an Authorization header.

輸入參數slug必填session_token

leave_comment

Attach a short comment (≤280 chars) to a piece kapoost has published. Truncated silently past the limit.

輸入參數fromslug必填text必填

leave_message

Send kapoost a longer message. context REQUIRED (why you're writing / which piece / which task). contact optional — without it no reply is possible.

輸入參數fromtext必填contactcontext必填regarding

list_blobs

List typed data artifacts (images, contact, vectors, documents, datasets, capsules). Filter by blob_type. Readable-column reflects caller_kind + caller_id vs audience.

輸入參數blob_typecaller_idcaller_kind

list_collection

List works kapoost owns but did NOT create. Public items always; members-only surface only after session activation.

輸入參數session_token

list_content

List published pieces (slug, title, type, access, tags). Optional type/tag filters.

輸入參數tagtype

list_personas

List every persona (slug, title, role). Full prompts unlock after bootstrap_session.

無需輸入參數。

list_provenance

List provenance items (chain of custody, certificates, invoices) for an artwork slug. Tries piece then collection.

輸入參數slug必填

list_skill_groups

Index of every skill tag in use, with slugs per group. Public — no bootstrap required.

無需輸入參數。

list_skills

List skills (slug, category, title, tags). Optional category / tag filters.

輸入參數tagcategory

load_skill_group

Bulk-fetch every skill tagged with the given group name. Respects the bootstrap gate per-skill: -public suffix bypasses, everything else needs session.

輸入參數name必填session_token

mysloodsiewnia_get

Fetch one document from kapoost's vault by slug. Requires Authorization: Bearer <edit token or friend token>. Friend tokens: vault-side filter enforces scope + access:private invisibility — an out-of-scope or private slug returns not_found. Vault offline ⇒ {status:offline}.

輸入參數doc_slug必填

mysloodsiewnia_list

Enumerate vault documents without FTS — for browsing by type or paginating. Requires Authorization: Bearer <edit token or friend token>. Friend tokens see only their scoped doc_types; access:private is invisible. Args: {doc_type?: string filter (note/pdf/literatura/calendar_event/...), limit?: int 1-200 default 50, offset?: int default 0}. Returns [{slug, title, doc_type, created_at, chunk_count}]. Vault offline ⇒ {status:offline}.

輸入參數limitoffsetdoc_type

mysloodsiewnia_status

Read-only liveness probe on kapoost's local vault (mysłoodsiewnia). Returns {status: online|degraded|offline, last_seen, commit_sha, personas_updated_at, skills_updated_at}. Offline is a stable state — retry later, don't escalate. Requires Authorization: Bearer <edit token or friend token>.

無需輸入參數。

mysloodsiewnia_write

Ingest a new document into kapoost's vault (wave 2). OWNER-ONLY — friend tokens receive {status:write_denied,reason:owner_only}. Args: {doc_type (required), title (required), body (required, ≤100 KiB), source_path?, meta?}. Requires Authorization: Bearer <owner token>. On Unauthorized: obtain the token by either (a) calling bootstrap_session(code=<owner poet fragment>) and reading SESSION_TOKEN from the response briefing (1h TTL, preferred for agents that already know the code), or (b) if you have shell access on kapoost's Mac, running `security find-generic-password -s humanmcp-edit-token -w` to fetch the persistent EDIT_TOKEN. Server-side vault auto-tags via:humanmcp-bridge; op_id is dedup key (idempotent retries safe). Delete is permanently unavailable. Envelopes: {status:online, op_id, result:{slug, created_at}}, {status:invalid_args}, {status:payload_too_large, limit, got}, {status:offline}, {status:vault_timeout}, {status:vault_error, error}.

輸入參數body必填metatitle必填doc_type必填source_path

prepare_narada

Offline narada: returns the panel plus each persona's ready-to-run SYSTEM/USER prompts so YOU run them as your own subagents, instead of the server generating voices. No LLM cost, no rate limit, nothing recorded — no narada ID and no journal feedback. Prefer this over run_narada when your subagents can read material the server cannot (a repository, local files) or when the server has no API key. Session-gated.

輸入參數context必填personassession_token

read_blob

Read one blob by slug. Returns text or base64-encoded data. Access-gated by audience unless blob is public.

輸入參數slug必填caller_idcaller_kind

read_collection_item

Full record for one collection item + dossier count. Access-gated: private is never visible, members needs session.

輸入參數slug必填session_token

read_content

Read a public piece by slug. Locked pieces return a hint pointing at request_access.

輸入參數slug必填

read_provenance

Return one provenance item with resolvable file URLs. slug + id required.

輸入參數id必填slug必填

recall

List memories saved under the given code, optionally substring-filtered by query. Session-gated for symmetry with remember.

輸入參數code必填limitquerysession_token

record_persona_reflection

Ask a persona to write a lesson-for-self after a rolled-back narada recommendation. Appends to the persona's journal via Sonnet/Haiku. Owner-only.

輸入參數narada_id必填persona_slug必填error_context必填

remember

Persist a note under the given session code. Session-gated — bootstrap_session first. Callers sharing the code share the memory.

輸入參數code必填fromtagstext必填session_token

request_access

Get the gate details for a locked piece: challenge question, manual-review flow, time-lock countdown, payment terms, or trade rules.

輸入參數slug必填

request_license

Declare intended use of a piece, get licensing terms + audit-log entry. caller_id is REQUIRED (whitespace-only rejected — storyboard-pinned).

輸入參數slug必填caller_id必填intended_use必填

run_narada

Create an async narada job: server routes context to 3-5 personas via keyword manifest, then generates each voice via Sonnet 4.6 (Haiku 4.5 for journal recaps). Returns job ID for polling. Pass `personas` to pick the voices yourself and skip the router entirely — the router matches keywords only and cannot read a request to include or exclude someone written in the context.

輸入參數fromcontext必填personas

search_content

Search kapoost's pieces by words in title, tags, description and body. Every word must match (AND). Polish diacritics are folded, so "czlowieczenstwa" finds "człowieczeństwa". Use this BEFORE ask_human — most questions about which piece is which are answered here instantly, while ask_human waits for a human. Locked pieces are matched by title and tags only; their body is never searched or quoted.

輸入參數limitquery必填

submit_answer

Submit an answer to a challenge-gated piece. Correct answer unlocks and returns the full body.

輸入參數slug必填answer必填

suggest_skills

Deterministic manifest→tag mapping. Given files + languages + git_origin, returns up to 8 skill slugs and up to 5 personas, each with the reason it fired. No LLM classification.

輸入參數fileslanguagesgit_origin

synthesise_persona_patterns

Force-run Sonnet synthesis over a persona's raw journal, replacing the previous pattern set. Owner-only — paid + writes internal state.

輸入參數slug必填

upsert_skill

Create or replace a skill by slug. Owner-only: requires Authorization: Bearer <token>. Writes JSON to content/skills/<slug>.json.

輸入參數body必填slug必填tagstitle必填category必填

verify_content

Verify a piece's Ed25519 signature against the server's owner public key.

輸入參數slug必填

版本歷史

1
  1. v0.3.0最新Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。

其他 Human 整合