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.2.tar.gz (34.5 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.2-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: internship_mcp-0.2.2.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for internship_mcp-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5282961838fc224e81b5d50b6797b1b3dfcf2ce4cdcb6e9d60916f3db8187613
MD5 866c34141fec30a9d782e95539b4cb14
BLAKE2b-256 70eb79c9ee5cd279cb10d058112997725599f9a8224719725a756f0269f2635c

See more details on using hashes here.

Provenance

The following attestation bundles were made for internship_mcp-0.2.2.tar.gz:

Publisher: publish.yml on internship-app1/internship-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: internship_mcp-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for internship_mcp-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 8faca3140f942c23fd3828c7dc4dec5f9dc308cf34f12bd9982fd8a4ad623bd9
MD5 d7b6018c11b9761d2624ba7a3763a47f
BLAKE2b-256 c6e0ff2a72f50eaae26899b370de180a371cb892ef3070b0dc57faeb586ed6f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for internship_mcp-0.2.2-py3-none-any.whl:

Publisher: publish.yml on internship-app1/internship-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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