homerun-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@homerun-mcp how's our hiring pipeline looking this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
homerun-mcp
Run your Homerun hiring from Claude.
Homerun is a great ATS, but day to day a lot of the work is manual: open each candidate, move them one by one through the stages, log in to reply to each of them, export numbers for the weekly update. This MCP server lets Claude (Desktop, Code, or any MCP client) do that work with you, for any role and any hiring process.
You: How are our open roles doing? Who's been waiting more than 5 days?
Claude: 3 open vacancies, 47 active candidates. 6 have had no reply for 5+ days,
4 of them in "New" for the Backend Engineer role. Report saved to
~/Documents/Homerun Reports/homerun-report-2026-10-20.xlsx
You: Move the 4 in New to "Phone screen" and draft an invite for each.
Claude: [shows the 4 drafts] OK to create them as Gmail drafts and log a note in Homerun?What you can do
See the pipeline
Funnel per vacancy and per stage, hired, disqualified, average rating
Who has been waiting for a first reply for more than N days
Time to first reply per vacancy
Act in bulk
Move many candidates to a stage in one go, with an optional note on each
Add notes to many candidates at once (screening summaries, "rejection sent on...")
Add sourced candidates (from LinkedIn, events, referrals) without opening Homerun
Reply to candidates
Claude drafts personal emails (rejection, next step, interview invite, status update) for a whole group
You review them all in one list; with Gmail or Outlook connected they become drafts there
Each candidate gets a note in Homerun so the team knows they were contacted
Report on a schedule
One-call report to Excel (Summary, Needs reply, Active, All candidates), CSV, or JSON
With a Google Drive connector, Claude can put it in Google Sheets
Pair it with a scheduled task in Claude to get it every Monday, or every 2-3 days
Related MCP server: Ashby MCP
Tools
Tool | What it does |
| Report across vacancies to xlsx / csv / json |
| Quick funnel for one vacancy |
| Openings, stages, candidate counts |
| Candidates by vacancy, stage, hire date; notes and sources |
| Move many candidates to one stage (+ optional note) |
| One note per candidate, many candidates |
| Same, one at a time |
| Add or edit candidates |
| Attach a CV or assignment from your computer |
| GDPR erasure, with confirmation |
| Check the key |
Prompts (in Claude Desktop: the "+" menu > homerun):
hiring_review: pipeline review + report + proposed next actionsreply_to_candidates: drafts replies for a group of candidates, then logs themcandidate_brief: one-page brief before an interview
Install
Claude Desktop (one click)
Download
homerun-mcp.mcpbfrom Releases.Double-click it (or Settings > Extensions > drag it in).
Paste your Homerun API key: Homerun > Settings > Integrations > API.
Claude Code / other MCP clients
git clone https://github.com/MrMendiola/homerun-mcp && cd homerun-mcp
npm install && npm run build
claude mcp add homerun -e HOMERUN_API_KEY=your-key -- node "$PWD/dist/index.js"Or in any mcpServers config:
{
"mcpServers": {
"homerun": {
"command": "node",
"args": ["/absolute/path/to/homerun-mcp/dist/index.js"],
"env": { "HOMERUN_API_KEY": "your-key" }
}
}
}Variable | Default | |
| required | Bearer key from Homerun |
|
| Where reports are saved |
|
| Name on notes Claude writes |
Scheduled reports
In Claude Desktop, create a scheduled task (weekly, or every 2-3 days) with a prompt like:
Use the homerun hiring_review prompt with destination google_sheets and reply_sla_days 3.
Each run updates the report and gives you a short summary with proposed actions. Nothing is moved or sent without your OK.
Good to know
Scoped keys. For reports only, grant
vacancies:readandjob-applications:read. Add write scopes only if you want bulk moves and notes.Humans decide. Claude proposes, you approve. The server never rejects anyone on its own, and notes written by Claude are labelled. In the EU, AI that evaluates candidates is high-risk under the AI Act: keep a human in the loop.
Replies go through your email. Homerun's public API has no endpoint to send messages, so replies are drafted in your email client (Gmail / Outlook connector) and logged in Homerun as a note. They will not show up in Homerun's own inbox.
Not in the API: application form answers, assignment content, email threads, stage change dates.
Rate limit. 60 requests/minute per key. The server throttles and retries automatically; a big bulk move may take a minute.
Local only. Runs on your machine: candidate data goes from Homerun to you and Claude, no third-party middleware.
Unofficial. Not affiliated with Homerun. Built on the public API v2.
Develop
npm install
npm run build
npm run pack # builds homerun-mcp.mcpbSee docs/architecture.md for how it is put together.
License
MIT
Available Tools
15 toolsadd_noteAdd note to candidateB
Add a note to a candidate's timeline. Notes written by Claude are signed with the configured author name so the team can tell them apart from human notes.
Inputs: note (required), job_application_id (required), is_sensitive.
bulk_add_notesAdd notes to many candidatesB
Add one note per candidate in one go, e.g. a screening summary or 'rejection email sent on '.
Inputs: notes (required).
bulk_move_candidatesMove many candidatesAIdempotent
Move a list of candidates to the same stage in one go (rate-limited, keeps going if one fails). Show the user the list and get explicit confirmation first. Optionally leave the same note on each.
Inputs: stage (required), job_application_ids (required), note.
create_candidateAdd a candidateB
Create a job application, e.g. for someone sourced on LinkedIn or met at an event. Without vacancy_id the candidate lands in the general candidates pool.
Inputs: email (required), last_name (required), first_name (required), city, +8 more.
delete_candidateDelete candidateADestructive
Permanently delete a job application (e.g. GDPR erasure request). Irreversible: only call after explicit user confirmation.
Inputs: job_application_id (required).
get_job_applicationGet candidateBRead-only
Full details of one candidate, optionally with notes, sources and vacancy.
Inputs: job_application_id (required), include.
get_vacancyGet vacancyARead-only
Full details of one vacancy, including its description and (optionally) its stages and candidate count.
Inputs: vacancy_id (required), include.
hiring_reportHiring report (Excel / CSV / data)A
Build a hiring report across all open vacancies (or the ones given): funnel per stage, hired, disqualified, average rating, time to first reply, and the list of candidates who have waited more than reply_sla_days without any reply. format=xlsx writes an Excel file (sheets: Summary, Needs reply, Active, All candidates); csv writes one flat table (easy to import into Google Sheets); json returns the data only, e.g. to push it into a Google Sheet with another connector.
Inputs: format, output_path, vacancy_ids, include_closed, +1 more.
homerun_pingCheck Homerun connectionARead-only
Verify the API key works.
Inputs: no named parameters.
list_job_applicationsList candidatesARead-only
List job applications (candidates). Filter by vacancy (comma-separated ids allowed), by stage name, or by hire date.
Inputs: page, stage, include, perPage, +2 more.
list_vacanciesList vacanciesARead-only
List job openings (vacancies). Use include=['stages','total_candidate_count'] to see the hiring pipeline of each job.
Inputs: page, status, include, perPage.
move_candidateMove candidate to stageAIdempotent
Move a candidate to another existing stage of the hiring process (stage name must exist in the vacancy). Cannot move back to 'New'. Always confirm with the user before calling.
Inputs: stage (required), job_application_id (required), vacancy_id.
pipeline_summaryPipeline summaryARead-only
Snapshot of one vacancy's funnel: candidates per stage, disqualified count, average rating, candidates still waiting for a first reply. Pulls all pages (mind the 60 req/min limit).
Inputs: vacancy_id (required).
update_candidateUpdate candidate detailsC
Update contact or profile fields of a candidate.
Inputs: fields (required), job_application_id (required).
upload_candidate_fileUpload CV or assignmentB
Attach a local file (resume or assignment) to a candidate.
Inputs: type (required), file_path (required), job_application_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Most tools are clearly distinct: list/get pairs for vacancies and applications, and explicit single-vs-bulk pairs (move_candidate/bulk_move_candidates, add_note/bulk_add_notes). However, the same entity is referred to as both 'candidate' (update_candidate, list_job_applications returns candidates) and 'job_application', and pipeline_summary vs hiring_report both produce funnel data, which could occasionally confuse selection.
Names follow a mostly consistent snake_case verb_noun pattern (list_vacancies, get_vacancy, create_candidate, move_candidate, etc.) with clear bulk_ prefixes for batch variants. Minor deviations are noun-only names (pipeline_summary, hiring_report) and the server-prefixed homerun_ping, plus the candidate/job_application terminology split.
15 tools is well-scoped for an ATS integration, covering reads, writes, reporting, and batch operations without redundancy. Each tool has a distinct, justified role.
Strong coverage of the candidate lifecycle: create/update/delete/get/list, notes, file upload, stage moves, and reporting. Minor gaps exist (no note or file deletion, no vacancy create/update), but these are plausibly out of scope and unlikely to block core workflows.
Related MCP Connectors
Read Homerun vacancies, applications, notes and tags; move an application to a stage or add a note.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Connect Claude to your Platform7n workspaces: chat, links, work and decks. One-click OAuth.
Create contacts, move deals, send proposals and invoices, read your inbox, from Claude or ChatGPT.
Related MCP Servers
- AlicenseAqualityDmaintenanceConnects Claude to the Ashby ATS to manage the hiring pipeline through natural conversation. It enables users to browse jobs, manage candidate profiles, track applications, and coordinate interview stages.245MIT
- AlicenseNot gradedqualityDmaintenanceConnects your Ashby recruiting data to Claude, enabling natural language queries and management of candidates, applications, jobs, interviews, offers, and team information.50 npmMIT
- FlicenseBqualityNot gradedmaintenanceEnables Claude to manage Zoho Recruit ATS operations including candidates, jobs, interviews, analytics, email, and AI-assist through natural language.20-
- FlicenseAqualityDmaintenanceConnects Claude to the Pandapé recruitment API, enabling natural language management of vacancies, structured candidate review against custom criteria, pipeline stage updates, and CV downloads.14-