Hire-me MCP
hire-me-mcp
hire-me-mcp — это портфолио Marcos Alvarez, переработанное в живой, доступный через API ресурс: публичный анонимный Model Context Protocol (MCP) сервер и сайт на Next.js, которые оба читают одни и те же реальные данные карьеры. Любому ИИ-ассистенту это резюме можно передать как инструмент и получать ответы с цитатами и обоснованиями, а не догадки — без API-ключа, без регистрации, один URL для подключения.

Живой сайт: https://hire-me-mcp-web.vercel.app
Скачиваемое резюме (PDF): генерируется напрямую из
packages/career-data— тот же источник, тот же доменный слой, без отдельно поддерживаемой копии. Ссылка есть в шапке сайта («Download CV») и в разделе Site файла/llms.txt; стабильный путь для скачивания —/cv/<slugified-name>-cv.pdfна указанном выше живом сайте. Перегенерируйте его при любом изменении контента командойpnpm generate:cvи закоммитьте результат (приложенный PDF поставляется с каждым деплоем — собственная сборка Vercel собирает и разворачивает только Next.js-приложение, поэтому генерация PDF в неё намеренно не встроена). Готовый к печати HTML-просмотр того же контента доступен по адресу/cv/print.Документация для ИИ-агентов:
docs/mcp.md(все клиенты, лимиты запросов и устранение неполадок) и собственная точка входа/llms.txtна сайте.Чек-лист безопасности: публикуется вместе с этим запуском в #57 — ссылка появится здесь после объединения
docs/security-checklist.md.Живой MCP-эндпоинт (Streamable HTTP, без аутентификации):
https://hire-me-mcp-web.vercel.app/api/mcpПопробуйте за 30 секунд
Никаких API-ключей, ни OAuth, ни аккаунта. Любой клиент, поддерживающий транспорт MCP Streamable HTTP, может подключиться, вставив указанный выше URL в поле «remote server» / «custom connector».
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 или .vscode/mcp.json):
{
"mcpServers": {
"hire-me-mcp": {
"url": "https://hire-me-mcp-web.vercel.app/api/mcp"
}
}
}Процесс подключения через custom-connector в Claude web/desktop, сырая curl-проверка здоровья, лимиты запросов и устранение неполадок — всё это в docs/mcp.md — каноническом руководстве по подключению. Каждый фрагмент выше генерируется из того же модуля метаданных подключения, из которого читает это руководство (packages/connect-metadata, через pnpm generate:connect), так что он никогда не может разойтись с тем, что сервер реально отдаёт.
Related MCP server: Developer Portfolio MCP Server
Что у него можно спросить
Ответ каждого инструмента содержит ссылку на конкретную запись профиля, роль или проект, из которых он взят, — обоснованные ответы, а не догадки.
«Кто такой Marcos Alvarez и открыт ли он сейчас к новым ролям?»
«Над чем Marcos работал с 2022 года? Проведи меня по его последним ролям.»
«Покажи проекты, где Marcos использовал TypeScript или Kubernetes.»
«Работал ли Marcos с событийно-ориентированными архитектурами? Покажи доказательства.»
«Какой у Marcos опыт руководства инженерными командами и менторства?»
Инструмент | Что отвечает | Пример вопроса |
| Возвращает единственную запись профиля Маркоса Альвареса — имя, заголовок, местоположение, доступность и краткую биографию — одним объектом, с подтверждающими цитатами. Используйте это, чтобы быстро ответить на вопрос «кто этот человек» или «какова его текущая доступность/местоположение». Не используйте для послужной истории по ролям (используйте get-experience), для конкретных деталей проектов (используйте search-projects) или для проверки, заявлен ли конкретный навык или технология (используйте get-skill-evidence). Не принимает входных данных. В обычной работе нет исхода «нет результата» — в наборе данных этого сервера всегда ровно один профиль. | «Кто такой Маркос Альварес, и открыт ли он сейчас для новых ролей?» |
| Возвращает каждую запись из истории работы Маркоса Альвареса, соответствующую необязательному структурированному фильтру — компания, теги технологий, диапазон дат ГГГГ-ММ и статус текущий/прошлый — в виде списка, упорядоченного от самых новых к старым, каждая запись с цитатой. Используйте это, чтобы ответить на вопросы «что он делал в компании X», «над чем он работал в году Y» или «чем он занимается сейчас». При вызове без полей фильтра возвращается полная история. Не используйте для краткого профиля (используйте get-profile), для поиска по ключевым словам в описаниях проектов (используйте search-projects) или для проверки, заявлен ли один именованный навык (используйте get-skill-evidence). Фильтр, не соответствующий ни одной роли, возвращает успешный результат с пустым списком, а не ошибку. | «Над чем Маркос работал с 2022 года? Проведите меня по его последним ролям.» |
| Ищет в портфолио проектов Маркоса Альвареса по ключевому слову и/или тегу технологии и возвращает ранжированные совпадения, каждое с оценкой релевантности, объяснением совпавшего поля и цитатой. Сопоставление — это детерминированный поиск по ключевым словам/тегам по названиям проектов, резюме, текстам и тегам технологий — на сегодня нет семантического или основанного на эмбеддингах понимания запроса. Используйте это, когда просят найти или описать конкретные проекты, например «покажи проекты, где использовался React» или «что он построил с Kubernetes». Не используйте для хронологической истории работы (используйте get-experience) или для проверки, заявлен ли навык вообще, с доказательствами или пробелом (используйте get-skill-evidence). Запрос, не соответствующий ни одному проекту, возвращает успешный результат с пустым списком, а не ошибку; пустой запрос или запрос только из пробелов ведёт себя так же. | «Покажи проекты, где Маркос использовал TypeScript или Kubernetes.» |
| Ищет один именованный навык или технологию и сообщает один из трёх честных исходов: 'claimed' (навык с подтверждающими доказательствами), 'not-claimed' (явный, признанный пробел с собственным заявлением и связанными навыками) или 'unknown' (термин не соответствует ни тому, ни другому). Используйте это, когда спрашивают «знаете ли вы X» или «работали ли вы с Y» об одной конкретной технологии. Не используйте для просмотра полного списка навыков (в этом сервере нет такого инструмента) или для поиска ключевого слова в описаниях проектов (вместо этого используйте search-projects), и это не замена get-experience, когда вопрос касается роли или компании, а не одного навыка. Результат 'not-claimed' или 'unknown' — это нормальный, успешный ответ, а не ошибка — передайте его честно, а не повторяйте попытки или не галлюцинируйте вокруг него. | «Работал ли Маркос с событийно-ориентированными архитектурами? Покажите доказательства.» |
| Выполняет нечёткий семантический поиск по полному тексту карьерного контента Маркоса Альвареса (опыт, проекты, навыки, публикации) и возвращает ранжированные выдержки, каждая с оценкой релевантности и цитатой, или явный результат «релевантный контент не найден», когда ничего не превышает порог сходства. Используйте это для открытых, сквозных или концептуальных вопросов, на которые структурированный поиск не может ответить напрямую — например, «работал ли он с событийно-ориентированными архитектурами», «каков его опыт руководства командами», «что-нибудь об оптимизации затрат». Не используйте, когда вопрос сводится к конкретному структурированному поиску, на который детерминированные инструменты уже отвечают точно: get-profile для того, кто он, get-experience для истории работы по роли/компании/диапазону дат, search-projects для поиска проектов по ключевым словам/тегам и get-skill-evidence для проверки одного конкретного именованного навыка или технологии — сначала предпочитайте их и обращайтесь к этому инструменту только если они не подходят. Этот инструмент дороже за вызов (он встраивает запрос) и подчиняется тому же дороже за вызов (он встраивает запрос) и подчиняется тому же общесерверному ограничению скорости, что и любой другой инструмент здесь — не вызывайте его повторно для одного и того же вопроса. | «Каков опыт Маркоса в руководстве инженерными командами и наставничестве?» |
(Шестой инструмент, ping, существует исключительно как диагностика подключения.)
Карта архитектуры
Монорепозиторий на pnpm + Turborepo. Node >= 22 (CI и Vercel работают на 24), pnpm 10 (закреплён через
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 зависит от packages/* выше через протокол workspace:* — никогда не относительные
импорты ../../packages/... или хаки с путями в tsconfig. packages/core и packages/career-data
остаются без фреймворков, поскольку они также напрямую поддерживают публичную конечную точку MCP. Все пакеты расширяют
общий tsconfig.base.json (strict: true).
Локальная разработка
Предварительные требования: Node >= 22, pnpm 10 (corepack enable автоматически подхватывает закреплённую версию).
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 runТребуемые переменные окружения (только имена — см. .env.example для полного обоснования и того, где
каждая используется; реальные значения никогда не коммитятся):
Переменная | Назначение |
| Необязательное переопределение собственного абсолютного origin сайта. Не требуется — Vercel определяет его автоматически. |
| Учётные данные Upstash Redis, обеспечивающие ограничение частоты запросов |
| Переопределяют окно ограничения частоты запросов конечной точки MCP. |
| Выбирают и фиксируют провайдера/идентификатор модели чат-агента. |
| Требуется, когда |
| Требуется только когда |
| Настройка защитных ограничений чата — см. |
| Строка подключения Neon Postgres для модуля |
| Создание/удаление временной ветки Neon только для набора интеграционных тестов БД — никогда не используется с основной базой данных. |
Ни одна из них не требуется для успешного прохождения pnpm turbo lint typecheck test build в чистом клоне.
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 registryПолная механика тестовой пирамиды (preview e2e, Lighthouse, pre-commit хуки, CI-задачи, защита веток), а также способ воспроизведения развёртывания Vercel локально описаны в docs/development.md и docs/deployment.md — в этом разделе перечислены только команды, а не «почему».
Подробнее
AGENTS.md— правила для любого кодинг-агента, работающего с этой кодовой базой: разработка через тесты (test-first), канонические команды и три уровня, обеспечивающие и то, и другое.docs/mcp.md— полное руководство по подключению MCP (каждый клиент, ограничения частоты запросов, устранение неполадок), включая раздел «Discovery: machine-readable metadata» о JSON-LDPerson, карточках OpenGraph/Twitter для каждого маршрута и/.well-known/mcp.json— а также о том, какие из них определены спецификацией MCP (ни одна, для этого сервера без аутентификации), а какие являются соглашением проекта./llms.txt— собственная точка входа агента на сайте, для посетителя, которому выдали развёрнутый URL, а не этот репозиторий.Security checklist — разовый проход по безопасности (аудит зависимостей, гигиена секретов, фаззинг входных данных MCP, повторная проверка ограничений частоты запросов) появится в #57; этот раздел будет ссылаться напрямую на
docs/security-checklist.md, как только этот PR будет объединён.Issue tracker — дорожная карта, открытые задачи и место, куда сообщать об устаревшем фрагменте кода или ошибке в 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