All projects
Portfolio MCP Server
Exposing this site's data as MCP tools any AI client can query.
Cloudflare Workers · MCP SDK · TypeScript · Zod
Problem
Recruiters and AI assistants can only learn about a candidate by scraping HTML — brittle, lossy, and disconnected from whatever the candidate actually maintains. I wanted any MCP-aware AI client to be able to query my experience, projects, and skills as accurate, structured data instead.
Approach
- Built a Cloudflare Worker using the agents SDK's McpAgent, exposing 7 tools (get_experience, get_projects, get_skills, get_about, get_contact_info, list_blog_posts, get_blog_post) over both Streamable HTTP and legacy SSE.
- Added a prebuild step to this site that exports the same data.ts/posts.ts modules it renders from as static JSON — single source of truth, no duplicated resume data between the site and the server.
- Validated every fetched payload with Zod schemas, since the data crosses a network boundary between two separately deployed repos.
- Shipped both a remote transport (zero-install, via Claude Code/Desktop) and a bundled stdio entry point for local use.
Results
- 7
- MCP tools covering experience, projects, skills, and writing
- 2
- transports — remote (Streamable HTTP/SSE) and local (stdio)
- 5 min
- edge cache — new site data propagates with no server redeploy
Outcome
A deployed MCP server that any MCP client can query for structured information about my background — verified end-to-end with the MCP Inspector CLI against both transports before calling it done.
Business Impact
A working demonstration of the exact skill I'm selling — deliberate AI-tooling integration — not just a bullet point claiming I know MCP.