# jobctl - job application tracker for developers (MCP) [![jobctl-claude MCP server](https://glama.ai/mcp/servers/DmytroRybka/jobctl-claude/badges/score.svg)](https://glama.ai/mcp/servers/DmytroRybka/jobctl-claude) AI agents keep your job search organized; you review and plan in a clean dashboard. - **Agents write** over a remote MCP server (streamable HTTP, OAuth 2.1) at `https://app.jobctl.app/mcp` - **Humans read** at [jobctl.app](https://jobctl.app): pipeline board, analytics, interview timeline, CV/cover attachments - Published in the official [MCP Registry](https://registry.modelcontextprotocol.io) as `io.github.DmytroRybka/jobctl` and listed as a [Glama connector](https://glama.ai/mcp/connectors/io.github.DmytroRybka/jobctl) (Healthy, tool quality A) This repo ships the **Claude Code plugin/skill**, plus a thin **stdio bridge** (`jobctl-mcp`) for clients that prefer local stdio servers. ## Quick start (Claude Code) ``` claude mcp add --transport http jobctl https://app.jobctl.app/mcp \ --header "Authorization: Bearer jc_..." # token: app.jobctl.app/settings /plugin marketplace add DmytroRybka/jobctl-claude /plugin install jobctl@jobctl ``` Then just talk: "I applied to Bosch as Tech Lead, prio A, due friday" - Claude keeps the tracker current while you interview. ## Other MCP clients **Remote (recommended)** - any client with streamable HTTP support connects to `https://app.jobctl.app/mcp`. OAuth 2.1 with dynamic client registration is supported; static bearer tokens (`jc_...`) work everywhere. **Local stdio server** - this repo ships `server.mjs`, a standalone MCP server (stdio) exposing the same 10 tools, backed by the jobctl.app API: ``` git clone https://github.com/DmytroRybka/jobctl-claude && cd jobctl-claude npm install JOBCTL_TOKEN=jc_... node server.mjs ``` or via Docker: ``` docker build -t jobctl-mcp . && docker run -i --rm -e JOBCTL_TOKEN=jc_... jobctl-mcp ``` The server starts and lists tools without a token (introspection); every tool call requires `JOBCTL_TOKEN` (create one at app.jobctl.app/settings). ## Tools (10) | Tool | What it does | |---|---| | `add_application` | Create an application from structured fields or a raw string ("Bosch, Tech Lead, prio A, due friday") with deterministic parsing and duplicate detection | | `list_applications` | Filter by status, priority, text query and saved views | | `get_application` | Full detail: timeline, contacts, interviews, attachments | | `update_application` | Status, priority, salary, next action and more | | `add_note` | Append a note to the application timeline | | `log_interview` | Schedule or debrief interviews with attendees and links | | `get_due` | Overdue and upcoming next actions | | `get_planned` | Agenda for today / tomorrow / this week | | `attach_analysis` | Attach a single replaceable company-analysis markdown (max 100 kB) | | `attach_file` | Attach CV or cover letter files (base64) | ## Privacy and safety - Your data lives in your account only; full JSON export and GDPR account deletion are built in - The API is deterministic - no LLM calls server-side; your agent is the AI layer - Every change is an auditable event with an actor tag (agent / human / system) ## License [MIT](LICENSE)