protogrid

Search / io.github.Georgi-Petkov/personalknowhow

PersonalKnowHow

R0· no sign-in

Live public demo: query one person's learning and work history as a knowledge graph via MCP.

v1.0.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality86good
Trust94of 100
Uptime, 30 days99%
Latency p50305 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "personalknowhow": {
      "type": "http",
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    }
  }
}
claude mcp add --transport http personalknowhow https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp
[mcp_servers.personalknowhow]
url = "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "personalknowhow": {
      "type": "remote",
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "personalknowhow": {
      "type": "http",
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=personalknowhow&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vcGVyc29uYWxrbm93aG93LWRlbW8ua3h0d3JkenQ2Zy53b3JrZXJzLmRldi9tY3AifQ%3D%3D"
}
{
  "servers": {
    "personalknowhow": {
      "type": "http",
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    }
  }
}
{
  "mcpServers": {
    "personalknowhow": {
      "httpUrl": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    }
  }
}
extensions:
  "personalknowhow":
    enabled: true
    name: "personalknowhow"
    type: streamable_http
    uri: "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    timeout: 300

Quality 86 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene79 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length2 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations4 of 4 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: query_knowhow (destructiveHint, idempotentHint, openWorldHint); skill_evidence (destructiveHint, idempotentHint, openWorldHint); related_entries (destructiveHint, idempotentHint, openWorldHint); …
  • pass
    tools.token_costabout 1,281 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability100 · weight 15
  • pass
    stability.changesno tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

4 tools, about 1,281 tokens to load them all · tool set 17e5ffed7859 · checked 2026-10-20 15:26 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 94 / 100

provenance90
liveness100
freshness85
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-99% ~updated-43d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp streamable-httpnoneyes99%305 ms2026-07-282026-10-20

Tools (4)

list_by_typeread-onlyReturns the COMPLETE, exact set of entries for one type, with no similarity ranking, no relevance cutoff, and no cap on count. Use this instead of query_knowhow whenever the question requires an exhaustive or countable answer ('list all my certifications', 'how many courses have I completed'). Deterministic ordering (sorted by label) -- repeated calls with the same type return the same list in the same order.
query_knowhowread-onlySearch this person's real, grounded skills/experience graph for a topic using semantic search. Returns only entries with real evidence -- never guesses. Every entry here represents something actually done or completed (project, certification, position, course, or education) -- this public dataset never includes saved-but-not-worked jobs or applications. This is SEMANTIC search ranked by relevance and capped at 10 results -- it is NOT exhaustive. For 'list every X' or 'how many X' questions, use list_by_type instead -- it returns the complete, uncapped set with no similarity ranking involved. Clearing the similarity floor means 'closest available match', not 'confirmed match' -- read each result's actual label/description/type before citing it as evidence for the specific topic queried. Each result also carries source_url/captured_at/provider (the real evidence behind it, when available) and source_note (explaining why not, when the underlying source has no link) -- use these to answer a disputed claim with actual backing evidence rather than just the description text. Embeddings can rank a topically-adjacent-but-wrong entry above the floor (e.g. a course on a different cloud data-warehouse tool, or a different framework in the same category) for a term it isn't actually about; if a result isn't genuinely on topic, treat the query as unmatched rather than reporting it as a match. For 'what else is connected to this' or 'what shares a skill/provider with this specific entry' questions, call related_entries with a result's id instead of re-querying by topic.
related_entriesread-onlyGiven an entry id (from a prior query_knowhow or list_by_type result), returns other entries that share at least one tag or the same content provider -- the only two relationships this corpus currently tracks (there is no 'led to' or 'used in' relationship here, only shared tag/provider). This is NOT a similarity or relevance judgment -- two entries sharing a broad tag (e.g. both tagged 'data-science') can be quite different in substance; read each related entry's own label/type before treating it as meaningful. Each group is capped at 15 entries, sorted by label, with the true total count shown separately so you know if results were truncated -- call list_by_type on that type if you need the full set. Useful for 'what else is connected to X' or 'what did they do that relates to this specific course/certification/endorsement' -- questions query_knowhow's independent similarity search can't reliably answer, since two entries can be genuinely related without their description text reading alike (e.g. a course title and an endorsement phrase for the same skill, worded completely differently).
skill_evidenceread-onlyGiven an exact tag/skill (e.g. 'docker', 'gcp'), returns EVERY entry with that tag, uncapped, grouped by type with a real count per type. Unlike related_entries (capped at 15, requires a starting entry id) or query_knowhow (semantic, ranked, may over- or under-include), this is an EXACT tag match against every entry -- the right tool for 'how many X have I completed/done' or 'do I have any real evidence for X at all'. Tags are exact strings from a prior list_by_type/related_entries/query_knowhow result's tags array -- this is NOT semantic search; a tag never assigned during ingest returns found:false, try query_knowhow instead. Each type's entries sort by captured_at ascending (oldest first); entries with no captured_at are moved to the end and counted in undated_count, never silently sorted as if their date were known.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Georgi-Petkov/personalknowhow",
  "title": "PersonalKnowHow",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "1.0.0",
  "repository": {
    "url": "https://github.com/Georgi-Petkov/personalknowhow",
    "source": "github",
    "subfolder": "mcp"
  },
  "websiteUrl": "https://personalknowhow.com",
  "description": "Live public demo: query one person's learning and work history as a knowledge graph via MCP."
}