PersonalKnowHow

io.github.Georgi-Petkov由 GitHub 账号 Georgi-Petkov 发布v1.0.0更新于 Nov 2, 2026

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

已验证Streamable HTTP可网页运行知识与记忆AI 与机器学习

概览

AI 生成的概览

远程 MCP 服务器,把某个人的公开学习与工作经历以知识图谱形式提供查询,涵盖项目、课程、认证与职位。

可以做什么
  • 按主题语义搜索此人的技能与经历图谱,结果按相关度排序且最多 10 条
  • 按类型列出完整且不设上限的条目集合,例如认证或课程
  • 根据共享标签或同一内容提供方,查找与某条目相关的其他条目,每组最多 15 条
  • 按精确标签查出所有带该标签的条目,并按类型分组给出真实数量
适用场景
适合想了解或演示如何通过 MCP 查询个人证据图谱的场景,或核实某人在某项技能上实际完成过什么。它是公开演示数据集,并非通用知识库。
运行要求
需要一个远程 streamable HTTP 端点;未声明认证、环境变量或请求头。只需能访问托管的演示端点。
安装前请注意
服务器无需认证,提供的是某个人职业经历的公开导出,查询与结果都不具私密性。该导出有意排除求职意向类信号,因此数量天然少于私有版本。语义搜索按排名截断,可能漏掉真实匹配;精确标签查询对未打标签的技能不会返回结果。

安装

在 SourceWeft 中

  1. 打开 控制台中的 PersonalKnowHow,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.Georgi-Petkov%2Fpersonalknowhow/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "personalknowhow": {
      "type": "http",
      "url": "https://personalknowhow-demo.kxtwrdzt6g.workers.dev/mcp"
    }
  }
}

README

PersonalKnowHow MCP — public demo

Unauthenticated MCP server over the public export of one person's knowledge graph (public_entries.json + public_embeddings.json, built by ingest/build_public_export.py's fail-closed allowlist). Every entry here represents something actually done or completed (course, project, certification, position, education, etc.) — career-interest/job-application "signal" evidence is structurally excluded from this export, never just filtered at query time.

Tools

query_knowhow(topic: string)

Semantic search, ranked by relevance, capped at 10 results. Not exhaustive — a real match can rank below the cutoff.

query_knowhow({ topic: "django" })→ { "found": true, "count": 4, "evidence": [      { "id": "github_django_docker_db", "label": "django_docker_db", "type": "project", "score": 0.735, ... },      { "id": "github_django_docker", "label": "django_docker", "type": "project", "score": 0.71, ... },      { "id": "github_startup", "label": "StartUp", "type": "project", "score": 0.706, ... },      { "id": "github_news_sentiment_app", "label": "News-sentiment-app", "type": "project", "score": 0.676, ... }   ] }

list_by_type(type: string)

The complete, exact set of entries for one type — no ranking, no cap.

list_by_type({ type: "certification" })→ { "type": "certification", "count": N, "entries": [ { "id": "...", "label": "...", ... }, ... ] }

related_entries(id: string)

Given an entry id, returns other entries sharing at least one tag or the same provider — capped at 15 per group, true count always shown.

related_entries({ id: "github_django_docker" })→ { "id": "github_django_docker", "type": "project",    "related_by_tag": {      "docker": { "count": 4, "entries": [        { "id": "github_django_docker_db", "label": "django_docker_db", "type": "project" }, ... ] },      "aws": { "count": 16, "entries": [ ... ] },      "cloud": { "count": 51, "entries": [ ... ] },      "devops": { "count": 10, "entries": [ ... ] }    },    "related_by_provider": { "count": 36, "entries": [ ... ] } }

(Note: this example shows related_entries only clustering django_docker with the one other Django repo sharing an unrelated tag — neither StartUp nor News-sentiment-app appear, since neither shares a tag with it. skill_evidence({ tag: "docker" }) below finds all of them instead, since it matches on the tag directly rather than requiring a shared-tag path from one specific starting entry.)

skill_evidence(tag: string)

Exact tag match (not semantic), uncapped, grouped by type with real counts. The right tool for "how many X have I actually done" or "do I have any real evidence for X at all."

skill_evidence({ tag: "docker" })→ {    "tag": "docker", "found": true, "count": 5,    "by_type": {      "project": {        "count": 4, "undated_count": 0,        "entries": [          { "id": "github_django_docker", "label": "django_docker", "captured_at": "2021-06-10" },          { "id": "github_django_docker_db", "label": "django_docker_db", "captured_at": "2021-06-22" },          { "id": "github_bedex", "label": "BedEx", "captured_at": "2025-05-29" },          { "id": "github_terraform_associate_prep", "label": "terraform-associate-prep", "captured_at": "2026-08-03" }        ]      },      "endorsement": {        "count": 1, "undated_count": 0,        "entries": [          { "id": "linkedin_endorsements_docker_products_202209", "label": "Endorsed: Docker Products", "captured_at": "2022-09-21" }        ]      }    }  }
skill_evidence({ tag: "gcp" })→ {    "tag": "gcp", "found": true, "count": 2,    "by_type": {      "position": { "count": 1, "undated_count": 0, "entries": [        { "id": "linkedin_positions_data_engineer_data_analyst_at_biites_202107",          "label": "Data Engineer & Data Analyst at Biites", "captured_at": "2021-07-01" } ] },      "project": { "count": 1, "undated_count": 0, "entries": [        { "id": "projects_connector", "label": "connector", "captured_at": "2026-08-09" } ] }    }  }

(The private tier's skill_evidence({ tag: "gcp" }) also surfaces a signal_only career-interest entry — that entire category is excluded from this public export, so this tier's count is lower by design, not by omission.)

An unrecognized tag returns found: false — exact match against tags assigned during ingest, not a fuzzy/semantic lookup. If a skill genuinely exists but was never tagged, query_knowhow may still find it (it searches full entry text, not just tags).

来源:mcp/README.md,提交 68ffd8b

工具

4

query_knowhow

Query know-how

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

输入参数topic必填

list_by_type

List know-how by type

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

输入参数type必填

skill_evidence

Find skill evidence

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

输入参数tag必填

版本历史

1
  1. v1.0.0最新Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分