DEV Community

Djaouad Frih
Djaouad Frih

Posted on

I Turned My Portfolio Into an MCP Server So AI Agents Can Hire Me

Last month I got tired of sending cold emails that nobody answered. So I flipped the funnel: instead of me reaching out to people, I made it possible for AI agents to find me, read my work, and hire me — all through the Model Context Protocol.

This is the story of HireMe MCP, what it does, how it works, and why I think every freelancer should build one.

The problem: portfolios don't talk to agents

Here's how hiring works in 2026 for a lot of people: a founder opens Claude or Cursor and asks "find me someone who can build an AI chatbot with pgvector." The agent searches, reads GitHub profiles, maybe opens your portfolio site.

And then it hits a wall. Your portfolio is HTML made for humans. An agent can scrape it, but it gets prose, navigation menus, and CSS — not structured facts like "here are my projects, here's my pricing, here's how to contact me."

MCP fixes this. It's an open protocol (introduced by Anthropic, now widely adopted) that lets any AI client connect to a server through a standard interface of tools. If your data speaks MCP, agents don't have to guess — they just call your tools.

What HireMe MCP exposes

The server runs on Express + TypeScript and exposes four tools:

  • search_projects — agents query my work by industry ("healthcare") or stack ("pgvector", "react-native")
  • get_pricing — transparent fixed prices ($500 chatbot / $2,000 full build), no "contact us for quote"
  • get_availability — next open slot
  • submit_brief — the agent submits a project brief directly, which lands in my CRM

So when an agent asks "can this person build a PDF Q&A system?", the answer comes back as structured JSON with links to live demos — not a guess from whatever Google indexed last month.

Here's a trimmed version of a tool definition:

server.tool(
  "search_projects",
  "Search Djaouad's portfolio by industry or tech stack",
  {
    industry: z.string().optional(),
    stack: z.array(z.string()).optional(),
  },
  async ({ industry, stack }) => {
    const results = projects.filter(p =>
      (!industry || p.industries.includes(industry)) &&
      (!stack?.length || stack.some(s => p.stack.includes(s)))
    );
    return { content: [{ type: "text", text: JSON.stringify(results) }] };
  }
);
Enter fullscreen mode Exit fullscreen mode

Nothing exotic. That's the point — the whole server is about 400 lines.

Getting listed where agents actually look

Building the server was the easy part. Distribution matters more:

  1. Official MCP Registry — submitted a PR to the registry repo; once merged, clients like Claude Desktop can discover it.
  2. Smithery — the main MCP directory; it scores your server (mine scored 56/100 on first pass, mostly for missing metadata I've since added).
  3. Glama & mcpservers.org — additional listing sites agents' users browse.
  4. Your own endpoint — mine lives at mcp.djaouad.tech, and my portfolio README shows a one-liner config so anyone can plug it in:
{
  "mcpServers": {
    "hireme": { "url": "https://mcp.djaouad.tech/mcp" }
  }
}
Enter fullscreen mode Exit fullscreen mode

Honest results so far

I won't pretend this landed me five clients overnight. What it has done:

  • My profile is now readable by every MCP-capable agent without scraping
  • Two people found me through the Smithery listing (zero emails sent by me)
  • It makes a great conversation piece — "you built WHAT?" opens more doors than any cold email I've written

That last point surprised me. The server itself became marketing.

Build your own in an afternoon

If you freelance, you can clone this idea in a few hours:

  1. Scaffold an Express + TypeScript project, add @modelcontextprotocol/sdk
  2. Define 3–4 tools: your work (searchable), pricing, availability, contact/brief submission
  3. Deploy anywhere cheap (Render free tier works)
  4. Submit to the official registry + Smithery
  5. Add the one-line config to your README

The whole thing costs me $0/month to run. Compare that to any job board.

Try it

If you build one, reply here — I'd genuinely like to see other freelancers' takes on this.

Top comments (0)