# 104.com.tw MCP Server MCP server for Taiwan's largest job platform — search jobs, browse companies, and apply, all from Claude. > **Disclaimer:** This project is not affiliated with or endorsed by 104 Human Resources Group (104人力銀行). Use in accordance with [104.com.tw's Terms of Service](https://www.104.com.tw/about/terms.html). ## Tools | Tool | Auth required | Description | |---|---|---| | `search_jobs` | No | Search job listings by keyword, location, salary, remote, etc. | | `get_job_detail` | No | Full job posting: description, salary, requirements, welfare | | `search_companies` | No | Search companies by name | | `get_company_detail` | No | Company profile + optional current job listings | | `login` | — | Log in with email/password | | `logout` | — | Log out | | `apply_job` | Yes | Apply to a job with optional cover letter | | `save_job` | Yes | Bookmark a job | | `save_company` | Yes | Follow a company | ## npm package name This repository publishes **`mcp-104jobs`** (see `package.json`). That is the package to install and the binary name for MCP clients. If you see **`104-mcp-server`** on npm as well, it is the same project published under an older alternate name. Prefer **`mcp-104jobs`**; the duplicate can be marked deprecated on npm by its owner (`npm deprecate 104-mcp-server@"*" "Use mcp-104jobs instead"`). ## Setup ### Via npx (recommended) Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "104": { "command": "npx", "args": ["-y", "mcp-104jobs"] } } } ``` ### Manual ```bash npm install npm run build ``` Add to Claude Desktop config: ```json { "mcpServers": { "104": { "command": "node", "args": ["/path/to/104-mcp/dist/index.js"] } } } ``` ## Usage examples - "Search for backend engineer jobs in Taipei with remote work" - "Show me the details for job 8tft1" - "Search for companies named Google in Taiwan" - "Get the company profile for 1a2x6bmutz including their job openings" - "Login with my 104 account and apply to job 8kq2g" ## Location codes | Code | Area | |---|---| | `6001001000` | 台北市 | | `6001002000` | 新北市 | | `6001003000` | 桃園市 | | `6001005000` | 台中市 | | `6001006000` | 台南市 | | `6001008000` | 高雄市 | ## Compatible clients Works with any MCP-compatible AI client: | Client | Config file | |---|---| | Claude Desktop | `~/Library/Application Support/Claude/claude_desktop_config.json` | | Cursor | `~/.cursor/mcp.json` | | Windsurf | `~/.codeium/windsurf/mcp_config.json` | | Cline (VS Code) | MCP Servers panel in sidebar | | Continue.dev | `~/.continue/config.json` → `mcpServers` | | Zed | `settings.json` → `context_servers` | All clients use the same config block: ```json { "mcpServers": { "104": { "command": "npx", "args": ["-y", "mcp-104jobs"] } } } ``` ## ChatGPT / GPT Actions A REST API is deployed at `https://104-mcp.vercel.app` for use as a [GPT Action](https://platform.openai.com/docs/actions). **OpenAPI spec:** `https://104-mcp.vercel.app/openapi.json` To add to a Custom GPT: 1. Go to [chat.openai.com/gpts](https://chat.openai.com/gpts) → Create 2. Click **Configure** → **Add actions** 3. Paste the OpenAPI spec URL above 4. Save and test Available via GPT Actions (read-only, no auth required): - `searchJobs` — search job listings - `getJobDetail` — full job posting - `searchCompanies` — search companies - `getCompanyDetail` — company profile ## Notes - No API key needed for read-only tools - Auth uses 104's OIDC discovery flow (Ory Hydra with PKCE). Tokens and cookies are held only in memory for the lifetime of the local MCP process; expiring access tokens are refreshed when 104 issues a refresh token. - Apply/save require a valid 104.com.tw account