Hire-me MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hire-me MCPTell me about your experience with MCP servers."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hire-me-mcp
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 real 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 site: https://hire-me-mcp-web.vercel.app
Downloadable CV (PDF): generated straight from
packages/career-data— same source, same domain layer, no separately maintained copy. Linked from the site header ("Download CV") and/llms.txt's Site section; the stable download path is/cv/<slugified-name>-cv.pdfon the live site above. Regenerate it any time content changes withpnpm generate:cvand commit the result (the committed PDF ships with every deploy — Vercel's own build only builds/deploys the Next.js app, so PDF generation deliberately isn't wired into it). A print-ready HTML view of the same content is served at/cv/print.Agent docs:
docs/mcp.md(every client, rate limits, troubleshooting) and the site's own/llms.txtentry point.Security checklist: landing alongside this launch in #57 — linked here once
docs/security-checklist.mdmerges.Live MCP endpoint (Streamable HTTP, no auth):
https://hire-me-mcp-web.vercel.app/api/mcpTry it in 30 seconds
No API key, no OAuth, no account. Any client that speaks MCP's Streamable HTTP transport can connect by pasting the URL above into a "remote server" / "custom connector" field.
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's custom-connector flow, a raw curl health check, rate limits, and
troubleshooting all live in docs/mcp.md — the canonical connection guide.
Every snippet above is generated from the same connection-metadata module that guide reads from
(packages/connect-metadata, via pnpm generate:connect), so it can never drift out of sync with
what the server actually serves.
Related MCP server: Developer Portfolio MCP Server
What you can ask it
Every tool response carries a citation back to the specific profile record, role, or project it was drawn from — grounded answers, not guesses.
"Who is Marcos Alvarez, and is he currently open to new roles?"
"What has Marcos worked on since 2022? Walk me through his recent roles."
"Show me projects where Marcos used TypeScript or Kubernetes."
"Has Marcos worked with event-driven architectures? Show me the evidence."
"What's Marcos's experience with leading engineering teams and mentoring?"
Tool | What it answers | Example question |
| Returns Marcos Alvarez's single profile record — name, headline, location, availability and a short bio — as one object, with citations backing it. Use this to answer 'who is this person' or 'what is their current availability/location' at a glance. Do not use it for role-by-role work history (use get-experience), specific project details (use search-projects), or to check whether a particular skill or technology is claimed (use get-skill-evidence). Takes no input. There is no 'no result' outcome in normal operation — this server's dataset always has exactly one profile. | "Who is Marcos Alvarez, and is he currently open to new roles?" |
| Returns every entry from Marcos Alvarez's work history matching an optional structured filter — company, technology tags, a YYYY-MM date range, and current/past status — as a list ordered most recent first, each entry with a citation. Use this to answer 'what did they do at company X', 'what did they work on in year Y', or 'what are they doing now'. Called with no filter fields, it returns the full history. Do not use it for the single profile summary (use get-profile), to search project descriptions by keyword (use search-projects), or to check whether one named skill is claimed (use get-skill-evidence). A filter matching no roles returns a successful result with an empty list, not an error. | "What has Marcos worked on since 2022? Walk me through his recent roles." |
| Searches Marcos Alvarez's project portfolio by keyword and/or technology tag and returns ranked matches, each with a relevance score, a matched-field explanation, and a citation. Matching is deterministic keyword/tag search against project names, summaries, bodies and tech tags — there is no semantic or embedding-based understanding of the query today. Use this when asked to find or describe specific projects, e.g. 'show me projects that used React' or 'what did they build with Kubernetes'. Do not use it for a chronological work history (use get-experience) or to check whether a skill is claimed at all, evidence or gap (use get-skill-evidence). A query matching no projects returns a successful result with an empty list, not an error; an empty or whitespace-only query behaves the same way. | "Show me projects where Marcos used TypeScript or Kubernetes." |
| Looks up a single named skill or technology and reports one of three honest outcomes: 'claimed' (the skill with its supporting evidence), 'not-claimed' (an explicit, acknowledged gap with its own statement and related skills), or 'unknown' (the term matches neither). Use this when asked 'do you know X' or 'have you worked with Y' about one specific technology. Do not use it to browse the full skill list (there is no such tool in this server) or to search project descriptions for a keyword (use search-projects instead), and it is not a substitute for get-experience when the question is about a role or company rather than a single skill. A 'not-claimed' or 'unknown' result is a normal, successful answer, not an error — relay it honestly rather than retrying or hallucinating around it. | "Has Marcos worked with event-driven architectures? Show me the evidence." |
| Runs a fuzzy, semantic search over the full text of Marcos Alvarez's career content (experience, projects, skills, writing) and returns ranked excerpts, each with a relevance score and a citation, or an explicit 'no relevant content found' result when nothing clears the similarity threshold. Use this for open-ended, cross-cutting, or conceptual questions a structured lookup can't answer directly — e.g. 'has he worked with event-driven architectures', 'what's his experience with leading teams', 'anything about cost optimization'. Do not use it when the question maps onto a specific, structured lookup the deterministic tools already answer exactly: get-profile for who he is, get-experience for a role/company/date-range work history, search-projects for keyword/tag project search, and get-skill-evidence to check one specific named skill or technology — prefer those first, and fall back to this tool only when they don't fit. This tool is more expensive per call (it embeds the query) and subject to the same more expensive per call (it embeds the query) and subject to the same server-wide rate limit as every other tool here — don't call it repeatedly for the same question. | "What's Marcos's experience with leading engineering teams and mentoring?" |
(A sixth tool, ping, exists purely as a connectivity diagnostic.)
Architecture map
A pnpm + Turborepo monorepo. Node >= 22 (CI and Vercel run 24), pnpm 10 (pinned via
packageManager).
apps/
web/ Next.js 15 App Router app — the site, the chat widget, and the public MCP endpoint (app/api/mcp/route.ts)
packages/
core/ Framework-free domain layer (search, citations) — consumed by apps/web
career-data/ Zod-typed career content (profile, experience, projects, skills) — the single source of truth
agent/ Mastra-based interview chat agent (grounded RAG over packages/career-data) + eval suite
connect-metadata/ Typed MCP connection metadata, per-client snippet renderers, and the generated-region injector (#17)
tooling/
tdd-guard/ Source<->test path mapping and TDD allow/block decision logic, used by .claude/hooksapps/web depends on the packages/* above via the workspace:* protocol — never relative
../../packages/... imports or tsconfig path hacks. packages/core and packages/career-data
stay framework-free since they also back the public MCP endpoint directly. All packages extend the
shared tsconfig.base.json (strict: true).
Local development
Prerequisites: Node >= 22, pnpm 10 (corepack enable picks up the pinned version automatically).
pnpm install # install all workspace dependencies + git hooks (lefthook)
pnpm dev # turbo run dev — runs all dev servers (site at http://localhost:3000)
pnpm turbo lint typecheck test build # the canonical pipeline — same one CI and the Stop hook runRequired environment variables (names only — see .env.example for the full rationale and where
each is consulted; real values are never committed):
Variable | Purpose |
| Optional override for the site's own absolute origin. Not required — Vercel derives it automatically. |
| Upstash Redis credentials backing |
| Override the MCP endpoint's rate-limit window. |
| Select and pin the chat agent's model provider/id. |
| Required when |
| Required only when |
| Chat guardrail tuning — see |
| Neon Postgres connection string for the |
| Create/delete a throwaway Neon branch for the DB integration test suite only — never used against the main database. |
None are required for pnpm turbo lint typecheck test build to pass on a clean checkout.
pnpm lint # turbo run lint — Biome, the only linter/formatter in this repo
pnpm typecheck # turbo run typecheck — strict TypeScript everywhere
pnpm test # turbo run test — Vitest, co-located *.test.ts(x) next to source
pnpm build # turbo run build — builds all packages in dependency order
pnpm test:e2e # Playwright smoke test against a production build
pnpm test:mcp # protocol-level MCP integration suite (real SDK client, real server process)
pnpm eval:agent # chat agent groundedness/gap-honesty/relevance evals
pnpm eval:retrieval # searchCareer recall@k/precision@k/MRR golden-dataset eval
pnpm generate:connect:check # verify the generated regions above are up to date with the real tool registryFull test-pyramid mechanics (preview e2e, Lighthouse, pre-commit hooks, CI jobs, branch
protection), plus how to reproduce the Vercel deployment locally, live in
docs/development.md and docs/deployment.md
— this section only lists the commands, not the "why".
Learn more
AGENTS.md— rules for any coding agent working on this codebase: test-first development, the canonical commands, and the three layers that enforce both.docs/mcp.md— the full MCP connection guide (every client, rate limits, troubleshooting), including its "Discovery: machine-readable metadata" section on JSON-LDPerson, per-route OpenGraph/Twitter cards, and/.well-known/mcp.json— and which of those are MCP-spec-defined (none, for this no-auth server) versus project convention./llms.txt— the site's own agent entry point, for a visitor who was handed the deployed URL rather than this repo.Security checklist — a one-time security pass (dependency audit, secrets hygiene, MCP input fuzzing, rate-limit re-verification) is landing in #57; this section will link straight to
docs/security-checklist.mdonce that PR merges.Issue tracker — roadmap, open work, and where to report a stale snippet or a bug in the MCP server.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceAn MCP server that provides a structured API for AI agents to query a person's resume, including profile, projects, writing, and gated access to experience and skills.
- AlicenseAqualityCmaintenanceAn MCP server that lets recruiters and AI assistants explore your profile, skills, and projects through natural language.6MIT
- AlicenseAqualityDmaintenanceTurn any data source into an MCP server in 5 minutes. Build knowledge bases that AI assistants like Claude and Cursor can query directly.22823MIT
- FlicenseNot gradedqualityCmaintenanceA local MCP server that gives AI agents structured access to a personal Obsidian knowledge vault, with semantic search, organization through Maps of Content, and git-backed history.
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/garusis/hire-me-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server