Skip to main content
Glama
garusis

Hire-me MCP

by garusis

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.

CI Latest release Deployed on Vercel

Terminal recording of a real MCP session: connecting to the live hire-me-mcp endpoint, listing its tools, then calling get-skill-evidence with "event-driven architecture" and receiving a cited, grounded answer pointing at a specific work-history entry.

  • Live-Website: https://hire-me-mcp-web.vercel.app

  • Herunterladbarer Lebenslauf (PDF): direkt aus packages/career-data generiert – 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.pdf auf der obigen Live-Website. Regenerieren Sie ihn jederzeit bei Inhaltsänderungen mit pnpm generate:cv und 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/print bereitgestellt.

  • Agent-Dokumentation: docs/mcp.md (jeder Client, Ratenlimits, Fehlerbehebung) und der eigene Einstiegspunkt /llms.txt der Website.

  • Sicherheits-Checkliste: erscheint zusammen mit diesem Launch in #57 – wird hier verlinkt, sobald docs/security-checklist.md gemerged wird.

  • Live-MCP-Endpunkt (Streamable HTTP, ohne Authentifizierung):

https://hire-me-mcp-web.vercel.app/api/mcp

Probieren 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/mcp

Cursor / 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

get-profile

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?“

get-experience

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.“

search-projects

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.“

get-skill-evidence

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.“

search-career

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/hooks

apps/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 run

Erforderliche 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

SITE_URL

Optionale Überschreibung für den absoluten Ursprung der Website. Nicht erforderlich – Vercel leitet ihn automatisch ab.

UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN

Upstash-Redis-Anmeldedaten für das Rate-Limiting von /api/mcp. Wenn nicht gesetzt, schlägt das System offen fehl (keine Begrenzung), anstatt einen Fehler zu erzeugen.

RATELIMIT_MAX_REQUESTS, RATELIMIT_WINDOW_SECONDS

Überschreiben das Rate-Limit-Fenster des MCP-Endpunkts.

CHAT_PROVIDER, CHAT_MODEL_ID

Auswählen und Festlegen des Modellanbieters/der Modell-ID des Chat-Agenten.

GOOGLE_GENERATIVE_AI_API_KEY

Erforderlich, wenn CHAT_PROVIDER=google (Standard).

ANTHROPIC_API_KEY

Nur erforderlich, wenn CHAT_PROVIDER=anthropic.

CHAT_SESSION_RATELIMIT_MAX_REQUESTS, CHAT_SESSION_RATELIMIT_WINDOW_SECONDS, CHAT_IP_RATELIMIT_MAX_REQUESTS, CHAT_IP_RATELIMIT_WINDOW_SECONDS, CHAT_AGENT_MAX_STEPS

Chat-Schutzmechanismen-Abstimmung – siehe apps/web/README.md „Chat guardrails“.

DATABASE_URL

Neon-Postgres-Verbindungszeichenfolge für das Modul @hire-me-mcp/core/db (Migrationen, Ingestion, searchCareer). Siehe packages/core/README.md.

NEON_API_KEY, NEON_PROJECT_ID

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 registry

Die 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-LD Person, 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.md verlinken, sobald dieser PR gemergt wird.

  • Issue-Tracker – Roadmap, offene Arbeiten und wo man einen veralteten Schnipsel oder einen Fehler im MCP-Server melden kann.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
1dResponse time
Release cycle
Releases (12mo)
Commit activity

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

  • F
    license
    Not graded
    quality
    C
    maintenance
    An 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.
  • A
    license
    A
    quality
    D
    maintenance
    Turn any data source into an MCP server in 5 minutes. Build knowledge bases that AI assistants like Claude and Cursor can query directly.
    2
    28
    23
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    A 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.

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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