土木工程师背景的作者让 AI agents 帮他写代码,并把自己的作品集做成了 MCP server,AI 可直接查询实时数据而非读静态页面。
我的背景是土木工程。我不写代码——我指挥 AI agents 来写,而我负责架构、决策和质量把关。
所以当我搭建作品集时,我不想让它看起来和其他人一样。我想要它做一件别人都做不到的事。
这就是我搭建的东西:一个能直接回答 AI agents 问题的作品集。不是聊天机器人,不是演示,而是一个真正的服务器——任何 AI,无论是 Claude、GPT 还是其他的,都能连接并查询它。
claude mcp add --transport http msp-portfolio \
https://msp-portfolio.mansio-dev.workers.dev/mcp
问它"Mikhail 做过什么?"或者"他的技术栈是否符合这个职位描述?"它会用实时数据回答——不是六个月前的静态 PDF。
每个作品集都做出了同样的无声承诺:"相信这仍然是真的。"
那是一个快照。一旦你关闭编辑器,它就开始变得过时了。没有任何方式能让任何人——无论是人类还是 AI 招聘官——验证上面的内容是否属实。
我想要相反的东西。一个不只是展示声称,而是能回答关于这些声称的问题的作品集。如果某个技能的证据不存在,它会如实说出来,而不是糊弄过去。
这个网站有三个部分,它们共享同一个大脑:
网站——在浏览器中打开时看到的样子。交互式的、深色主题的,还有一个你可以破坏的模拟器。
面向 AI agents 的服务器——同样的数据,但以任何 AI 都可以直接查询的格式。这是 MCP 部分。
本地版本——用于从命令行进行开发和测试。
不寻常的地方在于:这三个部分读取的完全是同一个数据源。没有复制粘贴,没有"API 版本"和"网站版本"之分。一处数据,三个入口。
把这些想象成 AI 可以向我的作品集提出的问题:
招聘官最常用的:analyze_stack。你粘贴职位描述,它返回每个技能的详细分解以及实际证据——不是"I know Kubernetes",而是"used in project X, decision log here"。
我最引以为豪的:get_antipatterns。这是一个真实犯过的错误的展览馆——一个我不小心据为己有的 fork 仓库、一个在本地测试中正常但在生产中静默故障的功能、一个看起来像是在写入数据但实际没有的计数器。诚实的教训,而不是精心打磨的高光集锦。
作品集有一个实时架构模拟器。你选择一个我的真实项目,选择一个故障场景——杀死一个节点、冻结缓存、过载 AI——然后观看性能数字实时变化。
那不是视频,也不是截图。它运行的是实际的模型。
在搜索架构上施加 20 倍负载:在负载突增时,p95 延迟从约 10ms 上升到 239ms,如果一个节点挂了则是 401ms。当它越过某个阈值时,一个芯片会出现:circuit_open、fallback_engaged、degraded_mode。这就是我说"我理解分布式系统"时的意思——你可以自己验证。
不存在的包。我花时间尝试安装 @fastify/mcp。它不存在。真正的名字是 @modelcontextprotocol/fastify。简单的错误,代价是一小时。
在本地正常运行但在生产中什么都不做的函数。我有一个计数器用来追踪 MCP 服务器被查询了多少次。它通过了所有测试。在生产中,计数器从未写入过任何东西。原因:在 Cloudflare Workers 中,在响应发送后运行的代码会立即被取消。我的计数器正是在响应之后运行的。修复方法:一行代码——ctx.waitUntil(task)。教训是,本地 Node.js 和 Cloudflare Workers 对于请求结束后发生的事情有不同的规则。
报告成功但实际什么都没做的限流器。我在免费计划上设置了一个限流。每次调用都返回 success: true。 Enforcement simply wasn't active at that tier`。我只有通过用突发测试故意触发它才发现了这个问题。配置上说"是"和系统实际执行是两件不同的事。
每小时自动推进代码的提交,静悄悄的,没有我的参与。CI 每小时运行一次来刷新指标。每次运行都会产生一个提交。如果我之前没有 fetch 就 push,我就会在一个分叉的历史之上 push。现在我总是先 git fetch。不是灾难,只是一个你学一次就知道的事情。
agent 循环——你可以输入一个问题,然后看着 AI 一步步调用工具、实时地、在浏览器中——结果证明这是最有趣的部分。
你能看到它思考。它调用 get_profile,读取结果,决定需要更多信息,调用 analyze_stack,比较,然后回答。整个链条是可见的。它不是结尾只有一个答案的黑箱。这是一个你可以审计的过程。
我没有计划把那个当作一个功能。它来自试图调试演示时,发现调试视图比最终答案更有意思。
Portfolio: mansio.github.io/MSPortfolio
Source: github.com/ManSio/MSPortfolio
claude mcp add --transport http msp-portfolio \
https://msp-portfolio.mansio-dev.workers.dev/mcp
然后问它:"你的错误教会了你什么?"
如果你也搭建了类似的东西,评论区见。我真的很想看看。