portfolio-emsghin2iq-as.a.run.app/mcp · Model Context Protocol 2026-07-28
Ask my site with your own agent.
This portfolio is also an MCP server. Add one URL to Claude, Cursor or any client that speaks the Model Context Protocol, and your agent can answer questions about my work from the site's own facts and read its live reliability numbers. No key, nothing to install, read-only.
- read-only tools over the site's facts and live numbers
- 5
- protocol eras served: stateless 2026 and the older handshake
- 2
- models on my side: your agent brings its own
- 0
Connect
one URL
the server · Streamable HTTP · no key
https://portfolio-emsghin2iq-as.a.run.app/mcpclaude mcp add --transport http zhenxi https://portfolio-emsghin2iq-as.a.run.app/mcp
One command. Then ask it anything about my work, or run /mcp to see the tools.
Try it here
real requests from your browser
This is a small MCP client. It asked the server for its tools when the page loaded; pick one and call it to see the request and the answer an agent would get.
asking the server for its tools…
A short answer to a question about my work, with the sources it came from.
No agent? Use curl
the home page answers terminals in text
Ask for the home page from a terminal and the server sends a text card with the commit that is live, its uptime and how it has been shipping. A browser, or anything that asks for HTML, gets the page.
$ curl https://portfolio-emsghin2iq-as.a.run.app
The same API from a shell in the page: status, slo, ask, mcp, curl.
For crawlers and readers
the same content as plain text
- /llms.txtWhat the site is and where each page lives as Markdown, in the llmstxt.org format.
- /llms-full.txtEvery fact the tools answer from, in one file.
- /md/…A Markdown copy of each of 14 pages: case studies, write-ups, postmortems and the decision records. Each HTML page links to its copy.
- /knowledge.jsonThe same facts as JSON, with the section of the site each one belongs to.
- /api/sloAvailability and error budget from Google Cloud uptime checks, as JSON.
- /status/feed.xmlIncidents as an Atom feed.
- /.well-known/security.txtWhere to report a security problem (RFC 9116).
How it is built
- No sessions. Each request stands alone, so any Cloud Run instance can answer it and scaling to zero loses nothing.
- Two protocol eras. It speaks the stateless 2026-07-28 revision, and still answers the initialize handshake that older clients open with.
- No model on my side. The tools return the site's own text and numbers; the agent that called them does the reasoning with its own model.
- Read-only, and written against Go's standard library: about 500 lines for the protocol, no SDK. Browser origins are checked, bodies are capped at 64 KiB, and each client gets 60 requests a minute.
- Tested like the rest of the site: every release calls a tool in both protocol eras before it takes traffic.