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.
Metadata
Release files for instaply-mcp 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| instaply_mcp-0.3.1.tar.gz | 2.0 MB | Without provenance | Details for instaply_mcp-0.3.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| instaply_mcp-0.3.1-py3-none-any.whl | Python 3 | none | any | Details for instaply_mcp-0.3.1-py3-none-any.whl |
Total release size: 2.1 MB
Release files / instaply_mcp-0.3.1.tar.gz
| Download URL | instaply_mcp-0.3.1.tar.gz |
|---|---|
| Size | 2.0 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7063e6cd7a467298ecd4ce01d60df197f2363e60174b6389411898019537b73e
|
|
BLAKE2b-256 checksum How to use checksums |
9d29c0a614aefdfe28aaf4fc13461ae84390af279a773524f2a5a1079f74c708
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Release files / instaply_mcp-0.3.1-py3-none-any.whl
| Download URL | instaply_mcp-0.3.1-py3-none-any.whl |
|---|---|
| Size | 59.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
1d1c77c012d279e3722d280a84596cf5c1cccf0c0fe4d15dcac6c3feb2c52066
|
|
BLAKE2b-256 checksum How to use checksums |
70dc2634fa725cdcc12bb32ef4980008a2981a69910afdfde8bf331f29c199ac
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.14.2
|
Security for instaply-mcp 0.3.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.