Skip to main content
Glama

github-talent-mcp

License: Apache 2.0 Python 3.10+ MCP Claude GitHub Copilot Cursor Grok Bot GitHub API

MCP-сервер, который ищет, оценивает и ранжирует разработчиков GitHub для технического рекрутинга.

Работает с Claude (Code и Desktop), GitHub Copilot (CLI и десктопное приложение) и Cursor (IDE и Grok Bot) — с любым MCP-клиентом, поддерживающим stdio.

Бренд

Related MCP server: mcp-github-server

Демо

https://github.com/user-attachments/assets/b2dbe9e0-26ee-4849-861a-4b5cb268facc

Поиск кандидатов для реальной вакансии Anthropic вживую в Claude Cowork.

https://github.com/user-attachments/assets/2dfd82b4-3eb5-4f2b-bc0a-2580b95043e4

Глубокий профиль

Получить полный профиль разработчика и оценку активности для torvalds на GitHub

Claude вызывает get_developer_profile("torvalds") и возвращает:

Поле

Значение

Оценка активности

150 (применён минимальный порог репутации)

Местоположение

Portland, OR

Подписчики

293 321

Получено звёзд

235 068

Основной язык

C (98,1%)

Коммиты (90 дней)

0

PR (90 дней)

0

Известные репозитории

linux (183K звёзд), libdc-for-dirk, subsurface-for-dirk, uemacs, pesern-resolve

README профиля

Нет

Доступен для найма

Нет

У Торвальдса нет недавней активности на GitHub, потому что разработка ядра идёт через списки рассылки, а не через PR на GitHub. Минимальный порог репутации (293K подписчиков) переопределяет поведенческую оценку и устанавливает её на 150.

Ранжирование контрибьюторов репозитория

Получить топ-контрибьюторов huggingface/transformers и ранжировать их для роли founding ML engineer в AI-стартапе

Claude вызывает get_repo_contributors("huggingface/transformers")rank_candidates по топ-24 контрибьюторам:

Ранг

Разработчик

Суммарный балл

Активность

Релевантность

Сильные стороны

1

stas00

83,4

150

72

4 553 звезды, вклад в крупные OSS-проекты, репозитории с MIT-лицензией

2

cyyever

80,8

120

64

1 217 подписчиков, активный контрибьютор, README профиля

3

Cyrilvallez

77,2

120

56

Активен: 13 коммитов + 57 PR за 90 дней, сильное присутствие в OSS

4

ArthurZucker

74,4

120

48

37 PR за 90 дней, вклад в huggingface/transformers

5

ydshieh

72,0

120

40

Активен: 9 коммитов + 40 PR за 90 дней

Суммарный балл = активность × 0,4 + релевантность × 0,6. Релевантность — это пересечение ключевых слов с описанием вакансии (ML, AI, startup, engineer и т.д.).

Установка

1. Установите uv

Сервер запускается через uvx, который сам скачивает и запускает его — не нужно клонировать репозиторий или создавать виртуальное окружение, а обновления приходят автоматически.

brew install uv

Нет Homebrew? curl -LsSf https://astral.sh/uv/install.sh | sh

2. Создайте персональный токен доступа GitHub

Без токена GitHub разрешает 60 запросов в час, а один профиль кандидата стоит 6–15 запросов. Вы исчерпаете лимит в середине поиска, и профили вернутся пустыми. С токеном вы получаете 5 000 запросов в час.

Перейдите на github.com/settings/tokens и создайте fine-grained или classic токен со следующими областями:

Область

Зачем

read:user

Чтение профилей пользователей и поиск пользователей

public_repo

Чтение данных публичных репозиториев, языков, контрибьюторов

Скопируйте токен — после ухода со страницы вы не сможете его снова увидеть.

3. Подключите его

GitHub Copilot (CLI и десктопное приложение)

Важно: В конфиг вставляйте сам токен, а не ${GITHUB_TOKEN}. Десктопные приложения запускаются операционной системой, а не вашей оболочкой, поэтому они никогда не читают .zshrc, и ссылка на переменную окружения раскрывается в пустоту. Сервер при этом запускается нормально, работает без аутентификации и тихо падает через несколько кандидатов. Файл .env имеет ту же проблему, если в конфиге не задан cwd на каталог проекта, потому что он читается относительно рабочего каталога.

Оба используют один конфиг. Вставьте это в терминал — он подставит ваш токен:

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

Полностью закройте Copilot и откройте заново, затем выполните /mcp show — вы должны увидеть 9 инструментов в разделе github-talent. Приложение также принимает серверы в Settings → MCP, если вы не хотите трогать файл.

Если uvx не найден, укажите его полный путь как command (which uvx выведет его).

Claude Code

claude mcp add github-talent --env GITHUB_TOKEN=github_pat_xxxxxxxx -- uvx github-talent-mcp

Перезапустите Claude Code и проверьте с помощью /mcp.

Claude Desktop

Важно: Здесь действует то же правило «токен в конфиге», что и для Copilot.

Добавьте в ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "github-talent": {
      "command": "uvx",
      "args": ["github-talent-mcp"],
      "env": {
        "GITHUB_TOKEN": "github_pat_xxxxxxxx"
      }
    }
  }
}

Перезапустите Claude Desktop.

Cursor IDE и Cloud Agents (Grok Bot)

Примечание: Заявка в маркетплейс подана и сейчас находится на рассмотрении. ${GITHUB_TOKEN} в mcp.json и .cursor-plugin/plugin.json этого репозитория — это переменная плагина для этого пути установки. Cloud Agents и написанный вручную mcp.json её не раскрывают. Вставьте PAT.

После публикации в маркетплейсе (установка в один клик в Cursor IDE):

  1. Установите uv, если его ещё нет:

    brew install uv

    Нет Homebrew? curl -LsSf https://astral.sh/uv/install.sh | sh

  2. В Cursor IDE перейдите в Plugins → Add, найдите GitHub Talent Search и установите его.

  3. При запросе введите свой персональный токен доступа GitHub (fine-grained с областями read:user и public_repo).

До одобрения в маркетплейсе — Cursor IDE:

Создайте симлинк этого репозитория в ~/.cursor/plugins/local/github-talent-mcp/, затем перезагрузите Cursor (Cmd/Ctrl+Shift+PReload Window).

mkdir -p ~/.cursor/plugins/local
ln -s /path/to/github-talent-mcp ~/.cursor/plugins/local/github-talent-mcp

Или добавьте пользовательский/проектный mcp.json (~/.cursor/mcp.json или .cursor/mcp.json) с командой uvx, аргументами ["github-talent-mcp"] и GITHUB_TOKEN, установленным в сам PAT. Если используете интерполяцию на десктопе, она выглядит как ${env:GITHUB_TOKEN}, а не ${GITHUB_TOKEN}. Если запуск не удаётся, укажите command как полный путь из which uvx (часто /opt/homebrew/bin/uvx на Apple Silicon Homebrew).

До одобрения в маркетплейсе — Cloud Agents (cursor.com/agents):

На главной странице агентов нет выпадающего списка MCP (Environment, Secrets и Set Up Cloud Agents — это не то). Управление находится через кнопку + слева от выбора модели.

  1. Добавьте uvx в PATH по умолчанию на виртуальной машине Cloud Agent. Stdio MCP spawn не читает .bashrc. Если uvx находится только в ~/.local/bin, сервер завершится с ошибкой spawn uvx ENOENT и загрузит 0 инструментов. Добавьте это в скрипт Install в окружении, сохраните, затем запустите нового агента:

    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/uvx
  2. На cursor.com/agents нажмите +MCP Servers. Отредактируйте github-talent, если он уже есть; в противном случае нажмите Add MCP.

  3. В Edit MCP server:

    • Name: github-talent

    • Type: Command (не URL). Этот сервер — stdio, не HTTP. Cloud Agents не поддерживают SSE.

    • Command: uvx

    • Arguments: github-talent-mcp (оставьте лишние пустые строки Argument пустыми)

    • Secrets: Key GITHUB_TOKEN, Value — ваш PAT (ghp_ или github_pat_). Вставьте токен. Секрет с именем GITHUB_TOKEN на панели Environment не копируется в окружение MCP.

    • Не устанавливайте Command в /home/box/bin/github-talent-mcp.sh. Этого пути нет на виртуальных машинах Cloud Agent; пространство имён подключится, но инструментов всё равно будет 0.

  4. Сохраните. Включите github-talent. Запустите нового Cloud Agent — существующие сеансы сохранят старый лаунчер. Вы должны увидеть 9 инструментов в разделе github-talent.

Проверка, что всё действительно работает

Вызовите get_developer_profile (инструмент MCP, а не python / gh / curl). Настоящий профиль занимает 120–170 строк. Три строки означают, что вызов не удался — почти всегда из-за отсутствующего или нечитаемого токена. Если каждый инструмент возвращает три строки, а сервер при этом отображается как подключённый, это признак работы без аутентификации.

Отформатированная таблица Торвальдса — не доказательство работы MCP. Cloud Agents могут импортировать github_talent_mcp из этого репозитория и вывести тот же профиль на ~149 строк, пока обнаружение MCP всё ещё падает (spawn uvx ENOENT). Убедитесь, что загружены 9 инструментов и что вызов прошёл через инструмент MCP.

Запуск из исходников

Нужно только если вы хотите изменить сервер:

git clone https://github.com/carolinacherry/github-talent-mcp.git
cd github-talent-mcp
uv sync

Затем используйте uv run --directory /path/to/github-talent-mcp github-talent-mcp в качестве команды в любом конфиге выше.

Попробуйте

После установки вставьте эти запросы, чтобы убедиться, что всё работает:

Базовый поиск:

Найди Python-разработчиков в Роли, активных за последние 60 дней

Глубокий профиль:

Получи полный профиль разработчика и оценку активности для torvalds на GitHub

Полный рабочий процесс:

Найди 10 ML-инженеров в Сан-Франциско, активных за последние 30 дней, затем ранжируй их для роли senior LLM inference engineer

Контрибьюторы репозитория:

Получи топ-контрибьюторов huggingface/transformers и ранжируй их для роли founding ML engineer в AI-стартапе

Оценка по вакансии:

Оцени этих кандидатов по этому описанию вакансии: [вставьте JD]. Кандидаты: tiangolo, karpathy, hwchase17

Сравнение кандидатов:

Сравни tiangolo и hwchase17 для роли Senior Python AI Engineer

Массовая оценка:

Оцени эти 10 GitHub-юзернеймов и дай мне ранжированную таблицу: [вставьте список]

Аутрич:

Сгенерируй неформальное сообщение рекрутера для tiangolo о Senior Python-роли в Acme. Меня зовут Дэниел.

Подбор с приоритетом интервью

Расплывчатые запросы дают расплывчатые шорт-листы, поэтому сервер построен так, чтобы провести с вами интервью перед поиском. Попросите его «найти кандидатов на роль» — и он вызовет plan_search первым делом: определит семейство ролей и задаст уточняющие вопросы (уровень, обязательные навыки, локация, стоп-факторы) и, что самое важное, попросит описание вакансии: вставьте полный текст или поделитесь публичной ссылкой и вставьте то, что он покажет. Он начнёт поиск только получив реальные критерии.

Попробуйте: «Найди мне senior security-инженеров» → ассистент должен запросить описание вакансии и ваши обязательные требования, прежде чем что-либо запускать.

Хотите быстрый воспроизводимый прогон? Дайте ему всё сразу — «Отранжируй эти 15 username против этого описания вакансии: …» — или привяжите поиск к конкретным репозиториям, и он пропустит интервью.

Инструменты

Инструмент

Описание

plan_search

Этап приёма запроса — разбирает запрос на поиск, определяет семейство ролей и возвращает целевые уточняющие вопросы (включая: вставьте описание вакансии или поделитесь публичной ссылкой), которые нужно задать перед поиском. Вызывайте первым.

search_developers

Поиск пользователей GitHub по языку, локации, активности, подписчикам. Для поиска по тематике вместо этого используйте get_repo_contributors по релевантным репозиториям.

get_developer_profile

Глубокое обогащение профиля: языки, звёзды, коммиты + PR, вклад в open source, разбивка по лицензиям, README профиля и оценка активности с разбивкой.

rank_candidates

Ранжирование username против описания вакансии. Возвращает отсортированных кандидатов с комбинированным баллом, сильными сторонами, пробелами и обоснованием.

score_against_jd

Оценка кандидатов против описания вакансии с разбивкой по измерениям (технологический стек, уровень опыта, сигнал open source, лидерство). Возвращает пробелы и персонализированные вопросы для интервью.

compare_candidates

Сравнение 2–5 кандидатов бок о бок. Показывает победителей по измерениям и рекомендацию. Опционально оценивает против описания вакансии.

bulk_score

Оценка до 100 username GitHub одним вызовом. Возвращает ранжированную markdown-таблицу или CSV. Поддерживает опциональное сопоставление с описанием вакансии.

generate_outreach

Генерация персонализированных сообщений рекрутера (короткое/среднее/подробное), ссылающихся на реальные репозитории и вклад кандидата. Требует название вашей компании и имя отправителя. Неформальный или формальный тон.

get_repo_contributors

Топ-контрибьюторы любого репозитория. Принимает owner/repo или полный URL. Самый быстрый способ найти кандидатов в конкретной области.

Оценка

Оценка активности объединяет два уровня: поведенческие сигналы (что вы делали недавно) и репутационный минимум (что вы наработали со временем).

Поведенческая оценка (0–205)

Сигнал

Макс. баллов

Как

Коммиты + PR (за 90 дней)

60

Пуш-коммиты + открытые PR (PR с весом ×3). Учитывает и push-ориентированные, и PR-ориентированные рабочие процессы.

Звёзды на репозиториях

40

Звёзды личных репозиториев + звёзды репозиториев, в которые вы вносите вклад. Мейнтейнеры репозиториев организаций получают баллы.

README профиля

20

Наличие README профиля (github.com/username/username).

Подписчики

20

Ограничено 20.

Репозитории с описаниями

20

Доля репозиториев, у которых есть описания. Сигнал заботы и аккуратности.

Репозитории с разрешительными лицензиями

15

Есть хотя бы один репозиторий с MIT, Apache-2.0, BSD, ISC или Unlicense.

Крупный вклад в open source

30

PR, пуши или issues в репозиториях, которые вам не принадлежат. Ограничено 3 репозиториями (по 10 баллов).

Репутационный минимум

Сама по себе поведенческая оценка ущемляет разработчиков, чья работа не порождает событий GitHub — Торвальдс работает через списки рассылки, старшие мейнтейнеры мержат через ботов организаций, а многие инженеры работают в приватных репозиториях.

Репутационный минимум гарантирует, что накопленный вклад не обнуляется из-за тихого квартала:

Порог

Минимум

10K+ подписчиков или 50K+ звёзд

150

1K+ подписчиков или 5K+ звёзд

120

500+ подписчиков или 1K+ звёзд

100

100+ подписчиков или 200+ звёзд

80

Итоговый балл — max(поведенческая_оценка, репутационный_минимум). Если применён минимум, в разбивке появляется поле reputation_floor, чтобы вы знали об этом.

Уровни баллов

  • 150+ — исключительный (топ-мейнтейнеры open source, известные инженеры)

  • 120–149 — сильный сигнал, стоит связаться

  • 80–119 — крепкий разработчик со значимой публичной работой

  • 40–79 — активный, но ограниченный публичный сигнал

  • <40 — слабый сигнал (вероятно, приватная работа или джуниор)

Ранжирование

rank_candidates объединяет оценку активности с оценкой релевантности (0–100), основанной на пересечении ключевых слов между описанием вакансии и профилем кандидата (bio, языки, темы репозиториев, README). Комбинированный балл взвешивает релевантность на 60% и активность на 40% — высокоактивный разработчик без пересечения с вакансией не должен обойти релевантного.

Интерактивная панель

После того как поиск сформировал шорт-лист, сервер спрашивает, нужна ли вам интерактивная панель — поиск, фильтры по навыкам, ранжирование, доказательства и ссылки на профили GitHub. Ответьте «да» — и ваш ассистент соберёт её своими инструментами артефактов (canvas в Copilot, артефакты в Claude) из данных оценённых кандидатов.

Он только предлагает; ничего не создаётся, пока вы не согласитесь, а предложение пропускается, если поиск не дал пригодных профилей. Установите GITHUB_TALENT_DASHBOARD_PROMPT=0, чтобы отключить это.

Если страница открывается во встроенном canvas, учтите: такие панели изолируют содержимое и блокируют исходящие ссылки, поэтому ассистенту также предлагается открыть сохранённый файл в вашем браузере, где ссылки на GitHub работают.

Лимиты запросов

GitHub REST API: 5 000 запросов/час с токеном, 60 без него. Один обогащённый профиль стоит 6–15 вызовов, а типичный рабочий процесс (поиск + обогащение 5 кандидатов + ранжирование) использует ~60–100, так что сервер без аутентификации исчерпывает лимит в рамках одного поиска. Результаты профилей кэшируются в рамках сессии, чтобы избежать избыточных вызовов при ранжировании.

Два лимита отдельны от этого часового бюджета, и о них стоит знать:

  • Поисковые эндпоинты (/search/commits, /search/issues) допускают только 30 запросов/минуту даже с токеном. Сервер трактует сбой там как неизвестное количество активности, а не как сбой профиля, так что шорт-лист всё равно вернётся — просто количество коммитов может читаться как 0.

  • Вторичные лимиты срабатывают при всплесках параллельных запросов и возвращают явный Retry-After. Сервер ждёт ровно столько, до 30 секунд, а затем сдаётся, а не повторяет попытки в окно, которое ещё не снято.

Ограничения и ответственное использование

Этот инструмент оценивает публичную активность GitHub как один из сигналов для технического поиска кандидатов. Знайте его пределы, прежде чем полагаться на него:

  • Результаты различаются между запусками. Он управляется ИИ — ассистент сам решает, какие репозитории и поиски исследовать, поэтому один и тот же запрос может выдать разный шорт-лист. Сама оценка детерминирована для заданного набора кандидатов; вариативность исходит от поиска. Для воспроизводимых запусков ограничьте поиск: назовите репозитории, из которых брать контрибьюторов, или передайте явный список username для ранжирования.

  • GitHub — это не весь инженер. Публичная активность — веское доказательство технической работы, но она слепа к вкладу в приватные и внутренние/корпоративные репозитории, а также к экосистемам вне GitHub (списки рассылки, GitLab и т. д.). Он не может проверить опыт управления людьми или лидерства — подтверждайте это вне GitHub. (Репутационный минимум существует именно потому, что низкая недавняя активность ≠ низкая квалификация.)

  • Используйте его как генератор лидов, а не как фильтр. Публичная видимость в open source коррелирует со свободным временем, стажем и обстоятельствами — а не только с навыками — и это смещает выборку по демографическим группам. Относитесь к баллам как к отправной точке для аутрича и человеческого суждения. Не используйте их для автоматического исключения кандидатов и всегда сочетайте со справедливой, релевантной роли оценкой.

  • Данные живые и ограничены по частоте. Баллы отражают GitHub на момент запроса и меняются вместе с активностью; сервер без аутентификации ограничен 60 запросами/час.

Лицензия

Apache License 2.0 © 2026 Daniel An. Выпущенные версии до 0.4.0 включительно остаются под лицензией MIT; начиная с 0.4.1 — Apache-2.0.

Available Tools

8 tools
bulk_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)

ParametersJSON Schema
NameRequiredDescriptionDefault
usernamesYes
job_descriptionNo
export_formatNomarkdown
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernamesYes
job_descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes
job_descriptionYes
company_nameNo[Your Company]
sender_nameNo[Your Name]
toneNocasual

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYes
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
usernamesYes
job_descriptionYes
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
job_descriptionYes
usernamesYes
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
languagesNo
locationNo
min_followersNo
min_reposNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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

A4.1/5.0
Disambiguation4/5

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.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., bulk_score, compare_candidates, generate_outreach). No mixing of conventions.

Tool Count5/5

8 tools is well-scoped for a developer sourcing server, covering search, enrichment, comparison, ranking, and outreach without being excessive.

Completeness4/5

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

ActivityMaintained
ResponsivenessSlow

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for GitHub operations, providing tools for repository management, issues, pull requests, and code search.

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/carolinacherry/github-talent-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server