Hire-me MCP
hire-me-mcp
hire-me-mcp es el portafolio de Marcos Alvarez, reconstruido como una API viva y consultable: un servidor Model Context Protocol (MCP) público y anónimo y un sitio Next.js que ambos leen de los mismos datos reales de carrera, de modo que cualquier asistente de IA puede recibir este CV como herramienta y obtener respuestas citadas y fundamentadas en lugar de conjeturas — sin clave de API, sin registro, una URL para conectar.

Sitio en vivo: https://hire-me-mcp-web.vercel.app
CV descargable (PDF): generado directamente desde
packages/career-data— misma fuente, misma capa de dominio, sin copia mantenida por separado. Enlazado desde el encabezado del sitio ("Descargar CV") y la sección Site de/llms.txt; la ruta de descarga estable es/cv/<slugified-name>-cv.pdfen el sitio en vivo anterior. Regenera en cualquier momento que el contenido cambie conpnpm generate:cvy confirma el resultado (el PDF confirmado se incluye en cada despliegue — la compilación propia de Vercel solo compila/despliega la aplicación Next.js, por lo que la generación de PDF deliberadamente no está conectada a ella). Una vista HTML lista para imprimir del mismo contenido se sirve en/cv/print.Documentación para agentes:
docs/mcp.md(cada cliente, límites de tasa, solución de problemas) y el punto de entrada propio del sitio/llms.txt.Lista de verificación de seguridad: aterrizando junto con este lanzamiento en #57 — enlazada aquí una vez que se fusione
docs/security-checklist.md.Endpoint MCP en vivo (Streamable HTTP, sin autenticación):
https://hire-me-mcp-web.vercel.app/api/mcpPruébalo en 30 segundos
Sin clave de API, sin OAuth, sin cuenta. Cualquier cliente que hable el transporte Streamable HTTP de MCP puede conectarse pegando la URL anterior en un campo de "servidor remoto" / "conector personalizado".
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 o .vscode/mcp.json):
{
"mcpServers": {
"hire-me-mcp": {
"url": "https://hire-me-mcp-web.vercel.app/api/mcp"
}
}
}El flujo de conector personalizado de Claude web/desktop, una verificación de salud con curl sin procesar, los límites de tasa y la solución de problemas viven todos en docs/mcp.md — la guía de conexión canónica. Cada fragmento anterior se genera desde el mismo módulo de metadatos de conexión del que lee esa guía (packages/connect-metadata, mediante pnpm generate:connect), por lo que nunca puede desincronizarse de lo que el servidor realmente sirve.
Related MCP server: Developer Portfolio MCP Server
Qué puedes preguntarle
Cada respuesta de herramienta lleva una cita de vuelta al registro de perfil, rol o proyecto específico del que se extrajo — respuestas fundamentadas, no conjeturas.
"¿Quién es Marcos Alvarez y está actualmente abierto a nuevos roles?"
"¿En qué ha trabajado Marcos desde 2022? Guíame a través de sus roles recientes."
"Muéstrame proyectos donde Marcos usó TypeScript o Kubernetes."
"¿Ha trabajado Marcos con arquitecturas basadas en eventos? Muéstrame la evidencia."
"¿Cuál es la experiencia de Marcos liderando equipos de ingeniería y mentoría?"
Herramienta | Qué responde | Pregunta de ejemplo |
| Devuelve el registro de perfil único de Marcos Alvarez — nombre, titular, ubicación, disponibilidad y una breve biografía — como un objeto, con citas que lo respaldan. Úsalo para responder «quién es esta persona» o «cuál es su disponibilidad/ubicación actual» de un vistazo. No lo uses para el historial laboral rol por rol (usa get-experience), para detalles específicos de proyectos (usa search-projects) ni para comprobar si se declara una habilidad o tecnología concreta (usa get-skill-evidence). No recibe entrada. No hay un resultado de «sin resultado» en el funcionamiento normal — el conjunto de datos de este servidor siempre tiene exactamente un perfil. | «¿Quién es Marcos Alvarez y está actualmente abierto a nuevos roles?» |
| Devuelve cada entrada del historial laboral de Marcos Alvarez que coincida con un filtro estructurado opcional — empresa, etiquetas de tecnología, un rango de fechas YYYY-MM y estado actual/pasado — como una lista ordenada de la más reciente a la más antigua, cada entrada con una cita. Úsalo para responder «qué hizo en la empresa X», «en qué trabajó en el año Y» o «qué está haciendo ahora». Si se llama sin campos de filtro, devuelve el historial completo. No lo uses para el resumen de perfil único (usa get-profile), para buscar descripciones de proyectos por palabra clave (usa search-projects) ni para comprobar si se declara una habilidad con nombre (usa get-skill-evidence). Un filtro que no coincida con ningún rol devuelve un resultado correcto con una lista vacía, no un error. | «¿En qué ha trabajado Marcos desde 2022? Explícame sus roles recientes.» |
| Busca en el portafolio de proyectos de Marcos Alvarez por palabra clave y/o etiqueta de tecnología y devuelve coincidencias clasificadas, cada una con una puntuación de relevancia, una explicación del campo coincidente y una cita. La coincidencia es una búsqueda determinista por palabra clave/etiqueta en nombres de proyectos, resúmenes, cuerpos y etiquetas de tecnología — no hay comprensión semántica ni basada en embeddings de la consulta hoy. Úsalo cuando se te pida encontrar o describir proyectos específicos, p. ej. «muéstrame proyectos que usaran React» o «qué construyó con Kubernetes». No lo uses para un historial laboral cronológico (usa get-experience) ni para comprobar si una habilidad se declara en absoluto, con evidencia o sin ella (usa get-skill-evidence). Una consulta que no coincida con ningún proyecto devuelve un resultado correcto con una lista vacía, no un error; una consulta vacía o de solo espacios en blanco se comporta igual. | «Muéstrame proyectos donde Marcos usara TypeScript o Kubernetes.» |
| Consulta una única habilidad o tecnología con nombre e informa uno de tres resultados honestos: 'claimed' (la habilidad con su evidencia de respaldo), 'not-claimed' (una brecha explícita y reconocida con su propia declaración y habilidades relacionadas) o 'unknown' (el término no coincide con ninguna). Úsalo cuando se te pregunte «¿conoces X?» o «¿has trabajado con Y?» sobre una tecnología específica. No lo uses para explorar la lista completa de habilidades (no existe tal herramienta en este servidor) ni para buscar descripciones de proyectos por palabra clave (usa search-projects en su lugar), y no sustituye a get-experience cuando la pregunta es sobre un rol o empresa en lugar de una sola habilidad. Un resultado 'not-claimed' o 'unknown' es una respuesta normal y correcta, no un error — transmítelo con honestidad en lugar de reintentar o alucinar alrededor de él. | «¿Ha trabajado Marcos con arquitecturas basadas en eventos? Muéstrame la evidencia.» |
| Ejecuta una búsqueda difusa y semántica sobre el texto completo del contenido profesional de Marcos Alvarez (experiencia, proyectos, habilidades, escritos) y devuelve extractos clasificados, cada uno con una puntuación de relevancia y una cita, o un resultado explícito de 'no relevant content found' cuando nada supera el umbral de similitud. Úsalo para preguntas abiertas, transversales o conceptuales que una búsqueda estructurada no puede responder directamente — p. ej. «¿ha trabajado con arquitecturas basadas en eventos?», «¿cuál es su experiencia liderando equipos?», «¿algo sobre optimización de costes?». No lo uses cuando la pregunta se corresponda con una búsqueda estructurada específica que las herramientas deterministas ya responden con exactitud: get-profile para quién es, get-experience para un historial laboral por rol/empresa/rango de fechas, search-projects para búsqueda de proyectos por palabra clave/etiqueta y get-skill-evidence para comprobar una habilidad o tecnología concreta con nombre — prefiere esas primero y recurre a esta herramienta solo cuando no encajen. Esta herramienta es más cara por llamada (incrusta la consulta) y está sujeta a la misma más cara por llamada (incrusta la consulta) y está sujeta al mismo límite de velocidad de todo el servidor que cualquier otra herramienta aquí — no la llames repetidamente para la misma pregunta. | «¿Cuál es la experiencia de Marcos liderando equipos de ingeniería y haciendo mentoría?» |
(Una sexta herramienta, ping, existe puramente como diagnóstico de conectividad.)
Mapa de arquitectura
Un monorepo de pnpm + Turborepo. Node >= 22 (CI y Vercel ejecutan 24), pnpm 10 (fijado mediante 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 depende de los packages/* anteriores mediante el protocolo workspace:* — nunca importaciones relativas ../../packages/... ni trucos de rutas en tsconfig. packages/core y packages/career-data permanecen sin framework, ya que también respaldan directamente el endpoint público de MCP. Todos los paquetes extienden el tsconfig.base.json compartido (strict: true).
Desarrollo local
Requisitos previos: Node >= 22, pnpm 10 (corepack enable detecta la versión fijada automáticamente).
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 runVariables de entorno requeridas (solo nombres — consulta .env.example para la justificación completa y dónde se usa cada una; los valores reales nunca se confirman):
Variable | Propósito |
| Anulación opcional del origen absoluto del propio sitio. No es obligatorio: Vercel lo deriva automáticamente. |
| Credenciales de Upstash Redis que respaldan la limitación de velocidad de |
| Anula la ventana de limitación de velocidad del endpoint MCP. |
| Selecciona y fija el proveedor/ID del modelo del agente de chat. |
| Obligatorio cuando |
| Obligatorio solo cuando |
| Ajuste de las salvaguardas del chat: consulte |
| Cadena de conexión de Neon Postgres para el módulo |
| Crea/elimina una rama Neon desechable solo para el conjunto de pruebas de integración de la base de datos; nunca se usa contra la base de datos principal. |
Ninguna es obligatoria para que pnpm turbo lint typecheck test build pase en una copia limpia del repositorio.
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 registryLa mecánica completa de la pirámide de pruebas (e2e de vista previa, Lighthouse, hooks de pre-commit, trabajos de CI, protección de ramas), además de cómo reproducir el despliegue de Vercel localmente, se encuentra en docs/development.md y docs/deployment.md; esta sección solo enumera los comandos, no el «porqué».
Más información
AGENTS.md— reglas para cualquier agente de codificación que trabaje en este repositorio: desarrollo basado en pruebas, los comandos canónicos y las tres capas que hacen cumplir ambos.docs/mcp.md— la guía completa de conexión MCP (todos los clientes, límites de velocidad, resolución de problemas), incluida su sección «Discovery: machine-readable metadata» sobre JSON-LDPerson, tarjetas OpenGraph/Twitter por ruta y/.well-known/mcp.json, y cuáles de ellas están definidas por la especificación MCP (ninguna, para este servidor sin autenticación) frente a las que son convención del proyecto./llms.txt— el punto de entrada del agente del propio sitio, para un visitante que recibió la URL desplegada en lugar de este repositorio.Lista de verificación de seguridad — una revisión de seguridad única (auditoría de dependencias, higiene de secretos, fuzzing de entrada MCP, reverificación de límites de velocidad) llegará en #57; esta sección enlazará directamente a
docs/security-checklist.mdcuando se fusione esa PR.Seguimiento de incidencias — hoja de ruta, trabajo abierto y dónde informar de un fragmento obsoleto o de un error en el servidor MCP.
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