Notes · Short note
I put my portfolio behind an MCP server
Recruiters read a page. Agents need something they can call. So my portfolio's API now exposes a stateless MCP server over Streamable HTTP, no key required.
The tools are read-only and pull from the live site's own public files (profile.json, llms.txt, the markdown copies), cached for 5 minutes: get_profile, get_availability, list_items for work/projects/notes, get_item for a specific one in EN or FR, and search for keyword lookups with prose snippets.
The one exception is request_cv, which goes through the same storeRequest path as the site's form: same validation, same per-IP rate limit. A request made through MCP gets tagged [via MCP] so I can tell where it came from. The tool description tells agents to only call it on the user's explicit request, with their own name and email.
Tested locally against the official MCP TypeScript SDK client: all six tools return correct data in both languages, and bad input gets refused cleanly — a path-traversal slug, a one-character name, a malformed email.
Next step is getting it listed in the official MCP registry.
Plain text: portfolio-mcp-server.md · Atom feed · All notes