hire-me-mcp v1.0.0 — a portfolio you can hand to your AI
hire-me-mcp is Marcos Alvarez's portfolio rebuilt as a live, queryable API: a public, anonymous Model Context Protocol (MCP) server and a Next.js site that both read from the same typed career data, so any AI assistant can be handed this CV as a tool and get back cited, grounded answers instead of guesses. No API key, no signup, one URL to connect.
Live URLs
- Site: https://hire-me-mcp-web.vercel.app
- MCP endpoint (Streamable HTTP, no auth): https://hire-me-mcp-web.vercel.app/api/mcp
- CV (PDF, generated from the same data): https://hire-me-mcp-web.vercel.app/cv/marcos-javier-alvarez-cv.pdf
- Agent entry point: https://hire-me-mcp-web.vercel.app/llms.txt
Connect an agent in 30 seconds
Claude Code (CLI):
claude mcp add --transport http hire-me-mcp https://hire-me-mcp-web.vercel.app/api/mcpCursor / VS Code (.cursor/mcp.json or .vscode/mcp.json):
{
"mcpServers": {
"hire-me-mcp": {
"url": "https://hire-me-mcp-web.vercel.app/api/mcp"
}
}
}Claude web/desktop: add the endpoint URL as a custom connector. Every client, rate limits and troubleshooting: docs/mcp.md.
Six tools: get-profile, get-experience, search-projects, get-skill-evidence, search-career (semantic search over the full career text), and ping. Every response carries a citation back to the specific record it was drawn from, and "not claimed" is an honest first-class answer — the server admits gaps instead of hallucinating around them.
What shipped, milestone by milestone
Full detail with issue/PR links in CHANGELOG.md.
- v0.1 — Foundation & Agentic DX: Turborepo + pnpm monorepo, Biome, Vitest, test-first enforcement wired into the coding agents themselves (Claude hooks +
AGENTS.md), CI with branch protection, Playwright smoke, Vercel deploys with PR previews. - v0.2 — Career Data Domain Layer: the typed source of truth — Zod-validated career content with evidence, explicit gap records and a content lint that fails the build if a claim lacks evidence — plus framework-free domain services returning citation envelopes.
- v0.3 — Public MCP Server: the Streamable HTTP endpoint at
/api/mcpwith the first four career tools, per-IP rate limiting, and protocol-level integration tests with the real MCP SDK client in CI. - v0.4 — Portfolio Site: the data-driven site — design system, experience timeline, projects, skills-with-evidence — with a11y/content e2e suites and Lighthouse gates against preview deploys.
- v0.5 — Interview Chat Agent: an embedded Mastra chat agent with streaming, inline citations, guardrails, and a CI-gating eval suite scoring groundedness, gap honesty and relevance.
- v0.6 — Semantic Search (RAG): Neon Postgres + pgvector, an incremental ingestion pipeline, a golden retrieval dataset with recall/precision evals in CI, and the
search-careertool. - v0.7 — Agent-First Onboarding:
llms.txt,/.well-known/mcp.json, JSON-LD discovery, a connect-your-agent panel, and generated connection snippets with CI docs-rot guards that execute them against the live endpoint. - v0.8 — Analytics & Write Tools: an anonymized, aggregate-only usage analytics pipeline with a public privacy note at
/privacy; public write tools were deliberately descoped (see limitations). - v1.0 — Launch: generated CV PDF, security headers + CSP, a committed security review, enforced performance budgets, one-command production certification (green run), and this release.
Known limitations
- Read-only by design. There are no
contactorbook_calltools — the abuse surface of anonymous write tools outweighed their value, so contact stays on the site itself. This is a decision, not a gap (#60, #74, #77). - Free-tier infrastructure. Embeddings and evals run on Gemini free-tier quotas; the vector store is Neon free tier. Under load,
search-careermay be slower than the deterministic tools. - Rate limits. All tools share a per-IP rate limit; hammering the endpoint returns MCP-level rate-limit errors rather than answers. Limits are documented in
docs/mcp.md. search-projectsis deterministic keyword/tag matching — for conceptual questions,search-careeris the semantic fallback.
Out of scope for v1.0
- Release automation (release-please/changesets) — releases follow the manual procedure in
docs/release-readiness.md; the versioning policy is at the top of the changelog. - External announcements — drafted, posted manually.
- Auth, personalization, or any per-visitor state: the server is anonymous and stateless by design.
Verification: the release-readiness pyramid — unit, protocol-level MCP, e2e, retrieval and agent evals — ran green against the production deployment (run 32846780537), and the live initialize response reports version 1.0.0.