Instaply MCP server — local-first agentic job applications inside Claude Desktop / Claude Code / Codex and other local MCP clients. Runs Playwright on your residential IP so captcha and rate-limit walls disappear.
Project description
Instaply MCP
Agentic job applications, running on your own machine, inside Claude Desktop, Claude Code, Codex, and other local MCP clients.
Zero servers to maintain. Zero accounts. Your profile, your saved answers,
your application history all live in one SQLite file at ~/.instaply/data.db.
If the original author disappears tomorrow, every install keeps working
forever — there is no remote service it depends on.
Why local-first
- No captcha walls. The worker runs in your real Chrome on your residential IP. hCaptcha and reCAPTCHA Enterprise almost never challenge normal users on residential traffic — the problem that breaks every cloud-hosted job-application bot just doesn't apply.
- No rate limits. JobSpy, Greenhouse, Lever — none of them rate-limit residential traffic the way they hammer datacenter IPs.
- No privacy trade-off. Your resume, profile, and answer vault never leave your machine. The MCP server doesn't even have a network egress for those.
- No subscription. Pay once for the package (or take it MIT-licensed off GitHub), use it as long as you have a job to apply to.
Install
Claude Code
claude mcp add instaply uvx instaply-mcp
Codex
codex mcp add instaply uvx instaply-mcp
Claude Desktop
You can either:
- double-click the
.mcpbbundle, or - add the same command-based config manually:
Edit your claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"instaply": {
"command": "uvx",
"args": ["instaply-mcp"]
}
}
}
Restart Claude Desktop. The Instaply tools appear in the tool tray.
Universal fallback
If a client prefers a raw Python module command instead of uvx, use:
python -m instaply_mcp
That works because the package now exposes a real __main__ entrypoint.
Tools
The v0.3.1 tools are local-only — no network, no hosted dependency:
| Tool | What it does |
|---|---|
update_profile(patch) |
Sparse update of identity fields. Stored in ~/.instaply/data.db. |
get_profile() |
Read the current profile as a flat dict. |
save_answer(question, answer) |
Teach the agent an answer once; it reuses the value for normalized variants on future applications. |
list_answers(limit?) |
Audit what the agent has learned. |
delete_answer(answer_id) |
Forget a saved answer. |
list_applications(status?, limit?) |
Local audit trail of jobs the agent has acted on. |
get_status() |
Quick counts: applications by status, jobs cached, answers saved. |
apply_to_job(apply_url, ...) |
Opens the URL in your local Chrome, fills the form via the Instaply rules engine + saved-answer reuse, leaves the browser open for you to solve any captcha and click Submit. Requires the [worker] extra (Playwright). |
mark_complete(application_id) |
Mark an application submitted after you click Submit on the employer's page and see the confirmation. |
Optional extras
pip install 'instaply-mcp[worker]' # adds Playwright
python -m playwright install chromium # one-time, ~150 MB cached
The base install (uvx instaply-mcp) gives you profile, answer vault,
and audit trail. Add [worker] when you want apply_to_job to actually
drive a browser.
What's coming next
search_jobs(query, location)— local JobSpy + Greenhouse + Lever scrape via the[search]extra.- Resume parser (PDF + DOCX, conservative prompt — never invents a background you don't have).
import_from_dashboard(token)— one-shot migration for users who already have data in the hosted product.- Auto post-submit detection so
mark_completebecomes optional.
Storage layout
Single SQLite file:
~/.instaply/
└── data.db # profile + answers + applications + jobs cache
Override with INSTAPLY_DATA_DIR env var if you want it elsewhere.
The schema is documented in instaply_mcp/db.py. It's stable; future
versions will use ALTER TABLE migrations rather than rebuild.
License
MIT. Use it however you want. If you ship a commercial product on top of it, a "Powered by Instaply" link is appreciated but not required.
Hosted version (still maintained for now)
If you'd rather not run anything locally, the hosted product at instaply.asion.ai still works. It's the same engine; the local MCP and the hosted SaaS share the worker, the rules, and the answer-vault contract. Use whichever fits your taste.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file instaply_mcp-0.3.1.tar.gz.
File metadata
- Download URL: instaply_mcp-0.3.1.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7063e6cd7a467298ecd4ce01d60df197f2363e60174b6389411898019537b73e
|
|
| MD5 |
47f4a7641fd7b2676d79e63bd84984ef
|
|
| BLAKE2b-256 |
9d29c0a614aefdfe28aaf4fc13461ae84390af279a773524f2a5a1079f74c708
|
File details
Details for the file instaply_mcp-0.3.1-py3-none-any.whl.
File metadata
- Download URL: instaply_mcp-0.3.1-py3-none-any.whl
- Upload date:
- Size: 59.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d1c77c012d279e3722d280a84596cf5c1cccf0c0fe4d15dcac6c3feb2c52066
|
|
| MD5 |
53c3b2af9042fd9f0059e48ec3142834
|
|
| BLAKE2b-256 |
70dc2634fa725cdcc12bb32ef4980008a2981a69910afdfde8bf331f29c199ac
|