Skip to main content
Glama

github-talent-mcp

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

기술 영업(technical recruiting)을 위해 GitHub 개발자를 검색, 점수화, 순위화하는 MCP 서버입니다.

Claude(Code 및 Desktop), GitHub Copilot(CLI 및 데스크톱 앱), Cursor(IDE 및 Grok Bot) 등 stdio를 지원하는 모든 MCP 클라이언트에서 작동합니다.

브랜드

Related MCP server: mcp-github-server

데모

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

Claude Cowork에서 실제 Anthropic JD에 대한 후보자 소싱 라이브 데모.

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

프로필 심층 분석

GitHub에서 torvalds의 전체 개발자 프로필과 활동 점수 가져오기

Claude가 get_developer_profile("torvalds")를 호출하고 다음을 반환합니다:

필드

활동 점수

150 (평판 하한선 적용)

위치

Portland, OR

팔로워

293,321

받은 스타 수

235,068

주요 언어

C (98.1%)

커밋 (90일)

0

PR (90일)

0

주요 저장소

linux (183K stars), libdc-for-dirk, subsurface-for-dirk, uemacs, pesern-resolve

프로필 README

없음

고용 가능 여부

아니요

Torvalds는 커널 개발이 GitHub PR이 아닌 메일링 리스트를 통해 이루어지기 때문에 최근 GitHub 활동이 0입니다. 평판 하한선(293K 팔로워)이 행동 점수를 무시하고 150으로 설정합니다.

저장소 기여자 순위

huggingface/transformers의 상위 기여자를 가져와 AI 스타트업의 창립 ML 엔지니어 역할에 맞게 순위를 매기기

Claude가 get_repo_contributors("huggingface/transformers")를 호출하고 상위 24명의 기여자에 대해 rank_candidates를 실행합니다:

순위

개발자

종합 점수

활동

관련성

강점

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

활발함: 90일 내 13 커밋 + 57 PR, 강한 OSS 활동

4

ArthurZucker

74.4

120

48

90일 내 37 PR, huggingface/transformers에 기여

5

ydshieh

72.0

120

40

활발함: 90일 내 9 커밋 + 40 PR

종합 점수 = 활동 × 0.4 + 관련성 × 0.6. 관련성은 직무 설명(ML, AI, 스타트업, 엔지니어 등)과의 키워드 일치도입니다.

설치

1. uv 설치

서버는 uvx를 통해 실행되며, 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를 프로젝트 디렉터리로 설정하지 않는 한 동일한 문제가 있습니다. .env는 작업 디렉터리를 기준으로 읽히기 때문입니다.

둘 다 하나의 구성을 공유합니다. 터미널에 다음을 붙여넣으세요 — 토큰을 자동으로 채워줍니다:

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를 실행하세요 — github-talent 아래에 9개의 도구가 보일 것입니다. 앱은 파일을 직접 수정하고 싶지 않다면 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)

참고: 마켓플레이스 애플리케이션이 제출되었으며 현재 검토 중입니다. 이 저장소의 mcp.json.cursor-plugin/plugin.json에 있는 ${GITHUB_TOKEN}은 해당 설치 경로를 위한 플러그인 변수입니다. 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 개인 액세스 토큰(read:userpublic_repo 범위의 fine-grained)을 입력하세요.

마켓플레이스 승인 전 — 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)에 command uvx, args ["github-talent-mcp"], GITHUB_TOKEN을 PAT 자체로 설정하여 추가하세요. 데스크톱 보간을 사용한다면 ${env:GITHUB_TOKEN}입니다 — ${GITHUB_TOKEN}이 아닙니다. spawn이 실패하면 commandwhich uvx의 전체 경로로 설정하세요 (Apple Silicon Homebrew에서는 보통 /opt/homebrew/bin/uvx).

마켓플레이스 승인 전 — Cloud Agents (cursor.com/agents):

에이전트 홈 페이지에는 MCP 드롭다운이 없습니다 (Environment, Secrets, Set Up Cloud Agents는 이것이 아닙니다). 컨트롤은 모델 선택기 왼쪽에 있는 + 버튼입니다.

  1. Cloud Agent VM의 기본 PATH에 uvx를 넣으세요. 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 아님). 이 서버는 HTTP가 아닌 stdio입니다. Cloud Agents는 SSE를 지원하지 않습니다.

    • Command: uvx

    • Arguments: github-talent-mcp (추가 Argument 행은 비워두세요)

    • Secrets: Key GITHUB_TOKEN, Value에 PAT(ghp_ 또는 github_pat_)를 입력하세요. 토큰을 붙여넣으세요. Environment 패널의 GITHUB_TOKEN 시크릿은 MCP 환경으로 복사되지 않습니다.

    • Command를 /home/box/bin/github-talent-mcp.sh로 설정하지 마세요. 해당 경로는 Cloud Agent VM에 없으며, 네임스페이스가 연결되어도 여전히 0개의 도구가 로드됩니다.

  4. 저장하세요. github-talent를 켜세요. Cloud Agent를 시작하세요 — 기존 실행은 이전 런처를 유지합니다. github-talent 아래에 9개의 도구가 보일 것입니다.

실제로 작동하는지 확인하기

get_developer_profile (MCP 도구, python / gh / curl 아님)을 호출하세요. 실제 프로필은 120-170줄입니다. 세 줄이면 호출이 실패한 것입니다 — 거의 항상 토큰이 없거나 읽을 수 없는 경우입니다. 서버가 연결된 것으로 표시되는 동안 모든 도구가 세 줄을 반환하는 것은 인증 없이 실행되고 있다는 신호입니다.

형식화된 Torvalds 테이블은 MCP의 증거가 아닙니다. Cloud Agents는 이 저장소에서 github_talent_mcp를 가져와 MCP 검색이 여전히 실패하는 동안(spawn uvx ENOENT) 동일한 ~149줄 프로필을 출력할 수 있습니다. 9개의 도구가 로드되었는지, 호출이 MCP 도구를 통해 이루어졌는지 확인하세요.

소스에서 실행하기

서버를 수정하려는 경우에만 필요합니다:

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

그런 다음 위의 모든 구성에서 command로 uv run --directory /path/to/github-talent-mcp github-talent-mcp를 사용하세요.

사용해 보기

설치 후 다음 프롬프트를 붙여넣어 모든 것이 작동하는지 확인하세요:

기본 검색:

지난 60일 동안 활동한 Raleigh의 Python 개발자를 찾아줘

프로필 심층 분석:

GitHub에서 torvalds의 전체 개발자 프로필과 활동 점수를 가져와줘

전체 워크플로:

지난 30일 동안 활동한 샌프란시스코의 ML 엔지니어 10명을 찾아서, 시니어 LLM 추론 엔지니어 역할에 맞게 순위를 매겨줘

저장소 기여자:

huggingface/transformers의 상위 기여자를 가져와 AI 스타트업의 창립 ML 엔지니어 역할에 맞게 순위를 매겨줘

JD 점수화:

다음 후보자들을 이 직무 설명에 대해 점수화해줘: [JD 붙여넣기]. 후보자: tiangolo, karpathy, hwchase17

후보자 비교:

시니어 Python AI 엔지니어 역할에 대해 tiangolo와 hwchase17을 비교해줘

대량 점수화:

다음 10개의 GitHub 사용자 이름을 점수화해서 순위 테이블로 보여줘: [목록 붙여넣기]

아웃리치:

Acme의 시니어 Python 역할에 대해 tiangolo에게 보낼 캐주얼한 리크루터 메시지를 생성해줘. 내 이름은 Daniel이야.

인터뷰 우선 소싱

모호한 프롬프트는 모호한 후보 목록을 만들어내므로, 이 서버는 검색 전에 사용자를 인터뷰하도록 설계되었습니다. "역할에 맞는 후보자를 찾아줘"라고 요청하면 먼저 plan_search를 호출합니다 — 역할군을 감지하고 맞춤형 후속 질문(경력 연차, 필수 기술, 위치, 거래 중단 조건)을 하며, 가장 중요한 것은 **직무 설명(JD)**을 요청합니다: 전체 텍스트를 붙여넣거나 공개 링크를 공유하고 표시되는 내용을 붙여넣으세요. 실제 기준이 확보된 후에만 소싱을 시작합니다.

직접 해보세요: "시니어 보안 엔지니어를 찾아줘." → 어시스턴트는 아무것도 실행하기 전에 JD와 필수 조건을 요청해야 합니다.

대신 빠르고 반복 가능한 실행을 원하시나요? 모든 것을 한 번에 제공하세요 — "이 15개 사용자 이름을 이 JD 기준으로 순위를 매겨줘: …" — 또는 소싱을 특정 저장소로 고정하면 인터뷰를 건너뜁니다.

도구

도구

설명

plan_search

인테이크 단계 — 소싱 요청을 파싱하고 역할군을 감지한 후, 검색 전에 물어볼 맞춤형 후속 질문(JD 붙여넣기 또는 공개 링크 공유 포함)을 반환합니다. 먼저 호출하세요.

search_developers

언어, 위치, 활동, 팔로워 수로 GitHub 사용자를 검색합니다. 주제 기반 소싱에는 관련 저장소에서 get_repo_contributors를 대신 사용하세요.

get_developer_profile

심층 프로필 강화: 언어, 스타 수, 커밋 + PR, OSS 기여, 라이선스 분석, 프로필 README, 활동 점수 및 세부 분석.

rank_candidates

직무 설명 기준으로 사용자 이름을 순위화합니다. 결합 점수, 강점, 부족한 점, 근거와 함께 정렬된 후보자를 반환합니다.

score_against_jd

JD 기준으로 후보자를 차원별 분석(기술 스택, 경력 수준, OSS 신호, 리더십)과 함께 평가합니다. 부족한 점과 맞춤형 면접 질문을 반환합니다.

compare_candidates

2-5명의 후보자를 나란히 비교합니다. 차원별 승자와 추천을 보여줍니다. 선택적으로 JD 기준으로 평가할 수 있습니다.

bulk_score

한 번의 호출로 최대 100개의 GitHub 사용자 이름을 평가합니다. 순위가 매겨진 마크다운 테이블 또는 CSV를 반환합니다. 선택적 JD 매칭을 지원합니다.

generate_outreach

후보자의 실제 저장소와 기여를 참조하는 개인화된 리크루터 메시지(짧음/중간/상세)를 생성합니다. 회사 이름과 발신자 이름이 필요합니다. 캐주얼 또는 격식 있는 톤.

get_repo_contributors

모든 저장소의 상위 기여자. owner/repo 또는 전체 URL을 허용합니다. 특정 도메인을 소싱하는 가장 빠른 방법입니다.

점수 산정

활동 점수는 두 계층을 결합합니다: 행동 신호(최근에 한 일)와 평판 하한선(시간에 걸쳐 쌓아온 것).

행동 점수 (0-205)

신호

최대 점수

방법

커밋 + PR (최근 90일)

60

푸시 커밋 + PR 오픈(PR은 x3 가중치). 푸시 기반 및 PR 기반 워크플로우를 모두 포착합니다.

저장소 스타 수

40

개인 저장소 스타 + 기여하는 저장소의 스타. 조직 저장소 관리자도 인정받습니다.

프로필 README

20

프로필 README(github.com/username/username)의 존재 여부.

팔로워

20

20에서 상한.

설명이 있는 저장소

20

설명이 있는 저장소의 비율. 관리와 정성의 신호.

허용적 라이선스 저장소

15

MIT, Apache-2.0, BSD, ISC 또는 Unlicense가 있는 저장소가 하나 이상.

주요 OSS 기여

30

소유하지 않은 저장소에 대한 PR, 푸시 또는 이슈. 3개 저장소에서 상한(각 10점).

평판 하한선

행동 점수만으로는 GitHub 이벤트를 생성하지 않는 작업을 하는 개발자에게 불이익이 됩니다 — Torvalds는 메일링 리스트를 통해 작업하고, 시니어 관리자는 조직 봇을 통해 병합하며, 많은 엔지니어는 비공개 저장소에서 작업합니다.

평판 하한선은 조용한 분기에 누적 영향력이 지워지지 않도록 보장합니다:

임계값

하한선

팔로워 10K+ 또는 스타 50K+

150

팔로워 1K+ 또는 스타 5K+

120

팔로워 500+ 또는 스타 1K+

100

팔로워 100+ 또는 스타 200+

80

최종 점수는 max(행동_점수, 평판_하한선)입니다. 하한선이 적용되면 세부 분석에 reputation_floor 필드가 포함되어 알 수 있습니다.

점수 등급

  • 150+ — 탁월함 (최고 OSS 관리자, 유명 엔지니어)

  • 120-149 — 강한 신호, 연락할 가치가 있음

  • 80-119 — 의미 있는 공개 작업이 있는 견고한 개발자

  • 40-79 — 활동적이지만 공개 신호가 제한적

  • <40 — 낮은 신호 (비공개 작업 또는 주니어일 가능성)

순위화

rank_candidates는 활동 점수와 직무 설명과 후보자 프로필(소개, 언어, 저장소 주제, README) 간의 키워드 중복을 기반으로 한 관련성 점수(0-100)를 결합합니다. 결합 점수는 관련성에 60%, 활동에 40% 가중치를 둡니다 — 직무와 중복이 없는 고활동 개발자가 관련성 있는 개발자보다 높은 순위를 차지해서는 안 됩니다.

인터랙티브 대시보드

검색이 후보 목록을 생성한 후, 서버는 인터랙티브 대시보드를 원하는지 묻습니다 — 검색, 스킬 필터, 순위, 증거, GitHub 프로필 링크. 예라고 답하면 어시스턴트가 점수가 매겨진 후보자 데이터로 자체 아티팩트 도구(Copilot의 캔버스, Claude의 아티팩트)를 사용해 구축합니다.

항상 제안만 할 뿐, 예라고 답하지 않으면 아무것도 구축되지 않으며, 검색에서 사용 가능한 프로필이 생성되지 않으면 제안이 건너뜁니다. GITHUB_TALENT_DASHBOARD_PROMPT=0으로 설정하면 끌 수 있습니다.

페이지가 인라인 캔버스에서 열리는 경우, 해당 창은 콘텐츠를 샌드박싱하고 외부 링크를 차단하므로, 어시스턴트는 GitHub 링크가 작동하는 브라우저에서 저장된 파일을 열도록 요청받습니다.

속도 제한

GitHub REST API: 토큰 사용 시 시간당 5,000회 요청, 미사용 시 60회. 단일 강화 프로필은 6-15회 호출이 소요되고 일반적인 워크플로우(검색 + 5명 후보자 강화 + 순위화)는 ~60-100회를 사용하므로, 인증되지 않은 서버는 한 번의 검색 안에 한도에 도달합니다. 프로필 결과는 순위화 중 중복 호출을 피하기 위해 세션 내에서 캐시됩니다.

시간당 예산과 별개인 두 가지 제한이 있으며 알아두면 유용합니다:

  • 검색 엔드포인트 (/search/commits, /search/issues)는 토큰이 있어도 분당 30회 요청만 허용합니다. 서버는 해당 실패를 프로필 실패가 아닌 알 수 없는 활동 수로 처리하므로 후보 목록은 여전히 반환됩니다 — 커밋 수가 0으로 표시될 뿐입니다.

  • 2차 속도 제한은 동시 요청 버스트에서 발생하며 명시적인 Retry-After를 반환합니다. 서버는 정확히 그 시간만큼 최대 30초까지 기다린 후, 해제되지 않은 창에 재시도하는 대신 포기합니다.

제한 사항 및 책임 있는 사용

이 도구는 공개 GitHub 활동을 기술 소싱의 하나의 신호로 평가합니다. 의존하기 전에 한계를 알아두세요:

  • 실행마다 결과가 다릅니다. AI 기반이므로 — 어시스턴트가 탐색할 저장소와 검색을 결정하므로, 동일한 프롬프트가 매번 다른 후보 목록을 표시할 수 있습니다. 점수 산정 자체는 주어진 후보자 집합에 대해 결정적입니다. 변동은 소싱에서 발생합니다. 반복 가능한 실행을 위해서는 소싱을 제한하세요: 기여자를 가져올 저장소를 지정하거나, 순위를 매길 사용자 이름의 명시적 목록을 제공하세요.

  • GitHub가 엔지니어의 전부는 아닙니다. 공개 활동은 기술적 작업의 강력한 증거이지만 비공개 저장소 및 내부/엔터프라이즈 기여, GitHub 외 생태계(메일링 리스트, GitLab 등)에는 눈이 멀습니다. 사람 관리 또는 리더십 이력을 검증할 수 없습니다 — GitHub 외부에서 확인하세요. (평판 하한선이 존재하는 이유는 정확히 최근 활동이 낮음 ≠ 능력이 낮음이기 때문입니다.)

  • 필터가 아닌 리드 생성기로 사용하세요. 공개 OSS 가시성은 기술뿐만 아니라 여유 시간, 재직 기간, 상황과 상관관계가 있으며 이는 인구 통계에 따라 편향됩니다. 점수를 아웃리치와 인간의 판단을 위한 출발점으로 취급하세요. 후보자를 자동으로 배제하는 데 사용하지 말고, 항상 공평하고 역할 관련성 있는 평가와 함께 사용하세요.

  • 데이터는 실시간이며 속도 제한이 있습니다. 점수는 쿼리 시점의 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