github-talent-mcp
github-talent-mcp
MCP-Server, der GitHub-Entwickler für die technische Personalbeschaffung durchsucht, bewertet und einordnet.
Funktioniert mit Claude (Code & Desktop), GitHub Copilot (CLI & Desktop-App) und Cursor (IDE & Grok Bot) – mit jedem MCP-Client, der stdio spricht.
Marke
Related MCP server: mcp-github-server
Demo
https://github.com/user-attachments/assets/b2dbe9e0-26ee-4849-861a-4b5cb268facc
Kandidaten für eine echte Anthropic-JD suchen, live in Claude Cowork.
https://github.com/user-attachments/assets/2dfd82b4-3eb5-4f2b-bc0a-2580b95043e4
Profil-Tiefenanalyse
Hol dir das vollständige Entwicklerprofil und den Aktivitäts-Score für torvalds auf GitHub
Claude ruft get_developer_profile("torvalds") auf und liefert:
Feld | Wert |
Aktivitäts-Score | 150 (Reputations-Untergrenze angewendet) |
Standort | Portland, OR |
Follower | 293.321 |
Erhaltene Sterne | 235.068 |
Hauptsprache | C (98,1 %) |
Commits (90 Tage) | 0 |
PRs (90 Tage) | 0 |
Nennenswerte Repos | linux (183K Sterne), libdc-for-dirk, subsurface-for-dirk, uemacs, pesern-resolve |
Profil-README | Nein |
Einstellbar | Nein |
Torvalds hat in letzter Zeit keine GitHub-Aktivität, weil die Kernel-Entwicklung über Mailinglisten läuft, nicht über GitHub-PRs. Die Reputations-Untergrenze (293K Follower) überschreibt den Verhaltens-Score und setzt ihn auf 150.
Ranking der Repo-Mitwirkenden
Hol dir die Top-Mitwirkenden von huggingface/transformers und ordne sie für eine Rolle als Gründungs-ML-Ingenieur bei einem KI-Startup ein
Claude ruft get_repo_contributors("huggingface/transformers") → rank_candidates für die Top-24-Mitwirkenden auf:
Rang | Entwickler | Kombinierter Score | Aktivität | Relevanz | Stärken |
1 | stas00 | 83,4 | 150 | 72 | 4.553 Sterne, trägt zu großen OSS-, MIT-lizenzierten Repos bei |
2 | cyyever | 80,8 | 120 | 64 | 1.217 Follower, aktiver Mitwirkender, Profil-README |
3 | Cyrilvallez | 77,2 | 120 | 56 | Aktiv: 13 Commits + 57 PRs in 90 Tagen, starke OSS-Präsenz |
4 | ArthurZucker | 74,4 | 120 | 48 | 37 PRs in 90 Tagen, trägt zu huggingface/transformers bei |
5 | ydshieh | 72,0 | 120 | 40 | Aktiv: 9 Commits + 40 PRs in 90 Tagen |
Kombinierter Score = Aktivität × 0,4 + Relevanz × 0,6. Relevanz ist die Keyword-Überschneidung mit der Stellenbeschreibung (ML, KI, Startup, Ingenieur usw.).
Installation
1. uv installieren
Der Server läuft über uvx, das ihn für dich herunterlädt und startet – kein Klonen, keine
virtuelle Umgebung, und Updates erhältst du automatisch.
brew install uvKein Homebrew? curl -LsSf https://astral.sh/uv/install.sh | sh
2. Ein GitHub-Personal-Access-Token erstellen
Ohne Token erlaubt GitHub 60 Anfragen pro Stunde, und ein einzelnes Kandidatenprofil kostet 6–15 davon. Dir gehen mitten in der Suche die Anfragen aus, und Profile kommen leer zurück. Mit Token erhältst du 5.000 pro Stunde.
Gehe zu github.com/settings/tokens und erstelle ein feingranulares oder klassisches Token mit diesen Scopes:
Scope | Warum |
| Benutzerprofile lesen und Benutzer durchsuchen |
| Öffentliche Repo-Daten, Sprachen, Mitwirkende lesen |
Kopiere das Token – nach dem Verlassen der Seite kannst du es nicht mehr ansehen.
3. Verbinden
GitHub Copilot (CLI und Desktop-App)
Wichtig: Setze das Token selbst in die Konfiguration, nicht ${GITHUB_TOKEN}. Desktop-Apps werden vom
Betriebssystem gestartet, nicht von deiner Shell, daher lesen sie nie .zshrc, und eine
Umgebungsvariablen-Referenz wird zu nichts expandiert. Der Server startet dann einwandfrei, läuft
unauthentifiziert und schlägt nach ein paar Kandidaten still fehl. Eine .env-Datei hat dasselbe
Problem, es sei denn, die Konfiguration setzt zusätzlich cwd auf das Projektverzeichnis, weil sie
relativ zum Arbeitsverzeichnis gelesen wird.
Beide teilen sich eine Konfiguration. Füge das hier in ein Terminal ein – es füllt dein Token für dich aus:
mkdir -p ~/.copilot
TOKEN=$(gh auth token) # or: TOKEN=github_pat_xxxxxxxx
cat > ~/.copilot/mcp-config.json <<EOF
{
"mcpServers": {
"github-talent": {
"type": "local",
"command": "uvx",
"args": ["github-talent-mcp"],
"env": { "GITHUB_TOKEN": "$TOKEN" },
"tools": ["*"]
}
}
}
EOF
chmod 600 ~/.copilot/mcp-config.jsonBeende Copilot vollständig und öffne es erneut, dann führe /mcp show aus – du solltest 9 Tools unter
github-talent sehen. Die App akzeptiert Server auch unter Einstellungen → MCP, falls du lieber keine
Datei anfassen möchtest.
Wenn uvx nicht gefunden wird, gib seinen vollständigen Pfad als command an (which uvx zeigt ihn).
Claude Code
claude mcp add github-talent --env GITHUB_TOKEN=github_pat_xxxxxxxx -- uvx github-talent-mcpStarte Claude Code neu und verifiziere mit /mcp.
Claude Desktop
Wichtig: Dieselbe Token-in-Konfiguration-Regel wie bei Copilot gilt auch hier.
Füge zu ~/Library/Application Support/Claude/claude_desktop_config.json hinzu:
{
"mcpServers": {
"github-talent": {
"command": "uvx",
"args": ["github-talent-mcp"],
"env": {
"GITHUB_TOKEN": "github_pat_xxxxxxxx"
}
}
}
}Starte Claude Desktop neu.
Cursor IDE und Cloud Agents (Grok Bot)
Hinweis: Eine Marketplace-Anwendung wurde eingereicht und befindet sich derzeit in der Prüfung.
${GITHUB_TOKEN} in der mcp.json und .cursor-plugin/plugin.json dieses Repos ist eine
Plugin-Variable für diesen Installationspfad. Cloud Agents und eine handschriftliche
mcp.json expandieren sie nicht. Füge das PAT ein.
Nach Marketplace-Listung (Cursor IDE mit einem Klick):
Installiere
uv, falls es auf deinem Rechner noch nicht vorhanden ist:brew install uvKein Homebrew?
curl -LsSf https://astral.sh/uv/install.sh | shGehe in der Cursor IDE zu Plugins → Hinzufügen, suche nach GitHub Talent Search und installiere es.
Gib bei Aufforderung dein GitHub-Personal-Access-Token ein (feingranular mit
read:user- undpublic_repo-Scopes).
Bis zur Marketplace-Freigabe – Cursor IDE:
Verknüpfe dieses Repository per Symlink mit ~/.cursor/plugins/local/github-talent-mcp/ und
lade Cursor dann neu (Cmd/Ctrl+Shift+P → Fenster neu laden).
mkdir -p ~/.cursor/plugins/local
ln -s /path/to/github-talent-mcp ~/.cursor/plugins/local/github-talent-mcpOder füge eine Benutzer-/Projekt-mcp.json (~/.cursor/mcp.json oder .cursor/mcp.json)
mit dem Befehl uvx, den Argumenten ["github-talent-mcp"] und GITHUB_TOKEN auf das
PAT selbst gesetzt hinzu. Desktop-Interpolation, falls du sie nutzt, ist ${env:GITHUB_TOKEN} – nicht
${GITHUB_TOKEN}. Wenn der Start fehlschlägt, setze command auf den vollständigen Pfad von which uvx
(häufig /opt/homebrew/bin/uvx bei Apple-Silicon-Homebrew).
Bis zur Marketplace-Freigabe – Cloud Agents (cursor.com/agents):
Auf der Agents-Startseite gibt es kein MCP-Dropdown (Umgebung, Secrets und Cloud Agents einrichten sind das nicht). Das Bedienelement ist die +-Schaltfläche links von der Modellauswahl.
Setze
uvxauf den Standard-PATH der Cloud-Agent-VM. Stdio-MCP-Start liest.bashrcnicht. Wennuvxnur in~/.local/binliegt, schlägt der Server mitspawn uvx ENOENTfehl und lädt 0 Tools. Füge das zum Umgebungs- Install-Skript hinzu, speichere und starte dann einen neuen Agenten:curl -LsSf https://astral.sh/uv/install.sh | sh sudo install -m 0755 "$HOME/.local/bin/uv" /usr/local/bin/uv sudo install -m 0755 "$HOME/.local/bin/uvx" /usr/local/bin/uvxKlicke auf cursor.com/agents auf + → MCP-Server. Bearbeite
github-talent, falls es bereits gelistet ist; andernfalls MCP hinzufügen.In MCP-Server bearbeiten:
Name:
github-talentTyp: Befehl (nicht URL). Dieser Server ist stdio, nicht HTTP. Cloud Agents unterstützen kein SSE.
Befehl:
uvxArgumente:
github-talent-mcp(lass zusätzliche leere Argumentzeilen leer)Geheimnisse: Schlüssel
GITHUB_TOKEN, Wert dein PAT (ghp_odergithub_pat_). Füge das Token ein. Ein Secret namensGITHUB_TOKENim Umgebungsbereich wird nicht in die MCP-Umgebung kopiert.Setze den Befehl nicht auf
/home/box/bin/github-talent-mcp.sh. Dieser Pfad existiert nicht auf Cloud-Agent-VMs; der Namespace wird angehängt und lädt trotzdem 0 Tools.
Speichern. Schalte
github-talentein. Starte einen neuen Cloud Agent – laufende Instanzen behalten den alten Launcher. Du solltest 9 Tools untergithub-talentsehen.
Prüfen, ob es wirklich funktioniert
Rufe get_developer_profile auf (das MCP-Tool, nicht python / gh / curl). Ein
echtes Profil ist 120–170 Zeilen lang. Drei Zeilen bedeuten, dass der Aufruf fehlgeschlagen ist – fast
immer ein fehlendes oder nicht lesbares Token. Wenn jedes Tool drei Zeilen zurückgibt, während der Server
weiterhin als verbunden angezeigt wird, ist das das Kennzeichen für unauthentifizierten Betrieb.
Eine formatierte Torvalds-Tabelle ist kein Beweis für MCP. Cloud Agents können
github_talent_mcp aus diesem Repo importieren und dasselbe ~149-zeilige Profil ausgeben,
während die MCP-Erkennung immer noch fehlschlägt (spawn uvx ENOENT). Bestätige, dass die 9 Tools
geladen wurden und dass der Aufruf über das MCP-Tool lief.
Aus dem Quellcode ausführen
Nur nötig, wenn du den Server ändern möchtest:
git clone https://github.com/carolinacherry/github-talent-mcp.git
cd github-talent-mcp
uv syncVerwende dann uv run --directory /path/to/github-talent-mcp github-talent-mcp als Befehl in
einer beliebigen Konfiguration oben.
Ausprobieren
Nach der Installation füge diese Prompts ein, um zu verifizieren, dass alles funktioniert:
Basissuche:
Finde Python-Entwickler in Raleigh, die in den letzten 60 Tagen aktiv waren
Profil-Tiefenanalyse:
Hol dir das vollständige Entwicklerprofil und den Aktivitäts-Score für torvalds auf GitHub
Vollständiger Workflow:
Finde 10 ML-Ingenieure in San Francisco, die in den letzten 30 Tagen aktiv waren, und ordne sie dann für eine Rolle als Senior-LLM-Inference-Ingenieur ein
Repo-Mitwirkende:
Hol dir die Top-Mitwirkenden von huggingface/transformers und ordne sie für eine Rolle als Gründungs-ML-Ingenieur bei einem KI-Startup ein
JD-Bewertung:
Bewerte diese Kandidaten gegen diese Stellenbeschreibung: [JD einfügen]. Kandidaten: tiangolo, karpathy, hwchase17
Kandidaten vergleichen:
Vergleiche tiangolo und hwchase17 für eine Rolle als Senior-Python-AI-Ingenieur
Massenbewertung:
Bewerte diese 10 GitHub-Benutzernamen und gib mir eine sortierte Tabelle: [Liste einfügen]
Kontaktaufnahme:
Erstelle eine lockere Recruiter-Nachricht für tiangolo zu einer Senior-Python-Rolle bei Acme. Mein Name ist Daniel.
Interview-first-Sourcing
Vage Aufforderungen erzeugen vage Shortlists, daher ist der Server darauf ausgelegt, Sie zu interviewen, bevor er sucht. Bitten Sie ihn, „Kandidaten für eine Rolle zu finden", und er ruft zuerst plan_search auf – er erkennt die Rollenfamilie und stellt gezielte Rückfragen (Seniorität, Pflichtfähigkeiten, Standort, Ausschlusskriterien) und, am wichtigsten, nach der Stellenbeschreibung: Fügen Sie den vollständigen Text ein oder teilen Sie einen öffentlichen Link und fügen Sie ein, was er anzeigt. Er sucht erst, wenn er echte Kriterien hat.
Probieren Sie es aus: „Finde mir Senior-Sicherheitsingenieure." → Der Assistent sollte nach der JD und Ihren Muss-Kriterien fragen, bevor er etwas ausführt.
Möchten Sie stattdessen einen schnellen, wiederholbaren Lauf? Geben Sie ihm alles im Voraus – „Bewerte diese 15 Benutzernamen anhand dieser JD: …" – oder legen Sie die Suche auf bestimmte Repos fest, und er überspringt das Interview.
Tools
Tool | Beschreibung |
| Intake-Schritt – analysiert eine Sourcing-Anfrage, erkennt die Rollenfamilie und gibt gezielte Rückfragen zurück (einschließlich: JD einfügen oder öffentlichen Link teilen), die vor der Suche zu stellen sind. Rufen Sie dies zuerst auf. |
| Suchen Sie GitHub-Benutzer nach Sprache, Standort, Aktivität, Followern. Verwenden Sie für themenbasiertes Sourcing stattdessen |
| Tiefe Profilanreicherung: Sprachen, Sterne, Commits + PRs, OSS-Beiträge, Lizenzaufschlüsselung, Profil-README und Aktivitätsbewertung mit Aufschlüsselung. |
| Bewerten Sie Benutzernamen anhand einer Stellenbeschreibung. Gibt sortierte Kandidaten mit kombiniertem Score, Stärken, Lücken und Begründung zurück. |
| Bewerten Sie Kandidaten anhand einer JD mit Aufschlüsselung nach Dimensionen (Technologie-Stack, Erfahrungsniveau, OSS-Signal, Führung). Gibt Lücken und personalisierte Interviewfragen zurück. |
| Nebeneinander-Vergleich von 2-5 Kandidaten. Zeigt Dimensionssieger und eine Empfehlung. Optional anhand einer JD bewertet. |
| Bewerten Sie bis zu 100 GitHub-Benutzernamen in einem Aufruf. Gibt eine sortierte Markdown-Tabelle oder CSV zurück. Unterstützt optionales Abgleichen mit JD. |
| Generieren Sie personalisierte Recruiter-Nachrichten (kurz/mittel/detailliert), die auf die tatsächlichen Repos und Beiträge des Kandidaten verweisen. Erfordert Ihren Firmennamen und Absendernamen. Lässiger oder formeller Ton. |
| Top-Mitwirkende für jedes Repo. Akzeptiert |
Scoring
Der Aktivitäts-Score kombiniert zwei Ebenen: Verhaltenssignale (was Sie kürzlich getan haben) und eine Reputationsuntergrenze (was Sie im Laufe der Zeit aufgebaut haben).
Behavioral Score (0-205)
Signal | Max Punkte | Wie |
Commits + PRs (letzte 90 Tage) | 60 | Push-Commits + PR-Eröffnungen (PRs mit Gewichtung x3). Erfasst sowohl Push-basierte als auch PR-basierte Workflows. |
Sterne auf Repos | 40 | Persönliche Repo-Sterne + Sterne auf Repos, zu denen Sie beitragen. Org-Repo-Maintainer erhalten Anerkennung. |
Profil-README | 20 | Vorhandensein eines Profil-READMEs (github.com/username/username). |
Follower | 20 | Auf 20 begrenzt. |
Repos mit Beschreibungen | 20 | Verhältnis der Repos, die Beschreibungen haben. Signal für Sorgfalt und Politur. |
Permissive Lizenz-Repos | 15 | Hat mindestens ein Repo mit MIT, Apache-2.0, BSD, ISC oder Unlicense. |
Bedeutende OSS-Beiträge | 30 | PRs, Pushes oder Issues auf Repos, die Sie nicht besitzen. Begrenzt auf 3 Repos (10 Punkte pro Repo). |
Reputation Floor
Der Verhaltens-Score allein bestraft Entwickler, deren Arbeit keine GitHub-Ereignisse erzeugt – Torvalds arbeitet über Mailinglisten, leitende Maintainer mergen über Org-Bots, und viele Ingenieure arbeiten in privaten Repos.
Die Reputationsuntergrenze stellt sicher, dass kumulative Wirkung nicht durch ein ruhiges Quartal ausgelöscht wird:
Schwelle | Untergrenze |
10K+ Follower oder 50K+ Sterne | 150 |
1K+ Follower oder 5K+ Sterne | 120 |
500+ Follower oder 1K+ Sterne | 100 |
100+ Follower oder 200+ Sterne | 80 |
Der endgültige Score ist max(behavioral_score, reputation_floor). Wenn die Untergrenze angewendet wird, enthält die Aufschlüsselung ein reputation_floor-Feld, damit Sie es wissen.
Score-Tiers
150+ — außergewöhnlich (Top-OSS-Maintainer, bekannte Ingenieure)
120-149 — starkes Signal, es lohnt sich, Kontakt aufzunehmen
80-119 — solider Entwickler mit bedeutender öffentlicher Arbeit
40-79 — aktiv, aber begrenztes öffentliches Signal
<40 — geringes Signal (wahrscheinlich private Arbeit oder Junior)
Ranking
rank_candidates kombiniert den Aktivitäts-Score mit einem Relevanz-Score (0-100), der auf der Überschneidung von Schlüsselwörtern zwischen der Stellenbeschreibung und dem Profil des Kandidaten (Bio, Sprachen, Repo-Themen, README) basiert. Der kombinierte Score gewichtet Relevanz mit 60% und Aktivität mit 40% – ein Entwickler mit hoher Aktivität, aber ohne Überschneidung mit der Stelle, sollte einen relevanten nicht übertrumpfen.
Interaktives Dashboard
Nachdem eine Suche eine Shortlist erzeugt hat, fragt der Server, ob Sie ein interaktives Dashboard möchten – Suche, Skill-Filter, Ranking, Belege und GitHub-Profil-Links. Antworten Sie mit Ja, und Ihr Assistent erstellt es mit seiner eigenen Artefakt-Tooling (Copilots Canvas, Claudes Artefakte) aus den bewerteten Kandidatendaten.
Er bietet nur an; es wird nichts erstellt, es sei denn, Sie sagen Ja, und das Angebot wird übersprungen, wenn eine Suche keine brauchbaren Profile ergeben hat. Setzen Sie GITHUB_TALENT_DASHBOARD_PROMPT=0, um es zu deaktivieren.
Wenn die Seite in einem Inline-Canvas geöffnet wird, beachten Sie, dass diese Bereiche ihren Inhalt sandboxen und ausgehende Links blockieren. Der Assistent wird daher auch gebeten, die gespeicherte Datei in Ihrem Browser zu öffnen, wo die GitHub-Links funktionieren.
Ratenlimits
GitHub-REST-API: 5.000 Anfragen/Stunde mit einem Token, 60 ohne einen. Ein einzelnes angereichertes Profil kostet 6-15 Aufrufe, und ein typischer Workflow (Suche + Anreicherung von 5 Kandidaten + Ranking) verwendet ~60-100, sodass ein nicht authentifizierter Server innerhalb einer Suche erschöpft ist. Profilergebnisse werden innerhalb einer Sitzung zwischengespeichert, um redundante Aufrufe während des Rankings zu vermeiden.
Zwei Limits sind von diesem Stundenbudget getrennt und wissenswert:
Such-Endpunkte (
/search/commits,/search/issues) erlauben nur 30 Anfragen/Minute, selbst mit einem Token. Der Server behandelt einen Fehler dort als unbekannte Aktivitätsanzahl und nicht als fehlgeschlagenes Profil, sodass eine Shortlist trotzdem zurückkommt – die Commit-Zahlen können einfach 0 sein.Sekundäre Ratenlimits greifen bei Bursts gleichzeitiger Anfragen und geben ein explizites
Retry-Afterzurück. Der Server wartet genau so lange, bis zu 30 Sekunden, und gibt dann auf, anstatt in ein Fenster zu wiederholen, das sich nicht gehoben hat.
Einschränkungen & verantwortungsvolle Nutzung
Dieses Tool bewertet öffentliche GitHub-Aktivität als ein Signal für technisches Sourcing. Kennen Sie seine Grenzen, bevor Sie sich darauf verlassen:
Ergebnisse variieren zwischen Läufen. Es ist KI-gesteuert – der Assistent entscheidet, welche Repos und Suchen erkundet werden, sodass dieselbe Aufforderung jedes Mal eine andere Shortlist hervorbringen kann. Die Bewertung selbst ist für eine gegebene Menge von Kandidaten deterministisch; die Variation kommt vom Sourcing. Für wiederholbare Läufe begrenzen Sie das Sourcing: Benennen Sie die Repos, aus denen Mitwirkende gezogen werden sollen, oder geben Sie eine explizite Liste von Benutzernamen zum Bewerten an.
GitHub ist nicht der ganze Ingenieur. Öffentliche Aktivität ist ein starkes Indiz für technische Arbeit, aber blind für private Repos und interne/Unternehmensbeiträge sowie für Nicht-GitHub-Ökosysteme (Mailinglisten, GitLab usw.). Es kann keine Personalmanagement- oder Führungshistorie verifizieren – bestätigen Sie diese außerhalb von GitHub. (Die Reputationsuntergrenze existiert genau deshalb, weil geringe aktuelle Aktivität ≠ geringe Fähigkeit ist.)
Verwenden Sie es als Lead-Generator, nicht als Filter. Öffentliche OSS-Sichtbarkeit korreliert mit Freizeit, Betriebszugehörigkeit und Umständen – nicht nur mit Fähigkeiten – und das verzerrt sich über demografische Gruppen hinweg. Behandeln Sie Scores als Ausgangspunkt für Kontaktaufnahme und menschliches Urteilsvermögen. Verwenden Sie sie nicht, um Kandidaten automatisch auszuschließen, und kombinieren Sie sie immer mit fairer, rollenrelevanter Bewertung.
Daten sind live und ratenbegrenzt. Scores spiegeln GitHub zum Zeitpunkt der Abfrage wider und verschieben sich, wenn sich die Aktivität ändert; ein nicht authentifizierter Server ist auf 60 Anfragen/Stunde begrenzt.
Lizenz
Apache License 2.0 © 2026 Daniel An. Veröffentlichte Versionen bis einschließlich 0.4.0 bleiben unter der MIT-Lizenz; ab 0.4.1 gilt Apache-2.0.
Available Tools
8 toolsbulk_scoreA
Score a batch of GitHub usernames and return a ranked table.
Enriches each profile and ranks by activity score (or JD fit if a job description is provided). Returns a markdown table or CSV.
Args: usernames: List of GitHub usernames (max 100) job_description: Optional JD for relevance scoring export_format: Output format - "markdown" (default) or "csv" top_n: Max candidates in output (default 100)
| Name | Required | Description | Default |
|---|---|---|---|
| usernames | Yes | ||
| job_description | No | ||
| export_format | No | markdown | |
| top_n | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It discloses enrichment, ranking, and output format, but does not mention side effects, rate limits, authentication needs, or whether it is read-only. Adequate but with gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the main action, and uses a structured Args format. Every sentence adds value, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and that an output schema exists, the description adequately explains return format and main parameters. However, it lacks details on error handling, scoring methodology, and sorting behavior, which would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by describing each parameter: usernames (max 100), job_description (optional), export_format (markdown/csv), top_n (default 100). Adds constraints and enum guidance not in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it scores a batch of GitHub usernames and returns a ranked table. It specifies batch processing and enrichment with activity score or JD fit, distinguishing it from siblings like score_against_jd which likely handles single users.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch scoring (explicitly says 'batch') but does not explicitly name when to use this versus alternatives like rank_candidates or score_against_jd. It provides clear context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_candidatesA
Compare 2-5 GitHub candidates side-by-side.
Shows each candidate's languages, activity, stars, strengths, and gaps. If a job description is provided, also scores each candidate against it and picks winners per dimension.
Args: usernames: 2-5 GitHub usernames to compare job_description: Optional job description for JD-aware comparison
| Name | Required | Description | Default |
|---|---|---|---|
| usernames | Yes | ||
| job_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes what the tool shows and does (scoring, picking winners), but does not mention data sources, side effects, or whether it fetches data. No annotations to contradict.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short, front-loaded, every sentence adds value. Bullet-like list and Args section are clear and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all necessary aspects: what is compared, optional JD, output format implied by attributes. Output schema exists, so no need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: specifies usernames must be 2-5, job_description is optional. The schema only has titles, so description compensates for 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it compares 2-5 GitHub candidates side-by-side, listing displayed attributes (languages, activity, stars, strengths, gaps) and optional job description scoring. Distinguishes from siblings like score_against_jd and rank_candidates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use case (comparing multiple candidates with optional JD) and sibling context, but does not explicitly state when not to use or compare to specific alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_outreachA
Generate personalized recruiter outreach messages for a GitHub candidate.
Creates three message variants (short, medium, detailed) that reference the candidate's actual repos, contributions, and tech stack.
IMPORTANT: Always ask the user for their company_name and sender_name before calling this tool. If not provided, placeholders will be used.
Args: username: GitHub username of the candidate job_description: The role description company_name: Your company name (ask the user) sender_name: Your name as the recruiter/hiring manager (ask the user) tone: Message tone - "casual" (default) or "formal"
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | ||
| job_description | Yes | ||
| company_name | No | [Your Company] | |
| sender_name | No | [Your Name] | |
| tone | No | casual |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that three variants are created, references candidate's repos/contributions/tech stack, and warns about placeholders if company_name/sender_name are not provided. This covers key behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and front-loads the purpose. The all-caps warning is prominent. It could be slightly more concise, but it remains readable and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description doesn't need to detail return values. It covers purpose, usage, parameters, and behavioral notes comprehensively for a 5-parameter tool without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It provides clear explanations for all five parameters, including defaults and the behavior if omitted (e.g., placeholders for company_name and sender_name). The tone parameter specifies allowed values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates personalized recruiter outreach messages for a GitHub candidate, creating three message variants. This is distinct from sibling tools like bulk_score or search_developers, which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly instructs to ask the user for company_name and sender_name before calling the tool, providing clear usage context. It does not, however, specify when not to use the tool or mention alternatives, but the purpose is specific enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_developer_profileA
Get enriched GitHub developer profile with activity scoring.
Returns languages, stars, commit activity, OSS contributions, profile README, license breakdown, and a 0-205 activity score with per-dimension breakdown.
Args: username: GitHub username to analyze
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It details the return content including an activity score with per-dimension breakdown. However, it does not mention potential side effects (none expected), authentication needs, or rate limits, which would increase transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a one-sentence purpose, a bulleted list of return contents, and an Args line. Every sentence provides value with no redundancy or clutter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema and the description already enumerates the returned data (languages, stars, commit activity, etc.), the description is complete. It includes the unique activity score range and breakdown, covering all key aspects without needing further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description explicitly lists the 'username' parameter with a clear explanation: 'GitHub username to analyze'. This adds essential meaning beyond the type 'string' in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Get enriched GitHub developer profile with activity scoring', which is a specific verb+resource combination. It clearly distinguishes from sibling tools like 'search_developers' (search) and 'rank_candidates' (ranking), as this tool focuses on a single enriched profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for individual developer profiles by listing single username and rich return data. While no explicit 'when to use vs alternatives' is stated, the context from sibling tool names suggests this is for detailed single-profile analysis, not for bulk or comparative operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repo_contributorsA
Get top contributors for a GitHub repository as candidate leads.
Accepts 'owner/repo' format or full GitHub URL.
Args: repo: Repository in 'owner/repo' format or GitHub URL limit: Max contributors to return (default 25)
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavioral traits. It does not mention authentication needs, rate limits, or error handling. The description only states the basic function without transparency on limitations or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a one-line purpose, a format note, and args. Every sentence is essential and front-loaded. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. However, it lacks information on authentication, error scenarios, and usage context, making it adequately complete but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for the 'repo' parameter by specifying accepted formats, but for 'limit' it only repeats the default from the schema. With 0% schema coverage, more parameter details would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves top contributors for lead generation, with a specific verb and resource. It distinguishes itself from siblings like search_developers or get_developer_profile by focusing on repository contributors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for lead generation but provides no explicit guidance on when to use this tool over siblings or when not to use it. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_candidatesA
Rank GitHub users against a job description.
Enriches each profile, scores activity + relevance, and returns candidates sorted by combined score with strengths, gaps, and reasoning.
Args: usernames: GitHub usernames to evaluate job_description: The role description to rank candidates against top_n: Number of top candidates to return (default 10)
| Name | Required | Description | Default |
|---|---|---|---|
| usernames | Yes | ||
| job_description | Yes | ||
| top_n | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states that the tool enriches profiles and scores them, implying a read-only operation. However, it does not disclose potential side effects (e.g., if external API calls are made), authentication requirements, or any rate limiting. The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. The first sentence states the main purpose, followed by a brief process summary and then bullet-point-like parameter explanations. Every sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (though not shown), the description reasonably explains the output: sorted candidates with strengths, gaps, and reasoning. It covers the key aspects of the tool's behavior and parameters. However, it could be more complete by clarifying what 'enriches each profile' entails or how the scoring accounts for activity and relevance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description compensates by defining each parameter: usernames as 'GitHub usernames to evaluate', job_description as 'The role description to rank candidates against', and top_n with default 10. These definitions are clear and add value beyond the schema's type and title information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Rank GitHub users against a job description.' It also explains the process: enriches profiles, scores activity+relevance, returns sorted candidates with strengths, gaps, and reasoning. This effectively communicates the core function, though it does not explicitly differentiate from similar sibling tools like 'score_against_jd' or 'compare_candidates'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as 'score_against_jd' or 'compare_candidates'. There is no mention of prerequisites, limitations, or scenarios where this tool is preferred. The user is left to infer usage from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
score_against_jdA
Score GitHub candidates against a job description with per-dimension breakdown.
Unlike rank_candidates (keyword matching), this extracts structured requirements from the JD and scores each candidate on: tech stack match, experience level, OSS signal, and leadership signals. Returns dimension scores, gaps, and personalized interview questions.
Args: job_description: Full job description text usernames: GitHub usernames to evaluate top_n: Number of top candidates to return (default 10)
| Name | Required | Description | Default |
|---|---|---|---|
| job_description | Yes | ||
| usernames | Yes | ||
| top_n | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not mention safety traits (read-only, destructive, auth needs). However, it describes outputs and operation, which is adequate for a scoring tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three purposeful sentences plus a structured args list. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the presence of an output schema (not shown), the description covers key aspects: purpose, differentiation, and return contents. Could mention prerequisites like having candidate profiles.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining each parameter's purpose (job description, usernames, top_n) beyond the schema's basic type and title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scores candidates against a job description with per-dimension breakdown. It distinguishes itself from rank_candidates by contrasting keyword matching with structured requirement extraction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides when-to-use versus an alternative (rank_candidates), but does not cover exclusions or scenarios where this tool should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_developersA
Search GitHub developers by technical and geographic filters.
Returns a list of matching usernames sorted by followers. Use get_developer_profile on interesting candidates for full enrichment and to verify recent activity.
For topic-based sourcing (e.g. "LLM", "inference"), use get_repo_contributors on relevant repos instead — GitHub user search doesn't support topic/bio search.
Args: languages: Filter by programming languages, e.g. ["python", "rust"] location: Filter by location, e.g. "San Francisco" or "Germany" min_followers: Minimum follower count min_repos: Minimum public repo count limit: Max results to return (default 20, max 100)
| Name | Required | Description | Default |
|---|---|---|---|
| languages | No | ||
| location | No | ||
| min_followers | No | ||
| min_repos | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses output format (usernames sorted by followers) and limit constraints. Lacks details on case sensitivity or matching behavior, but overall adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then results, usage guidance, and args. Every sentence adds value; no fluff. Well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no required ones, and output schema exists, description covers all needed aspects: filters, results, usage guidance, and alternatives. Complete for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description explains all five parameters with types and examples (e.g., languages as array of strings, location string, default and max for limit), adding meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches GitHub developers by technical and geographic filters, returns usernames sorted by followers, and distinguishes itself from sibling tools like get_repo_contributors and get_developer_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use and when not to use: for topic-based sourcing, recommends get_repo_contributors instead, and for full enrichment, suggests get_developer_profile.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Tools are mostly distinct, but bulk_score, rank_candidates, and score_against_jd have overlapping ranking/scoring functionality that could confuse an agent. compare_candidates also overlaps with these for small sets. Still, each tool has a clear primary purpose.
All tool names follow a consistent verb_noun pattern with underscores (e.g., bulk_score, compare_candidates, generate_outreach). No mixing of conventions.
8 tools is well-scoped for a developer sourcing server, covering search, enrichment, comparison, ranking, and outreach without being excessive.
Covers the main workflow (search, enrich, compare, rank, message), but lacks a direct topic-based search and saving/follow-up tools, which are minor gaps.
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 Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
A MCP server built for developers enabling Git based project management with project and personal…
Create, deploy, and operate MCP servers directly from your GitHub repositories.
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- -licenseNot gradedqualityAmaintenanceMCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.117,29690,042MIT
- FlicenseNot gradedqualityDmaintenanceA simple MCP server that provides repository information (list repos, get repo details) using GitHub's public REST API, without needing any API keys or tokens.
- AlicenseNot gradedqualityBmaintenanceMCP server for searching, retrieving details, suggesting, and adding curated GitHub repositories from a personal library.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for GitHub operations, providing tools for repository management, issues, pull requests, and code search.
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/carolinacherry/github-talent-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server