ashby-mcp
# Ashby MCP Server
An MCP (Model Context Protocol) server for integrating with [Ashby](https://www.ashbyhq.com/) ATS. Use this with Claude Code or other MCP-compatible clients to search candidates, view applications, and submit interview feedback.
## Features
- **Search candidates** by name or email
- **Get candidate details** including contact info and resume
- **List applications** for a candidate
- **Submit interview feedback** with ratings and notes
- **View feedback** from other interviewers
- **List open jobs**
- **View interview schedules**
## Installation
```bash
npm install -g ashby-mcp
```
Or clone and build locally:
```bash
git clone https://github.com/antonber/ashby-mcp.git
cd ashby-mcp
npm install
npm run build
```
## Configuration
### 1. Get your Ashby API Key
1. Log into Ashby
2. Go to **Settings** → **API Keys**
3. Create a new API key with appropriate permissions
### 2. Configure Claude Code
Add to your Claude Code MCP settings (`~/.claude/claude_desktop_config.json` or project `.mcp.json`):
```json
{
"mcpServers": {
"ashby": {
"command": "npx",
"args": ["ashby-mcp"],
"env": {
"ASHBY_API_KEY": "your-api-key-here"
}
}
}
}
```
Or if installed locally:
```json
{
"mcpServers": {
"ashby": {
"command": "node",
"args": ["/path/to/ashby-mcp/dist/index.js"],
"env": {
"ASHBY_API_KEY": "your-api-key-here"
}
}
}
}
```
## Available Tools
| Tool | Description |
|------|-------------|
| `search_candidates` | Search for candidates by name or email |
| `get_candidate` | Get detailed candidate information |
| `list_candidate_applications` | List all applications for a candidate |
| `get_application` | Get details about a specific application |
| `submit_feedback` | Submit interview feedback with rating and notes |
| `get_application_feedback` | Get all feedback for an application |
| `list_jobs` | List jobs (filterable by status) |
| `get_interview_schedule` | Get interview schedule for an application |
## Usage Examples
Once configured, you can use natural language with Claude:
- "Search for Jonathan Howard in Ashby"
- "Get the applications for candidate abc123"
- "Submit my interview feedback for Jonathan - Yes rating with these notes: ..."
- "Pull the feedback other interviewers have submitted for this candidate"
## Feedback Ratings
When submitting feedback, use one of these ratings:
- `strong_yes` - Exceptional candidate
- `yes` - Good candidate, proceed
- `lean_yes` - Some positives, worth discussing
- `lean_no` - Some concerns, discuss with team
- `no` - Does not meet bar
- `strong_no` - Clear no
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Watch mode
npm run dev
```
## License
MIT
TDQS
Scored across 9 tools
Each tool targets a distinct resource and action: searching candidates, getting candidate/application details, listing applications, submitting/retrieving feedback, listing jobs, getting interview schedules, and adding notes. No two tools have overlapping purposes, making selection unambiguous.
All tools follow a consistent verb_noun pattern in snake_case (e.g., search_candidates, get_candidate, list_jobs). Verbs like search, get, list, submit, and add are clearly differentiated and used predictably across the set.
Nine tools is well within the ideal 3-15 range for an ATS integration. The scope is tight and focused on recruiting workflows—searching, viewing, feedback, and scheduling—without unnecessary bloat or missing core actions.
The tool surface covers the main candidate and application lifecycle: search, retrieve, list, provide feedback, view interview schedule, and add notes. Minor gaps exist, such as no job detail retrieval or application status updates, but these are not critical for common recruiting tasks.