CareerMate
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CareerMateget my onboarding status"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CareerMate
한국어 · English
평소 쓰는 AI에게 말로 커리어를 정리시키세요. 이력서 등록·공고 분석·자기소개서·지원 현황·면접 준비를 내 컴퓨터에서 동작하는 AI 에이전트(Claude Desktop·Claude Code·Codex 등)에게 대화로 시키면, CareerMate가 그 결과를 이 컴퓨터에만 구조화해 보관하고 MCP로 노출합니다. CareerMate 안에 AI는 없습니다 — 생각은 당신의 AI가, 저장은 CareerMate가 합니다.

핵심 철학
MCP 우선 — 새 앱 사용법을 익힐 필요가 없습니다. 내 컴퓨터에서 동작하는 AI 에이전트(Claude Desktop·Claude Code·Codex 등 로컬 MCP 클라이언트)와 대화하면, 그 AI가 CareerMate의 로컬 MCP 도구를 호출해 당신의 커리어 DB를 읽고 씁니다.
로컬 우선 — 모든 데이터는 당신의 컴퓨터에만 저장됩니다(
~/.careermate). 저장된 개인 데이터는 외부 서버로 전송하지 않습니다 — 외부로 나가는 것은 선택적 버전 확인과 공고 검색 시 검색 키워드뿐입니다(아래 보안 / 프라이버시 참고). 대시보드 웹 서버는127.0.0.1(이 컴퓨터)에만 연결됩니다.LLM 비내장 — CareerMate 안에는 AI가 들어 있지 않습니다. 분석·글쓰기 같은 “생각하는 일”은 당신의 AI가 하고, CareerMate는 데이터를 안전하게 보관·조회하는 역할만 합니다.
쉽게 말해: 당신의 AI가 “두뇌”, CareerMate는 그 두뇌가 꺼내 쓰는 “커리어 서랍장”입니다.
Related MCP server: Placed MCP Server
무엇을 하나요?
프로필·이력서·자기소개서·채용공고·지원 현황·면접 준비를 로컬 SQLite에 구조화해 저장하고, AI 어시스턴트가 MCP 도구로 그 데이터를 읽고 씁니다. 전형적인 흐름은 이렇습니다.
프로필·이력서 등록 → 2. 채용공고 저장·파싱 → 3. 적합도(핏) 분석 → 4. 맞춤 자기소개서 작성·버전 관리 → 5. 지원 상태 관리 → 6. 면접 준비
언제든 대시보드를 열어 저장된 데이터를 눈으로 확인할 수 있습니다. 자세한 단계별 런북은 docs/START_WORKFLOW.md를 참고하세요.
주요 기능
AI와 대화로 모든 작업 — MCP 도구로 온보딩·프로필·이력서·자소서·공고·핏 분석·지원 상태·면접 준비·전문가 플레이북·AI 티 안 나는 글쓰기까지 처리.
지원 상태 8단계 관리 —
draft(작성 중) ·planned(지원 예정) ·applied(지원 완료) ·document_passed(서류 합격) ·interview(면접 진행) ·final_passed(최종 합격) ·rejected(불합격) ·on_hold(보류).document_passed이상에서는 면접 준비를 다음 행동으로 제안합니다.자기소개서 버전 관리 — 공고별로 자소서 버전을 쌓고 타임라인으로 비교, 파일로 내보내기.
공고 검색·가져오기 — 키워드(직무·기술)로 원티드·점핏 같은 공개 채용 사이트에서 공고를 바로 가져와, 마음에 드는 것만 저장. 키 발급·설치 없이 동작하며, 공개 공고를 가져오기만 합니다(봇 차단 우회·자동 대량수집 없음, 보내는 건 검색어뿐).
채용공고 파싱 — 붙여넣거나 가져온 공고 텍스트를 구조화해 저장.
로컬 대시보드 — 프레임워크·CDN 없는 바닐라 JS로 만든 7페이지 웹 화면(다크모드 지원).
데이터 내보내기/삭제 — Settings 페이지에서 직접.
예: 공고 검색 — "백엔드 공고 찾아줘"라고 하면 AI가 공개 사이트에서 공고를 모아 이렇게 보여주고, 고른 것만 저장합니다:
"백엔드" 공고 6건을 찾았어요 (원티드·점핏):
미소(miso) — 백엔드 개발자 (Node.js) · 서울 · 경력 5~11년
콕스웨이브 — [AX Workflow Builder] 백엔드 엔지니어 · 서울 · 경력 3~7년
다우기술 — HTS 채널 개발 · 서울 마포구 ·
JavaScriptMfc· ~7/7 마감어떤 공고를 저장해서 적합도 분석·자소서로 이어갈까요? (예: "1번, 3번 저장")

구성
두 개의 로컬 프로세스가 같은 데이터베이스를 공유합니다.
프로세스 | 실행 | 역할 |
대시보드 웹 서버 |
|
|
MCP 서버 |
| stdio 기반. 보통 AI 클라이언트가 자동 실행. 커리어 작업 도구 제공. |
빠른 시작
요구사항은 Node.js >= 22.5.0 하나입니다 — 내장 node:sqlite를 쓰므로 컴파일러·네이티브 빌드가 필요 없습니다. node --version으로 확인하고, 미만이거나 명령이 없으면 설치하세요(Windows: winget install OpenJS.NodeJS.LTS · macOS: brew install node · 그 외: https://nodejs.org 최신 LTS).
CareerMate는 내 컴퓨터에서 로컬 stdio MCP 서버를 띄울 수 있는 AI에서 동작합니다. (ChatGPT·Gemini의 웹/앱은 클라우드에서 동작해 로컬 stdio MCP 서버에 직접 연결할 수 없습니다.)
A. 그냥 쓰려면 (권장 — 클론·빌드 없음)
설치는 크게 3가지 — "누가 설치하느냐" 의 차이입니다. 아래 순서대로 골라 쓰세요.
① 에이전트가 대신 설치 (권장)
작업 폴더에서 명령을 실행할 수 있는 AI(Claude Code 데스크톱 "Code" 탭 / CLI · Codex CLI · Gemini CLI · Cursor 등)에게 한 문장으로 시키면, AI가 careermate.life/llms-install.txt를 읽어 npm 설치 + MCP 등록까지 해줍니다.
CareerMate를 설치하고 설정해줘. INSTALL.md를 따라 진행해줘.AI가 INSTALL.md 런북을 따라 진행하고, 첫 실행 시 프로젝트 서버에 대한 일회성 승인만 눌러 주면 됩니다. (소스 폴더에서 직접 작업 중이면 npm install 후 npm run init.)
Claude "Code" 탭은 비개발자에게 가장 매끄럽습니다 — 작업 폴더 하나를 잡고 데이터까지 그 안에 두는 방식입니다. (Pro 이상 구독 필요, Windows는 Git 사전 설치.) Codex는
~/.codex/config.toml에, Gemini/Cursor 등은 각 클라이언트 설정에 등록됩니다.
② npm 명령 직접
터미널에 한 줄이면 감지된 AI 앱에 자동 등록됩니다.
npx -y careermate init그 외 클라이언트(Cursor·Cline·Windsurf 등)는 npx -y careermate init -- --print로 등록용 설정 블록을 출력해 수동으로 붙일 수 있습니다.
③ careermate.zip (Claude Desktop "채팅" 앱 전용 · Node 불필요 폴백)
터미널·Node 없이 붙이는 유일한 길입니다. 최신 GitHub Release에서 careermate.zip을 내려받아 압축 해제한 뒤, Claude Desktop의 Settings → Extensions → Advanced settings → Install extension… 에서 압축을 푼 폴더를 추가하고 재시작합니다. (소스에서 직접 만들려면 npm run build:mcpb → dist/careermate.zip.) 단 Claude Desktop 내장 Node 버전에 의존해 불안정할 수 있습니다(Node<22.5면 동작 불가).
.mcpb 직접 추가는 일부 Claude Desktop 버전에서 실패하는 알려진 이슈가 있어, 현재는 ZIP 압축 해제 후 폴더 추가를 권장합니다. .mcpb와 .zip은 같은 번들입니다.
연결 후 AI 클라이언트를 완전히 재시작하고, get_onboarding_status를 호출해 달라고 시켜 연결을 검증하세요. 자세한 절차는 AI용 런북 INSTALL.md, 사람용 설치 안내 https://careermate.life, 설치 후 사용법 docs/START_WORKFLOW.md, 지원 앱 매트릭스 **docs/SUPPORTED_AI_APPS.md**를 참고하세요.
B. 소스로 개발/기여하려면
git clone https://github.com/osntak/careermate.git && cd careermate
npm install # 빌드 단계 없음 — TypeScript를 tsx로 바로 실행
npm start # 대시보드 http://127.0.0.1:4319 (포트 사용 중이면 다음 빈 포트로 폴백, Ctrl+C 종료)
npm run seed # (선택) 데모 데이터로 둘러보기
npm run init # 이 폴더 기준으로 AI 클라이언트에 MCP 등록AI 클라이언트에 연결된 상태라면 "대시보드 열어줘"만으로도 서버가 백그라운드에서 시작되므로, 대시보드가 터미널 세션에 묶이지 않습니다.
안 되면 여기부터 (Troubleshooting)
AI가 CareerMate를 못 봐요 — AI 앱을 완전히 종료 후 재시작하세요(백그라운드/트레이 포함). Claude Code는 폴더 "신뢰" 1회 승인이 필요하고,
/mcp명령으로 careermate가 보이는지 확인할 수 있습니다.뭐가 문제인지 모르겠어요 — 터미널에서
npx -y careermate doctor(Node·데이터 폴더·DB·도구 등록·업데이트 점검). AI에게 "doctor 돌려서 뭐가 문제인지 봐줘"라고 해도 됩니다.Node 버전 오류 —
node --version이 22.5 미만이면 최신 LTS로 재설치하고 터미널을 새로 연 뒤 다시 시도하세요.Claude 채팅앱에 zip이 안 붙어요 — 알려진 이슈입니다. 압축을 푼 폴더를 추가하세요. 그래도 안 되면 ②의
npx -y careermate init경로를 권장합니다.포트 충돌 — 자동으로 다음 빈 포트로 폴백합니다. 터미널에 출력된 실제 주소를 확인하세요.
더 많은 항목은 docs/FAQ.md에 있습니다. 보안 문제는 공개 이슈 대신 SECURITY.md의 비공개 절차로 알려주세요.
대시보드 7페이지
페이지 | 설명 |
Home | 현재 상태·다음 할 일 한눈에. |
Profile | 프로필, 경력(experiences), 프로젝트, 스킬 관리. |
Jobs | 저장한 채용공고 목록과 상세(공고 내용·핏 분석). |
Applications | 지원 현황을 8단계 상태로 보는 칸반 보드. |
Documents | 자기소개서 버전 타임라인과 이력서. |
Interview | 면접 준비 자료( |
Settings | 데이터 내보내기·삭제, 환경 정보. |
다크모드를 지원합니다.
MCP 도구 한눈에
분류 | 도구 |
온보딩 |
|
프로필 |
|
이력서 |
|
경력·프로젝트·스킬 |
|
자기소개서 |
|
채용공고 |
|
오퍼(제안) |
|
핵심 컨텍스트 |
|
핏 분석 |
|
지원 상태 |
|
면접 준비 |
|
글쓰기 |
|
전문가 지식 (Career-OS) |
|
저장 전 점검 |
|
대시보드/활동 |
|
업데이트 |
|
이 도구들 위에 7종의 워크플로우가 정의되어 있어 AI가 단계별로 자연스럽게 안내합니다: 핵심 6종(onboarding, analyze_job, write_cover_letter, write_career_description, manage_application_status, prepare_interview)과 LinkedIn·포트폴리오용 build_personal_brand.
프로젝트 구조
CareerMate/
├─ apps/
│ ├─ web/ # 대시보드 + 로컬 API 서버 (npm start)
│ └─ mcp/ # MCP stdio 서버 (npm run mcp)
├─ packages/
│ ├─ shared/ # 공용 타입·zod 스키마·유틸
│ ├─ db/ # node:sqlite DB 접근·스키마·마이그레이션
│ ├─ core/ # 도메인 유스케이스
│ ├─ mcp-tools/ # MCP 도구 정의
│ ├─ knowledge/ # Career-OS 전문가 플레이북·검증 루브릭 serve
│ ├─ exporters/ # 내보내기(자소서 등)
│ ├─ parsers/ # 채용공고 파싱
│ ├─ prompts/ # 프롬프트·안내 문구
│ └─ workflows/ # 워크플로우 6종
├─ site/ # 설치 안내 페이지
├─ docs/ # 문서
├─ scripts/ # migrate / seed / doctor / test 등
└─ package.json스택: TypeScript(ESM), 무빌드 실행(
tsx), 내장node:sqlite(네이티브 컴파일 없음),zod,@modelcontextprotocol/sdk. 대시보드는 프레임워크·CDN 없는 바닐라 JS + 자체 CSS 디자인 시스템.데이터 저장소: 12개 테이블(profile, experiences, projects, skills, documents, cover_letters, cover_letter_versions, jobs, fit_analyses, applications, interview_preps, activities). 두 프로세스(대시보드·MCP)가 같은 SQLite DB를 공유합니다.
npm 스크립트
스크립트 | 설명 |
| 의존성 설치 (빌드 없음) |
| 대시보드 웹 서버 실행 |
| 대시보드 실행 (파일 변경 시 자동 재시작) |
| MCP 서버 실행 (stdio) |
| DB 생성/업그레이드 |
| 설치/환경 점검 |
| 예시 데이터 삽입 |
| 배포용 플레인 JS 번들( |
| Claude Desktop용 번들 빌드 → |
| E2E 테스트 실행 |
| Playwright UI 스모크 테스트 |
| 타입 검사 ( |
데이터 위치 & 환경변수
기본 폴더:
~/.careermate(Windows:%USERPROFILE%\.careermate).careermate.sqlite— 데이터베이스 파일exports/— 내보낸 파일backups/— 백업uploads/— 업로드 파일server.json— 실행 중 핸드셰이크 정보
환경변수로 동작을 바꿀 수 있습니다.
CAREERMATE_DATA_DIR— 데이터 폴더 위치 변경CAREERMATE_PORT— 대시보드 포트 고정CAREERMATE_NO_OPEN— 시작 시 브라우저 자동 열기 끄기
보안 / 프라이버시
로컬 전용 바인딩 — 대시보드 서버는
127.0.0.1(loopback)에만 바인딩되어 외부에서 접근할 수 없습니다.DNS 리바인딩 차단 — Host 허용목록으로 검증.
변경 요청 보호 — CSRF 세션 토큰(HTML
meta로 주입), 외부 Origin 차단.정적 파일 보호 — 경로 traversal(상위 폴더 탈출) 차단.
본문 크기 제한 — 요청 본문 8MB 제한.
민감 정보 비노출 — 이력서·자기소개서 본문은 로그나 에러 응답에 노출되지 않습니다.
사용자 데이터 외부 전송 없음 — CareerMate는 당신의 프로필·이력서·자소서 등 개인 데이터를 외부로 보내지 않습니다. 모든 데이터는 당신의 컴퓨터에만 남습니다. 외부로 나가는 네트워크 호출은 (1) 선택적 버전 확인, (2) 공고 검색(공개 잡보드)뿐이며, 이때도 보내는 것은 검색 키워드뿐(개인 데이터 아님)이고 공개 공고를 가져오기만 합니다(봇 차단 우회·자동 대량수집 없음). 내보내기·삭제는 대시보드 Settings에서 직접 할 수 있습니다.
문서
INSTALL.md— AI 어시스턴트가 따라가는 설치·연결 런북(소스 직접 실행 기준).docs/SUPPORTED_AI_APPS.md— 설치 레퍼런스 허브: 지원 앱 매트릭스 + 설치 3방식(에이전트/npx/zip) + 클라이언트별 수동 MCP 설정 + 알려진 제약. (사람용 안내는 https://careermate.life)docs/START_WORKFLOW.md— 등록부터 면접 준비까지 단계별 작업 런북.docs/FAQ.md— 자주 묻는 질문 / 문제 해결: "PDF가 안 읽혀요", "분석이 안 돼요", "공고 URL은 어떻게 넣어요" 등.docs/dev/ROADMAP.md— 로드맵(앞으로 갈 방향).CHANGELOG.md— 버전별 변경 이력. /CONTRIBUTING.md·SECURITY.md·CODE_OF_CONDUCT.md— 기여·보안·행동 강령.
테스트
npm test # E2E 테스트 (보안·업무흐름·MCP stdio·대시보드↔MCP 동일 DB 양방향)
npm run test:ui # 대시보드 페이지 렌더 스모크 (Playwright)
npm run typecheck기타 유용한 스크립트: npm run migrate(DB 생성/업그레이드), npm run seed(예시 데이터), npm run doctor(설치·환경 점검).
라이선스
MIT 라이선스 — 전문은 LICENSE 파일을 참고하세요.
CareerMate (English)
한국어 · English
Let the AI you already use manage your career — by talking to it. Ask an AI agent running on your own computer (Claude Desktop, Claude Code, Codex, …) to register your resume, analyze postings, draft cover letters, track applications, and prep interviews; CareerMate stores the results as structured data only on this machine and exposes them over MCP. There is no AI inside CareerMate — your AI does the thinking, CareerMate does the storing.

Core philosophy
MCP-first — No new app to learn. You talk to an AI agent running on your machine (Claude Desktop, Claude Code, Codex, and other local MCP clients), and that AI calls CareerMate's local MCP tools to read and write your career database.
Local-first — All data lives only on your computer (
~/.careermate). Your stored personal data is never sent to external servers — the only outbound calls are the optional version check and the search keyword during job search (see Security / privacy below). The dashboard web server binds only to127.0.0.1(this machine).No built-in LLM — There is no AI inside CareerMate. The "thinking" — analysis, writing — is done by your AI; CareerMate only stores and serves the data safely.
In short: your AI is the "brain," and CareerMate is the "career drawer" it reaches into.
What it does
It stores your profile, resumes, cover letters, job postings, application pipeline, and interview prep as structured data in a local SQLite database, and your AI assistant reads and writes that data through MCP tools. The typical flow:
Register profile & resume → 2. Save & parse job posting → 3. Fit analysis → 4. Write & version cover letters → 5. Manage application status → 6. Interview prep
You can open the dashboard at any time to see your stored data. For a step-by-step runbook, see docs/START_WORKFLOW.md.
Key features
Everything through conversation with AI — MCP tools cover onboarding, profile, resumes, cover letters, job postings, fit analysis, application status, interview prep, expert playbooks, and human-sounding writing.
8-stage application status —
draft·planned·applied·document_passed·interview·final_passed·rejected·on_hold. Interview prep is suggested atdocument_passedor later.Cover-letter versioning — Stack versions per posting, compare on a timeline, export to a file.
Job search & import — Pull postings by keyword (role/skill) straight from public job boards (e.g. Wanted, Jumpit) and save only the ones you like. No API key or setup; it only fetches public postings (no bot-protection bypass, no bulk harvesting — only the search keyword is sent).
Job-posting parsing — Turn pasted or imported posting text into structured records.
Local dashboard — A 7-page web UI built with framework-free, CDN-free vanilla JS (dark mode supported).
Export / delete your data — Directly from the Settings page.
Example: job search — Ask "find backend jobs" and the AI gathers postings from public boards, presents them like this, and saves only the ones you pick:
Found 6 "backend" postings (Wanted · Jumpit):
miso — Backend Developer (Node.js) · Seoul · 5–11 yrs
Coxwave — [AX Workflow Builder] Backend Engineer · Seoul · 3–7 yrs
Daou Tech — HTS Channel Dev · Seoul Mapo-gu ·
JavaScriptMfc· due 7/7Which should I save to analyze fit / draft a cover letter? (e.g. "save #1 and #3")

Architecture
Two local processes share the same database.
Process | Run | Role |
Dashboard web server |
|
|
MCP server |
| stdio-based. Usually launched automatically by the AI client. Provides the career tools. |
Quick start
The only requirement is Node.js >= 22.5.0 — CareerMate uses the built-in node:sqlite, so no compiler or native build is needed. Check with node --version; if it's below 22.5 or missing, install it (Windows: winget install OpenJS.NodeJS.LTS · macOS: brew install node · otherwise the latest LTS from https://nodejs.org).
CareerMate works with any AI that can launch a local stdio MCP server on your machine. (The web/mobile apps of ChatGPT and Gemini run in the cloud and cannot connect directly to a local stdio MCP server.)
A. Just want to use it (recommended — no clone, no build)
Installation comes down to three options — "who does the installing." Pick one, in this order.
① Let the agent install it for you (recommended)
In your working folder, give a one-line instruction to an AI that can run commands (Claude Code's desktop "Code" tab / CLI, Codex CLI, Gemini CLI, Cursor, …). The AI reads careermate.life/llms-install.txt and handles npm install + MCP registration for you.
Install and set up CareerMate. Follow INSTALL.md.The AI follows the INSTALL.md runbook; on first run you just approve the one-time project-server prompt. (If you're working from a source folder directly, run npm install then npm run init.)
Claude's "Code" tab is the smoothest for non-developers — you pick one working folder and keep the data inside it. (Requires a Pro-or-higher subscription; on Windows, Git must be pre-installed.) Codex registers in
~/.codex/config.toml; Gemini/Cursor and others register in their respective client configs.
② Run the npm command yourself
A single line in the terminal auto-registers with the detected AI apps.
npx -y careermate initFor other clients (Cursor, Cline, Windsurf, …), npx -y careermate init -- --print prints the registration config block so you can paste it in manually.
③ careermate.zip (Claude Desktop "chat" app only · no-Node fallback)
This is the only path with no terminal and no Node. Download careermate.zip from the latest GitHub Release, unzip it, add the extracted folder through Claude Desktop's Settings → Extensions → Advanced settings → Install extension…, then restart. (To build it from source: npm run build:mcpb → dist/careermate.zip.) Note that it depends on Claude Desktop's bundled Node version (won't work if that Node is < 22.5).
Direct .mcpb install is a known issue in some Claude Desktop builds, so the ZIP folder path is the recommended no-terminal route. The .mcpb and .zip assets contain the same bundle.
After connecting, fully restart the AI client and verify the connection by asking it to call get_onboarding_status. For details, see the AI runbook INSTALL.md, the human-facing install guide https://careermate.life, the post-install usage flow docs/START_WORKFLOW.md, and the supported-apps matrix docs/SUPPORTED_AI_APPS.md.
B. Develop / contribute from source
git clone https://github.com/osntak/careermate.git && cd careermate
npm install # no build step — TypeScript runs directly via tsx
npm start # dashboard at http://127.0.0.1:4319 (falls back to the next free port; Ctrl+C to stop)
npm run seed # (optional) explore with demo data
npm run init # register the MCP server with your AI clients, rooted at this folderWhen an AI client is connected, saying "open the dashboard" starts the server in the background if needed, so the dashboard is not tied to a terminal session.
If it doesn't work, start here (troubleshooting)
The AI can't see CareerMate — Fully quit and restart the AI app (including tray/background). Claude Code needs a one-time folder "trust" approval; use the
/mcpcommand to check that careermate is listed.Not sure what's wrong — Run
npx -y careermate doctorin a terminal (checks Node, data folder, DB, tool registration, updates). Or just ask your AI: "run doctor and tell me what's wrong."Node version error — If
node --versionis below 22.5, install the latest LTS and open a new terminal before retrying.The zip won't attach in the Claude chat app — Known issue. Add the extracted folder instead. If that still fails, use the
npx -y careermate initpath from ②.Port conflict — It falls back to the next free port automatically; check the actual address printed in the terminal.
More in docs/FAQ.md. For security issues, use the private process in SECURITY.md instead of a public issue.
The 7 dashboard pages
Page | Description |
Home | Current status and next steps at a glance. |
Profile | Manage profile, experiences, projects, and skills. |
Jobs | List and detail of saved postings (posting content + fit analysis). |
Applications | A kanban board showing your pipeline across the 8 statuses. |
Documents | Cover-letter version timeline and resumes. |
Interview | Interview prep materials and interview-stage next steps. |
Settings | Export/delete data, environment info. |
Dark mode is supported.
MCP tools at a glance
Category | Tools |
Onboarding |
|
Profile |
|
Resume |
|
Experience / projects / skills |
|
Cover letter |
|
Job posting |
|
Offer |
|
Core context |
|
Fit analysis |
|
Application status |
|
Interview prep |
|
Writing |
|
Expert knowledge (Career-OS) |
|
Pre-save check |
|
Dashboard / activity |
|
Update |
|
On top of these tools, seven workflows are defined so the AI can guide you naturally, step by step: the six core flows (onboarding, analyze_job, write_cover_letter, write_career_description, manage_application_status, prepare_interview) plus build_personal_brand for LinkedIn/portfolio assets.
Project structure
CareerMate/
├─ apps/
│ ├─ web/ # Dashboard + local API server (npm start)
│ └─ mcp/ # MCP stdio server (npm run mcp)
├─ packages/
│ ├─ shared/ # Shared types, zod schemas, utils
│ ├─ db/ # node:sqlite DB access, schema, migrations
│ ├─ core/ # Domain use cases
│ ├─ mcp-tools/ # The MCP tool definitions
│ ├─ knowledge/ # Career-OS expert playbooks & verifier rubrics (serve)
│ ├─ exporters/ # Exporters (cover letters, etc.)
│ ├─ parsers/ # Job-posting parsing
│ ├─ prompts/ # Prompts and guidance copy
│ └─ workflows/ # The 6 workflows
├─ site/ # Install guide page
├─ docs/ # Documentation
├─ scripts/ # migrate / seed / doctor / test, etc.
└─ package.jsonStack: TypeScript (ESM), build-free execution (
tsx), built-innode:sqlite(no native compilation),zod,@modelcontextprotocol/sdk. The dashboard is framework-free, CDN-free vanilla JS with its own CSS design system.Data store: 12 tables (profile, experiences, projects, skills, documents, cover_letters, cover_letter_versions, jobs, fit_analyses, applications, interview_preps, activities). The two processes (dashboard and MCP) share the same SQLite DB.
npm scripts
Script | Description |
| Install dependencies (no build) |
| Run the dashboard web server |
| Run the dashboard (auto-restart on file changes) |
| Run the MCP server (stdio) |
| Create/upgrade the DB |
| Check installation/environment |
| Insert example data |
| Build the plain-JS distribution bundle ( |
| Build the Claude Desktop bundle → |
| Run E2E tests |
| Playwright UI smoke tests |
| Type check ( |
Data location & environment variables
Default folder:
~/.careermate(Windows:%USERPROFILE%\.careermate).careermate.sqlite— the database fileexports/— exported filesbackups/— backupsuploads/— uploaded filesserver.json— runtime handshake infoserver.log— background dashboard launch log
You can change behavior with environment variables.
CAREERMATE_DATA_DIR— change the data folder locationCAREERMATE_PORT— pin the dashboard portCAREERMATE_NO_OPEN— disable auto-opening the browser on start
Security / privacy
Local-only binding — The dashboard server binds only to
127.0.0.1(loopback) and is not reachable from outside.DNS-rebinding protection — Validated against a Host allowlist.
Mutation-request protection — CSRF session token (injected via an HTML
metatag); external Origins are blocked.Static-file protection — Path traversal (escaping the parent folder) is blocked.
Body size limit — Request bodies are capped at 8MB.
No sensitive-data leakage — Resume and cover-letter content is never exposed in logs or error responses.
No personal-data transmission — CareerMate never sends your personal data (profile, resumes, cover letters) anywhere; all data stays only on your computer. The only outbound network calls are (1) the optional version check and (2) job search (public job boards) — and even then only the search keyword is sent (no personal data), to fetch public postings (no bot-protection bypass, no automated bulk harvesting). Export and delete are available directly in the dashboard Settings.
Documentation
INSTALL.md— The install/connect runbook the AI assistant follows (based on running from source).AGENTS.md— Persistent instructions for Codex. /CLAUDE.md— Persistent instructions for Claude Code.docs/SUPPORTED_AI_APPS.md— Install reference hub: supported-apps matrix + the 3 install methods (agent / npx / zip) + per-client manual MCP setup + known constraints. (Human-facing guide at https://careermate.life)docs/START_WORKFLOW.md— Step-by-step runbook from registration to interview prep.docs/FAQ.md— FAQ / troubleshooting: "PDF won't read," "analysis isn't working," "how do I add a posting URL," etc.docs/dev/ROADMAP.md— Roadmap (where the project is headed).CHANGELOG.md— Per-version change history. /CONTRIBUTING.md·SECURITY.md·CODE_OF_CONDUCT.md— Contributing, security, and code of conduct.
Tests
npm test # E2E tests (security, workflows, MCP stdio, dashboard↔MCP same-DB round-trip)
npm run test:ui # Dashboard page-render smoke tests (Playwright)
npm run typecheckOther useful scripts: npm run migrate (create/upgrade DB), npm run seed (example data), npm run doctor (install/environment check).
License
MIT License — see the LICENSE file for the full text.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/osntak/careermate'
If you have feedback or need assistance with the MCP directory API, please join our Discord server