Hire-me MCP
hire-me-mcp
hire-me-mcp ist Marcos Alvarez' Portfolio, neu aufgebaut als eine live abfragbare API: ein öffentlicher, anonymer
Model Context Protocol (MCP)-Server und eine Next.js-Website, die beide
aus denselben echten Karrieredaten lesen, sodass jeder KI-Assistent diesen Lebenslauf als Werkzeug übergeben bekommen und
zitierte, fundierte Antworten statt Vermutungen erhalten kann – ohne API-Schlüssel, keine Anmeldung, eine URL zum Verbinden.

Live-Website: https://hire-me-mcp-web.vercel.app
Herunterladbarer Lebenslauf (PDF): direkt aus
packages/career-datageneriert – gleiche Quelle, gleiche Domänenschicht, keine separat gepflegte Kopie. Verlinkt aus dem Website-Header („Download CV") und/llms.txt's Site-Abschnitt; der stabile Download-Pfad ist/cv/<slugified-name>-cv.pdfauf der obigen Live-Website. Regenerieren Sie ihn jederzeit bei Inhaltsänderungen mitpnpm generate:cvund committen Sie das Ergebnis (das committete PDF wird mit jedem Deploy ausgeliefert – Vercels eigener Build baut/stellt nur die Next.js-App bereit, daher ist die PDF-Generierung bewusst nicht daran angeschlossen). Eine druckfertige HTML-Ansicht des gleichen Inhalts wird unter/cv/printbereitgestellt.Agent-Dokumentation:
docs/mcp.md(jeder Client, Ratenlimits, Fehlerbehebung) und der eigene Einstiegspunkt/llms.txtder Website.Sicherheits-Checkliste: erscheint zusammen mit diesem Launch in #57 – wird hier verlinkt, sobald
docs/security-checklist.mdgemerged wird.Live-MCP-Endpunkt (Streamable HTTP, ohne Authentifizierung):
https://hire-me-mcp-web.vercel.app/api/mcpProbieren Sie es in 30 Sekunden aus
Kein API-Schlüssel, kein OAuth, kein Konto. Jeder Client, der den Streamable HTTP-Transport von MCP spricht, kann sich verbinden, indem er die obige URL in ein Feld für „Remote-Server" / „Benutzerdefinierten Connector" einfügt.
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 oder .vscode/mcp.json):
{
"mcpServers": {
"hire-me-mcp": {
"url": "https://hire-me-mcp-web.vercel.app/api/mcp"
}
}
}Der Custom-Connector-Ablauf von Claude web/desktop, ein roher curl-Health-Check, Ratenlimits und
Fehlerbehebung finden sich alle in docs/mcp.md – dem kanonischen Verbindungsleitfaden.
Jedes obige Snippet wird aus demselben Verbindungsmetadaten-Modul generiert, aus dem dieser Leitfaden liest
(packages/connect-metadata, über pnpm generate:connect), sodass es nie von dem abweichen kann, was
der Server tatsächlich ausliefert.
Related MCP server: Developer Portfolio MCP Server
Was Sie fragen können
Jede Tool-Antwort enthält ein Zitat zurück zum spezifischen Profildatensatz, zur Rolle oder zum Projekt, aus dem sie stammt – fundierte Antworten, keine Vermutungen.
"Wer ist Marcos Alvarez, und ist er derzeit offen für neue Rollen?"
"Woran hat Marcos seit 2022 gearbeitet? Gehen Sie mich durch seine letzten Rollen."
"Zeigen Sie mir Projekte, in denen Marcos TypeScript oder Kubernetes verwendet hat."
"Hat Marcos mit ereignisgesteuerten Architekturen gearbeitet? Zeigen Sie mir die Belege."
"Wie sind Marcos' Erfahrungen mit der Leitung von Engineering-Teams und Mentoring?"
Tool | Was es beantwortet | Beispielfrage |
| Gibt den einzelnen Profildatensatz von Marcos Alvarez zurück — Name, Headline, Standort, Verfügbarkeit und eine kurze Biografie — als ein Objekt, mit Belegen. Verwende dies, um auf einen Blick zu beantworten, „wer diese Person ist“ oder „wie ihre aktuelle Verfügbarkeit bzw. ihr Standort ist“. Verwende es nicht für eine rollenweise Berufshistorie (verwende get-experience), für spezifische Projektdetails (verwende search-projects) oder um zu prüfen, ob eine bestimmte Fähigkeit oder Technologie beansprucht wird (verwende get-skill-evidence). Nimmt keine Eingaben entgegen. Im normalen Betrieb gibt es kein „kein Ergebnis“-Ergebnis — der Datensatz dieses Servers enthält immer genau ein Profil. | „Wer ist Marcos Alvarez, und ist er derzeit offen für neue Rollen?“ |
| Gibt jeden Eintrag aus der Berufshistorie von Marcos Alvarez zurück, der einem optionalen strukturierten Filter entspricht — Unternehmen, Technologie-Tags, ein YYYY-MM-Datumsbereich und aktueller/vergangener Status — als Liste, sortiert nach neuestem zuerst, jeder Eintrag mit einem Beleg. Verwende dies, um zu beantworten, „was hat er bei Unternehmen X gemacht“, „woran hat er im Jahr Y gearbeitet“ oder „was macht er gerade“. Ohne Filterfelder aufgerufen, gibt es die vollständige Historie zurück. Verwende es nicht für die einzelne Profilzusammenfassung (verwende get-profile), um Projektbeschreibungen nach Stichwort zu durchsuchen (verwende search-projects) oder um zu prüfen, ob eine benannte Fähigkeit beansprucht wird (verwende get-skill-evidence). Ein Filter, der keine Rollen findet, gibt ein erfolgreiches Ergebnis mit einer leeren Liste zurück, keinen Fehler. | „Woran hat Marcos seit 2022 gearbeitet? Geh mit mir seine letzten Rollen durch.“ |
| Durchsucht das Projektportfolio von Marcos Alvarez nach Stichwort und/oder Technologie-Tag und gibt rankierte Treffer zurück, jeweils mit einem Relevanzwert, einer Erklärung des übereinstimmenden Felds und einem Beleg. Die Übereinstimmung ist eine deterministische Stichwort-/Tag-Suche gegen Projektnamen, Zusammenfassungen, Texte und Technologie-Tags — es gibt heute kein semantisches oder einbettungsbasiertes Verständnis der Abfrage. Verwende dies, wenn du gebeten wirst, bestimmte Projekte zu finden oder zu beschreiben, z. B. „zeig mir Projekte, die React verwendet haben“ oder „was haben sie mit Kubernetes gebaut“. Verwende es nicht für eine chronologische Berufshistorie (verwende get-experience) oder um zu prüfen, ob eine Fähigkeit überhaupt beansprucht wird, mit Beleg oder Lücke (verwende get-skill-evidence). Eine Abfrage, die keine Projekte findet, gibt ein erfolgreiches Ergebnis mit einer leeren Liste zurück, keinen Fehler; eine leere oder nur aus Leerzeichen bestehende Abfrage verhält sich genauso. | „Zeig mir Projekte, in denen Marcos TypeScript oder Kubernetes verwendet hat.“ |
| Schlägt eine einzelne benannte Fähigkeit oder Technologie nach und meldet eines von drei ehrlichen Ergebnissen: „beansprucht“ (die Fähigkeit mit ihren unterstützenden Belegen), „nicht beansprucht“ (eine explizite, anerkannte Lücke mit eigener Aussage und verwandten Fähigkeiten) oder „unbekannt“ (der Begriff passt zu keinem von beiden). Verwende dies, wenn du zu einer bestimmten Technologie gefragt wirst: „kennst du X“ oder „hast du mit Y gearbeitet“. Verwende es nicht, um die vollständige Fähigkeitsliste zu durchsuchen (es gibt kein solches Tool auf diesem Server) oder um Projektbeschreibungen nach einem Stichwort zu durchsuchen (verwende stattdessen search-projects), und es ist kein Ersatz für get-experience, wenn die Frage eine Rolle oder ein Unternehmen betrifft und nicht eine einzelne Fähigkeit. Ein „nicht beansprucht“- oder „unbekannt“-Ergebnis ist eine normale, erfolgreiche Antwort, kein Fehler — gib es ehrlich weiter, statt es erneut zu versuchen oder darum herum zu halluzinieren. | „Hat Marcos mit ereignisgesteuerten Architekturen gearbeitet? Zeig mir die Belege.“ |
| Führt eine unscharfe, semantische Suche über den vollständigen Text der Karriereinhalte von Marcos Alvarez durch (Erfahrung, Projekte, Fähigkeiten, Schriften) und gibt rankierte Auszüge zurück, jeweils mit einem Relevanzwert und einem Beleg, oder ein explizites „kein relevanter Inhalt gefunden“-Ergebnis, wenn nichts die Ähnlichkeitsschwelle überschreitet. Verwende dies für offene, übergreifende oder konzeptionelle Fragen, die eine strukturierte Suche nicht direkt beantworten kann — z. B. „hat er mit ereignisgesteuerten Architekturen gearbeitet“, „wie sind seine Erfahrungen mit der Führung von Teams“, „irgendetwas zu Kostenoptimierung“. Verwende es nicht, wenn die Frage einer spezifischen, strukturierten Suche entspricht, die die deterministischen Tools bereits exakt beantworten: get-profile für die Frage, wer er ist, get-experience für eine Rollen-/Unternehmens-/Datumsbereichs-Berufshistorie, search-projects für die Stichwort-/Tag-Projektsuche und get-skill-evidence, um eine bestimmte benannte Fähigkeit oder Technologie zu prüfen — bevorzuge diese zuerst und greife nur dann auf dieses Tool zurück, wenn sie nicht passen. Dieses Tool ist pro Aufruf teurer (es bettet die Abfrage ein) und unterliegt derselben pro Aufruf teurer (es bettet die Abfrage ein) und unterliegt derselben serverweiten Ratenbegrenzung wie jedes andere Tool hier — ruf es nicht wiederholt für dieselbe Frage auf. | „Wie sind Marcos‘ Erfahrungen mit der Führung von Engineering-Teams und Mentoring?“ |
(Ein sechstes Tool, ping, existiert ausschließlich als Konnektivitätsdiagnose.)
Architekturübersicht
Ein pnpm + Turborepo-Monorepo. Node >= 22 (CI und Vercel laufen mit 24), pnpm 10 (festgelegt über 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 hängt über das workspace:*-Protokoll von den packages/* oben ab — niemals relative ../../packages/...-Importe oder tsconfig-Pfad-Hacks. packages/core und packages/career-data bleiben framework-frei, da sie auch den öffentlichen MCP-Endpunkt direkt unterstützen. Alle Pakete erweitern die gemeinsame tsconfig.base.json (strict: true).
Lokale Entwicklung
Voraussetzungen: Node >= 22, pnpm 10 (corepack enable übernimmt die festgelegte Version automatisch).
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 runErforderliche Umgebungsvariablen (nur Namen — siehe .env.example für die vollständige Begründung und wo jede einzelne verwendet wird; echte Werte werden nie committet):
Variable | Zweck |
| Optionale Überschreibung für den absoluten Ursprung der Website. Nicht erforderlich – Vercel leitet ihn automatisch ab. |
| Upstash-Redis-Anmeldedaten für das Rate-Limiting von |
| Überschreiben das Rate-Limit-Fenster des MCP-Endpunkts. |
| Auswählen und Festlegen des Modellanbieters/der Modell-ID des Chat-Agenten. |
| Erforderlich, wenn |
| Nur erforderlich, wenn |
| Chat-Schutzmechanismen-Abstimmung – siehe |
| Neon-Postgres-Verbindungszeichenfolge für das Modul |
| Erstellen/Löschen eines Wegwerf-Neon-Zweigs nur für die DB-Integrationstestsuite – wird nie gegen die Hauptdatenbank verwendet. |
Keine davon ist erforderlich, damit pnpm turbo lint typecheck test build auf einem sauberen Checkout erfolgreich durchläuft.
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 registryDie vollständigen Testpyramiden-Mechanismen (Preview-E2E, Lighthouse, Pre-Commit-Hooks, CI-Jobs, Branch-Schutz) sowie die lokale Reproduktion des Vercel-Deployments finden Sie in docs/development.md und docs/deployment.md – dieser Abschnitt listet nur die Befehle, nicht das „Warum“.
Mehr erfahren
AGENTS.md– Regeln für jeden Coding-Agenten, der an dieser Codebasis arbeitet: Test-first-Entwicklung, die kanonischen Befehle und die drei Ebenen, die beides durchsetzen.docs/mcp.md– der vollständige MCP-Verbindungsleitfaden (jeder Client, Rate-Limits, Fehlerbehebung), einschließlich des Abschnitts „Discovery: machine-readable metadata“ zu JSON-LDPerson, OpenGraph/Twitter-Karten pro Route und/.well-known/mcp.json– und welche davon MCP-Spezifikation-definiert sind (keine, für diesen Server ohne Authentifizierung) im Gegensatz zu Projektkonventionen./llms.txt– der eigene Agenten-Einstiegspunkt der Website, für einen Besucher, der die bereitgestellte URL statt dieses Repos erhalten hat.Sicherheitscheckliste – ein einmaliger Sicherheitsdurchlauf (Abhängigkeitsaudit, Geheimnis-Hygiene, MCP-Eingabe-Fuzzing, erneute Rate-Limit-Überprüfung) wird in #57 veröffentlicht; dieser Abschnitt wird direkt auf
docs/security-checklist.mdverlinken, sobald dieser PR gemergt wird.Issue-Tracker – Roadmap, offene Arbeiten und wo man einen veralteten Schnipsel oder einen Fehler im MCP-Server melden kann.
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