LucyESL — English teaching jobs in Korea

English-teaching jobs in South Korea: salary, disclosure and by-region stats. Read-only, no key.

Should I use this

Quality & Safety

B
Description quality
96%
Schema completeness
58%
Naming quality
91%
Poisoning risk
100%
Permission match
90%
Protocol compliance
100%

Findings (2)

  • LOWTool 'disclosure_stats' description lacks action verbin disclosure_stats
  • LOWTool 'fetch' suggests web access but openWorldHint=falsein fetch

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,036Tokens (tool definitions)
~813 BTypical response size
Moderate attention impact (0.81% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "jobs": {
      "url": "https://lucyesl.com/mcp"
    }
  }
}

Remote endpoints

https://lucyesl.com/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search(query)

Search live English-teaching jobs in South Korea on LucyESL by free text. Returns ids, titles and URLs; use fetch for a listing's details.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string"
    }
  },
  "required": [
    "query"
  ]
}
🟢fetch(id)

Fetch one LucyESL job listing by id as a plain-text document with its facts.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢search_jobs(region, age, housing, visa, schedule, ...)

Filter the live LucyESL board of English-teaching jobs in South Korea: region, student age, housing, visa, schedule, contract, setting, direct hire, minimum salary, free text. Returns structured records; pay in KRW per month unless stated otherwise; null means the advert did not say.

Input Schema

{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "enum": [
        "seoul",
        "gyeonggi",
        "busan",
        "daegu",
        "daejeon",
        "gwangju",
        "ulsan",
        "sejong",
        "gangwon",
        "chungcheong",
        "jeolla",
        "gyeongsang",
        "jeju"
      ],
      "description": "Region key"
    },
    "age": {
      "type": "string",
      "enum": [
        "kindergarten",
        "elementary",
        "middle",
        "high",
        "adults",
        "adults_only"
      ],
      "description": "Student age group; adults_only means adults and nobody younger"
    },
    "housing": {
      "type": "string",
      "enum": [
        "provided",
        "allowance",
        "none"
      ]
    },
    "visa": {
      "type": "string",
      "enum": [
        "e2",
        "f",
        "other"
      ],
      "description": "e2 = E-2 sponsorship, f = F-series visa holders"
    },
    "schedule": {
      "type": "string",
      "enum": [
        "fulltime",
        "parttime",
        "camp",
        "substitute"
      ]
    },
    "contract": {
      "type": "string",
      "enum": [
        "employee",
        "contractor"
      ]
    },
    "setting": {
      "type": "string",
      "enum": [
        "academy",
        "corporate",
        "school",
        "home"
      ]
    },
    "delivery": {
      "type": "string",
      "enum": [
        "in_person",
        "online",
        "hybrid"
      ]
    },
    "format": {
      "type": "string",
      "enum": [
        "group",
        "small_group",
        "one_to_one"
      ],
      "description": "Class shape"
    },
    "specialty": {
      "type": "string",
      "enum": [
        "ielts",
        "toefl",
        "toeic_opic",
        "sat_ap",
        "business",
        "esp",
        "phonics",
        "writing_debate",
        "subject",
        "bilingual",
        "training",
        "content"
      ]
    },
    "direct_only": {
      "type": "boolean",
      "description": "Only employers hiring directly (no recruiters or agencies)"
    },
    "min_salary": {
      "type": "integer",
      "description": "Minimum monthly pay in KRW; snaps down to the board's steps 2000000, 2300000, 2600000, 3000000"
    },
    "q": {
      "type": "string",
      "description": "Words to match in the title, city or employer name"
    },
    "page": {
      "type": "integer",
      "minimum": 1
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  }
}
🟢get_job(id)

One live listing as a structured record.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1
    }
  },
  "required": [
    "id"
  ]
}
🟢salary_stats

English-teacher salary statistics for South Korea computed from the live listings: median, quartiles, by region, by employer type, effective pay per teaching hour, disclosure rates, housing. CC BY 4.0.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢disclosure_stats

How many live Korean ESL job adverts state the salary, hours, severance, pension, insurance, airfare, vacation and split shifts. CC BY 4.0.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢market_stats

Live English-teaching job adverts in South Korea counted by region: how many in each, direct hire against recruiters, how many state total on-site hours, and the median advertised salary where the sample allows. Counts of adverts, not of employers. CC BY 4.0.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded6 tools