Skip to main content
Glama
sjungwon03

job-platform-mcp

by sjungwon03

Job Platform MCP Monorepo

This TypeScript monorepo provides the Wanted, Saramin, and JobKorea job APIs as independent MCP servers, along with an Agent Skill that finds personalized job postings based on resumes and portfolios.

This document can be used both when a person sets things up directly and when agents such as Codex, Claude Code, OpenCode, and OpenClaw set things up on their behalf.

Features Provided

Package

Platform

MCP Tools

Authentication Method

wanted-mcp

Wanted OpenAPI

wanted_list_jobs

User Client ID and Client Secret

saramin-mcp

Saramin Job Information API

saramin_search_jobs, saramin_get_job

User access-key

jobkorea-mcp

JobKorea Job Information API

jobkorea_fetch_jobs, jobkorea_fetch_entry_jobs

User-specific call URL issued after approval

The job-match-search skill performs the following tasks:

  • Analyzes resumes, CVs, career statements, and portfolios provided by the user

  • Extracts the target role, experience, skills, domain, and preferred conditions

  • If region or detailed conditions are missing, asks all at once before searching

  • If the user skips entering conditions, searches without region or employment type restrictions

  • Queries the connected Wanted, Saramin, and JobKorea MCPs together

  • Removes duplicate postings and evaluates fit based on evidence

  • Provides match reasons, missing requirements, and original links for the top postings

Related MCP server: RecruitData

Design Principles

  • The three MCPs run as separate stdio processes.

  • Platform credentials and API clients are not shared with each other.

  • Each user uses API permissions they obtained directly.

  • Paid features are called only when the user's account has permission.

  • Resume source text and personal information are not sent to the job APIs.

  • Only the minimal derived conditions needed for the search—such as job title, skills, experience, and region—are passed to the API.

  • Does not submit applications, create accounts, contact representatives, or process payments without the user's confirmation.

Requirements

  • Node.js 22 or higher

  • pnpm 11 or higher

  • Git

  • API credentials for the job platforms you will use

Check the versions.

node --version
pnpm --version
git --version

Quick Start

1. Get the repository

git clone https://github.com/sjungwon03/job-platform-mcp.git
cd job-platform-mcp

If you are already working locally before fetching the remote repository, continue with the next steps from the current repository root.

2. Install dependencies and build

pnpm install
pnpm build

To verify the full state:

pnpm verify

Verification includes linting, TypeScript type checking, security store tests, MCP tests, and the production build.

3. Prepare API credentials

Set up only the platforms you want. There is no need to use all three platforms.

Wanted

Issue: https://openapi.wanted.jobs/apply/

Environment Variable

Required

Description

WANTED_CLIENT_ID

Yes

Client ID issued to the user

WANTED_CLIENT_SECRET

Yes

Client Secret issued to the user

WANTED_AUTHORIZATION

No

Authorization value required for additional permissions or paid features

This project does not pay API costs on your behalf or provide shared keys. If you use paid features, the MCP user manages permissions and billing with their own Wanted account.

Saramin

Issue: https://oapi.saramin.co.kr/

Environment Variable

Required

Description

SARAMIN_ACCESS_KEY

Yes

access-key issued to the user

JobKorea

Guide: https://www.jobkorea.co.kr/service/api

JobKorea provides a unique call URL after usage approval and request IP registration.

Environment Variable

Required

Description

JOBKOREA_JOBS_API_URL

Conditional

Issued URL for general job postings

JOBKOREA_ENTRY_API_URL

Conditional

Issued URL for entry-level and intern hiring

At least one of the two URLs is required. Treat the entire issued URL as a secret.

4. Enter credentials securely

Do not put credentials directly into chat, README, Git-tracked files, or MCP configuration JSON.

Run the secure configurator from the repository root.

node skills/job-match-search/scripts/configure-credentials.mjs

The configurator works in the following order:

  1. Selects the platform to configure.

  2. Prompts for credential values with asterisk masking.

  3. By default, saves to job-platform-mcp/credentials.json under the user settings directory.

  4. On Linux, macOS, and WSL, restricts the file permissions to 0600.

  5. Rejects paths inside the repository, symbolic links, and files readable by other users.

  6. Does not print the values again; only shows whether each platform is configured.

Default storage location:

~/.config/job-platform-mcp/credentials.json

To use a different absolute path, set JOB_MATCH_CREDENTIALS_FILE to the same value in both the configurator and the MCP host. Paths inside the repository cannot be used.

Check configuration status:

node skills/job-match-search/scripts/configure-credentials.mjs --check

The output does not include the actual values.

Wanted: 설정됨
사람인: 설정됨
잡코리아: 미설정

This file is a local JSON protected by OS file permissions, not a self-encrypted file. On native Windows, using the OS secret store provided by the agent or MCP host is recommended.

5. Register servers with the MCP host

Instead of copying credentials directly into the MCP configuration, register the common launcher run-mcp.mjs.

First, build all packages.

pnpm build

Replace absolute-path below with the actual absolute path of the repository.

{
  "mcpServers": {
    "wanted": {
      "command": "node",
      "args": [
        "/absolute-path/job-platform-mcp/skills/job-match-search/scripts/run-mcp.mjs",
        "wanted"
      ]
    },
    "saramin": {
      "command": "node",
      "args": [
        "/absolute-path/job-platform-mcp/skills/job-match-search/scripts/run-mcp.mjs",
        "saramin"
      ]
    },
    "jobkorea": {
      "command": "node",
      "args": [
        "/absolute-path/job-platform-mcp/skills/job-match-search/scripts/run-mcp.mjs",
        "jobkorea"
      ]
    }
  }
}

You may register only the platforms you configured. After restarting the MCP host, check the tool list for the following names.

wanted_list_jobs
saramin_search_jobs
saramin_get_job
jobkorea_fetch_jobs
jobkorea_fetch_entry_jobs

If the MCP host prefixes the server names, the actual exposed names may differ slightly.

Setup Procedure for Agents

When an agent sets up this repository, it follows the order below. Humans can use the same procedure.

  1. Verify that the current directory is the repository root containing pnpm-workspace.yaml.

  2. Check the required versions with node --version and pnpm --version.

  3. Run pnpm install and pnpm build.

  4. Ask which platforms the user wants to connect and whether they have obtained credentials.

  5. Do not ask the user to enter credential values in a normal chat window.

  6. Run configure-credentials.mjs in an interactive TTY and have the user enter the masked input directly.

  7. Confirm the configuration location of the agent or MCP host in use.

  8. Register only the absolute path of run-mcp.mjs and the platform argument, without any secret values.

  9. Restart the MCP host, then verify the connection with a read-only request that returns a small number of results.

  10. On success, report only the names of the connected platforms. Do not include credential values or the JobKorea issued URL in errors either.

If the agent cannot provide an interactive TTY, only guide the user through the configuration command and wait until the input is complete. Do not automatically retry authentication failures.

Installing the Job Matching Skill

The skill source is located in the following directory.

skills/job-match-search/
├── SKILL.md
├── references/
├── scripts/
└── test/

The skill uses the public Agent Skills format and does not depend on agent-specific frontmatter. Only the directory each client searches differs.

Codex

Link the source folder into the personal skills directory.

mkdir -p ~/.codex/skills
ln -s /absolute-path/job-platform-mcp/skills/job-match-search ~/.codex/skills/job-match-search

If a path with the same name already exists, do not delete or overwrite it; check the existing skill first.

Claude Code

Link it into the project skills path.

mkdir -p .claude/skills
ln -s ../../skills/job-match-search .claude/skills/job-match-search

In Claude Code, use it as follows for direct invocation.

/job-match-search 내 이력서에 맞는 백엔드 공고를 찾아줘

OpenCode

Link it into the project skills path.

mkdir -p .opencode/skills
ln -s ../../skills/job-match-search .opencode/skills/job-match-search

OpenCode also supports .claude/skills and .agents/skills compatible paths.

OpenClaw

If you use this repository itself as an OpenClaw workspace, the current skills/job-match-search path is discovered automatically. To install it into a different workspace:

openclaw skills install /absolute-path/job-platform-mcp/skills/job-match-search

In environments that do not support symbolic links, copy the entire folder to the client's skill path. You must copy references and scripts along with SKILL.md.

Using the Skill

Attach a resume or portfolio, or specify a local path the agent can read.

$job-match-search
첨부한 이력서를 분석해서 내 경력에 맞는 채용공고를 찾아줘.

You can specify a region and conditions together.

$job-match-search
서울 또는 판교, 주 2회 이하 출근, 정규직 백엔드 포지션을 찾아줘.
Java와 Spring 실무 경험을 중요하게 보고 연봉이 공개된 공고를 우선해줘.

You can also start without setting conditions.

$job-match-search
내 포트폴리오에 맞는 공고를 찾아줘. 조건은 아직 정하지 않았어.

In this case, the skill asks about region, work mode, employment type, and key preferences all at once. If you skip answering, it searches widely without restrictions.

The default results include the following information:

  • The analyzed search profile and stated assumptions

  • Top 10 postings by fit

  • Confirmed match reasons and requirements that are missing or unverified

  • Region, employment type, deadline, source, and original link

  • Platforms queried, search terms, filters, and failed scopes

The fit score is a comparative heuristic, not a probability of being hired.

Development Commands

Entire workspace:

pnpm install
pnpm lint
pnpm typecheck
pnpm test
pnpm build
pnpm verify

To check a single package:

pnpm --filter wanted-mcp test
pnpm --filter saramin-mcp test
pnpm --filter jobkorea-mcp test

To run only the security store tests:

pnpm test:skill

Project Structure

.
├── packages/
│   ├── wanted-mcp/
│   ├── saramin-mcp/
│   └── jobkorea-mcp/
├── skills/
│   └── job-match-search/
├── package.json
├── pnpm-lock.yaml
└── pnpm-workspace.yaml

The root workspace only integrates dependency installation, a single lockfile, and full verification. Each MCP's configuration, client, tool schemas, and tests remain inside its own package.

Troubleshooting

Symptom

What to check

Built MCP entry not found

Check whether pnpm build was run at the root

Missing required configuration

Check whether the platform is configured with configure-credentials.mjs --check

Credential store permissions are too broad

Apply chmod 600 to the credential file on Linux, macOS, and WSL

Credential store must be outside the project workspace

Use the default user settings path or specify an absolute path outside the repository

Wanted 401 or 403

Check the Client ID, Secret, optional Authorization, and account permissions

Saramin authentication error

Check SARAMIN_ACCESS_KEY issuance status and usage limits

JobKorea connection error

Check approval status, registered request IP, issued URL, and allowed hosts

MCP tools not visible

Check the absolute path, node executable path, and whether the MCP host was restarted

Only some platforms failing

Continue searching with the connected platforms and only check the configuration of the failing ones

Security Notes

  • Do not commit real credentials to Git.

  • Do not paste credentials into issues, PRs, chat, or logs.

  • Immediately revoke exposed keys and reissue them on the platform.

  • Treat the entire JobKorea call URL as a secret.

  • Do not place the credential store file in a cloud sync folder or a shared directory.

  • Do not grant access to the credential store to skills or scripts managed by others.

License and API Terms of Use

The data, API terms of use, call limits, and billing policies of each job platform follow the terms of that platform. This repository does not bypass authentication permissions or paid features, and it does not grant any right to redistribute API data.

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
<1hResponse time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.
    564
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Unified job search MCP server that aggregates live listings from multiple job boards with deduplication, enabling AI agents to find and filter jobs by keyword and location.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.
    18
    1
    AGPL 3.0
  • F
    license
    Not graded
    quality
    A
    maintenance
    Personal job posting management MCP server that fetches job postings from multiple Korean job sites and stores them for LLM analysis, enabling timeline tracking and cover letter draft management.
    1

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/sjungwon03/job-platform-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server