Skip to main content

Vendor-neutral MCP server for the Internship Apply Agent — deterministic tools, all AI reasoning done by the calling agent, all PII kept local.

Project description

internship-mcp

A vendor-neutral MCP server that turns any MCP-capable agent (Claude Code, Cursor, Codex, Windsurf, Cline) into an internship apply agent: pull fresh internship postings, deterministically prefilter them against your skills, tailor your resume per job (your agent writes the bullets, pdflatex compiles the PDF locally), assemble a fully-filled application packet, and prefill ATS forms via the Playwright MCP — while you review and hit submit.

Design principles

  • Your agent is the brain. This server never calls a model. Skill extraction, ranking, bullet rewriting, and answers are your agent's own reasoning over deterministic data.
  • Your PII stays on your machine. Citizenship, visa, EEO, and demographic answers live in a Fernet-encrypted local file and flow only into the application forms you approve — never to our backend.
  • Compile is local by default. The Docker image bakes pdflatex; the backend compile endpoint is a rate-limited fallback for the no-Docker quick start.

Quick start

  1. Sign in at the Internship Matcher web app and generate an API key on the /developer page.
  2. Pick a tier:

Just exploring? Hosted endpoint (zero install — job search & fit scoring only)

Add a custom connector / remote MCP server pointing at:

https://internshipmatcher.com/mcp?key=im_live_...

(Clients that support headers can send X-API-Key instead of the ?key= param.) The hosted tier covers discovery; applying needs the full agent below.

Full apply agent — uvx (recommended; no Docker, no clone)

{
  "mcpServers": {
    "internship": {
      "command": "uvx",
      "args": ["internship-mcp"],
      "env": { "INTERNSHIP_API_KEY": "im_live_..." }
    },
    "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] }
  }
}

Resume compiling: during onboarding the agent asks you to choose — install pdflatex locally for unlimited compiles (recommended):

# macOS
brew install --cask basictex && sudo tlmgr update --self && sudo tlmgr install enumitem titlesec parskip microtype
# Debian/Ubuntu
sudo apt install texlive-latex-extra
# Windows: install MiKTeX from https://miktex.org

…or skip the install and compile on our servers (15 resumes/week). COMPILE=auto (the default) picks local automatically whenever pdflatex is present.

Docker (advanced — pinned TeX Live + OCR baked in, fully reproducible)

{
  "mcpServers": {
    "internship": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
               "-v", "internship-home:/root/.internship-agent",
               "-e", "INTERNSHIP_API_KEY",
               "ghcr.io/internship-app1/internship-mcp-server:latest"],
      "env": { "INTERNSHIP_API_KEY": "im_live_..." }
    },
    "playwright": { "command": "npx", "args": ["@playwright/mcp@latest"] }
  }
}

Config file locations: Claude Code .mcp.json · Cursor ~/.cursor/mcp.json · Codex ~/.codex/config.toml · Windsurf ~/.codeium/windsurf/mcp_config.json · Cline cline_mcp_settings.json.

  1. Ask your agent something like: "Set up my internship profile, then find new postings from the last 3 days that fit my resume at ~/resume.pdf, tailor my resume for the top 5, and prefill the applications for my review."

Environment

Var Default Meaning
INTERNSHIP_API_KEY (required) per-user key from /developer
INTERNSHIP_API_URL production URL backend base URL
INTERNSHIP_HOME ~/.internship-agent encrypted profile, tracker DB, PDFs
COMPILE auto local / remote / auto (local if pdflatex present)
INTERNSHIP_PROFILE_KEY fallback Fernet key when no OS keyring exists
MAX_AUTO_SUBMITS 10 v2 per-session auto-submit cap

Development

pip install -e ".[dev]"
pytest                 # unit tests
pytest -m parity       # compile parity vs the backend core (needs pdflatex)
npx @modelcontextprotocol/inspector uvx --from . internship-mcp
docker build -t internship-mcp .

Safety & terms

v1 is assisted: the agent prefills, you review and submit. Auto-submit (v2) is opt-in, dry-run by default, capped per session, and blocked by any low-confidence field. Subjective questions ("why us?", "proudest achievement") are always asked to you and saved in your local answer bank — never fabricated. EEO questions default to "Decline to self-identify" unless you set them. You are responsible for the accuracy of every application and for complying with each job board's terms of service. Every submission is logged locally with the exact answers used.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

internship_mcp-0.2.1.tar.gz (34.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

internship_mcp-0.2.1-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

Details for the file internship_mcp-0.2.1.tar.gz.

File metadata

  • Download URL: internship_mcp-0.2.1.tar.gz
  • Upload date:
  • Size: 34.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for internship_mcp-0.2.1.tar.gz
Algorithm Hash digest
SHA256 57346a0d251eaa22e34875ea50d69455537a7df7d4004e7b1dd17d487b112dfd
MD5 0347aedc941bbe7902aa04b6c31672a3
BLAKE2b-256 600f2b9f3748dbe3fdd07e14ccb369f87e0a824bbbe2c868fe460ae9e2560220

See more details on using hashes here.

File details

Details for the file internship_mcp-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: internship_mcp-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for internship_mcp-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 73ff8395945856aac2ec9783ae11fba62fa1e870c6442cd445f1d1f07b837fa4
MD5 70a2a96c787c55223745f66309eaf717
BLAKE2b-256 5f14afe9af636cc12b0b2460188d52ec73944bd7ba5fb1ad59338306d7ebcb97

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page