Skip to main content
Ashish KumarSDET II
All projects

Portfolio MCP Server

Exposing this site's data as MCP tools any AI client can query.

Cloudflare Workers · MCP SDK · TypeScript · Zod

Results

10
MCP tools covering experience, projects, hiring info, quality metrics, and writing
2
transports — remote (Streamable HTTP/SSE) and local (stdio)
5 min
edge cache — new site data propagates with no server redeploy

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 10 tools (experience, projects, skills, background, contact, hiring logistics, quality metrics, mentoring, and the blog) 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.

How it flows

Site build

lib/data.ts

JSON export

public/data/*.json

Cloudflare Worker

fetch + 5min cache

MCP client

Claude, Cursor…

From the code

src/tools.ts
MCP SDK
export function registerPortfolioTools(server: McpServer) {
  server.registerTool(
    "get_experience",
    {
      title: "Get work experience",
      description:
        "Ashish Kumar's work experience history — company, role, dates, responsibilities, quantified results, and business impact for each position.",
    },
    async () => jsonResult(await getExperience())
  );
  // … 6 more tools
}

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.