autoapply-mcp
AutoApply automates job applications using a real Playwright browser. Save your profile once β name, email, phone, address, work authorization, demographics, salary β then point Claude at any job URL and it handles the rest. What it does: Opens the job application in a real Chromium browser Auto-fills all standard fields including React-Select dropdowns (Greenhouse, Lever, Ashby, Workday, LinkedIn Easy Apply) Returns unique/open-ended questions for Claude to answer with context about the role Takes screenshots after each step so you can review before submitting Remembers custom question answers (e.g. "Are you located in SF?" β Yes) so they auto-fill next time Quickstart: Call register to get an API key Call save_profile with your details Call open_job_application with any job URL Call fill_known_fields β Claude fills the form and surfaces any open questions Answer the open questions, review the screenshot, submit No browser extension or local setup required. Fully remote.
Ask AI about autoapply-mcp
Powered by Claude Β· Grounded in docs
I know everything about autoapply-mcp. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
AutoApply MCP
An MCP server that automates job applications using a real browser. Give Claude a job posting URL and it fills the entire form β text fields, dropdowns, work authorization, demographics β and surfaces only the questions that need a personal touch.
Live server: https://autoapply-mcp.onrender.com GitHub: https://github.com/preetrajdeo/autoapply-mcp
Setup (2 minutes)
Prerequisites
- Claude Desktop installed
- Node.js installed β verify with
node --versionin your terminal
Option A β Smithery (easiest)
npx -y @smithery/cli mcp add preetrajdeo/autoapply-mcp
This automatically updates your Claude Desktop config and restarts the connection. Done.
Option B β Manual config
-
Open your Claude Desktop config file:
- Mac:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Can't find the file on Mac? Open Finder β press
Cmd+Shift+Gβ paste~/Library/Application Support/Claude/β openclaude_desktop_config.jsonin any text editor. - Mac:
-
Paste the following (merge with any existing content β don't replace the whole file):
{
"mcpServers": {
"autoapply": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://autoapply-mcp.onrender.com/sse"]
}
}
}
-
Fully quit Claude Desktop (Cmd+Q on Mac, not just close the window) and reopen it.
-
Start a new conversation β AutoApply tools will be available automatically.
First-time setup β Profile onboarding
Once connected, type this in Claude Desktop:
Set up AutoApply for me
Claude will ask you to upload your resume (PDF), pull out everything it can automatically, ask for any missing details, show you a full summary, and save your profile once you confirm. You only do this once β your profile is stored server-side and reused for every application.
Note: If Claude doesn't respond with the onboarding flow, try: "Use the AutoApply onboard prompt"
Applying to a job
Apply to this job for me: https://job-boards.greenhouse.io/acme/jobs/12345
Claude will:
- Open the URL in a real browser
- Fill all standard fields from your profile (name, email, phone, work auth, demographics, etc.)
- Auto-upload your resume to any file upload fields
- Return the open-ended questions for Claude to answer on your behalf
- Show you a screenshot of the completed form before submitting
Applying in bulk
Apply to all of these for me:
https://job-boards.greenhouse.io/acme/jobs/111
https://lever.co/beta/jobs/222
https://jobs.ashbyhq.com/gamma/333
Claude will work through them one by one, pausing between each for your review (or automatically if you set batch mode during onboarding).
Tools reference
| Tool | Description |
|---|---|
register | Get an API key / session ID. Called automatically during onboarding. |
upload_resume | Upload a PDF resume to auto-populate your profile. Parses with Claude, shows a confirmation summary before saving. |
save_profile | Save or update profile details (name, email, phone, address, work auth, demographics, salary, preferences). Always merges β never overwrites fields you don't mention. |
get_profile | Retrieve your saved profile to review or verify it. |
save_field_mapping | Teach AutoApply to auto-answer a recurring question. Example: pattern located in san francisco β answer Yes. |
open_job_application | Open a job URL in a real Chromium browser. Always call before fill_known_fields. |
fill_known_fields | Auto-fill all fields from your profile. Returns a screenshot + list of open-ended questions. Also auto-uploads your resume to any file input fields. |
fill_answer | Fill a specific answer into one field (use CSS selector returned by fill_known_fields). |
take_screenshot | Screenshot the current state of the page. |
scroll_page | Scroll up or down to reveal more fields. |
close_session | Close the browser session after submitting or abandoning an application. |
Troubleshooting
"AutoApply tools don't appear in Claude"
- Make sure you fully quit Claude Desktop (Cmd+Q on Mac), not just closed the window
- Verify Node.js is installed:
node --versionin terminal - Check the config file is valid JSON (no trailing commas, proper quotes)
Connection times out on first use
- The server sleeps after 15 minutes of inactivity (free tier). Wait 30 seconds and try again β it wakes up automatically and stays fast after that.
"Session not found" error
- Your browser session expired. Call
open_job_applicationagain to start a new one.
Resume not uploading
- Only PDF is supported. If your resume is a Word doc, export it as PDF first.
How it works
Claude Desktop
|
| stdio (mcp-remote bridge)
v
SSE β AutoApply MCP Server (Express + @modelcontextprotocol/sdk)
|
| Playwright
v
Real Chromium browser β Job application page
Field filling uses Object.getOwnPropertyDescriptor to set React-controlled input values and dispatches synthetic input, change, and blur events β so frameworks like Greenhouse (React-Select) register the change correctly. React fiber tree traversal is used to find and invoke selectOption() on dropdown components.
Self-hosting
Deploy to Render (recommended)
The repo includes a render.yaml. Click "New Web Service" in Render, connect the repo, and add these environment variables:
| Variable | Required | Description |
|---|---|---|
ANTHROPIC_API_KEY | Yes (for resume parsing) | Your Anthropic API key |
DATABASE_URL | Recommended | PostgreSQL connection string for persistent profile storage. Without this, profiles are stored on the local filesystem and wiped on restart. |
Local development
npm install
npx playwright install chromium
npm run dev # starts at http://localhost:3000
Point Claude Desktop at http://localhost:3000/sse during development.
Built with
- TypeScript Β· Express Β· Playwright Β· @modelcontextprotocol/sdk Β· @anthropic-ai/sdk
