careers-at-gov-mcp
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
careers-at-gov-mcp
A TypeScript Model Context Protocol server (stdio transport) for the Singapore public-service job board Careers@Gov. It lets an MCP client search, filter and read public-service job postings.
Tools
All tools are read-only and idempotent, and return both a readable text summary and structuredContent (with an outputSchema).
Tool | What it does |
| Search and filter jobs. Input: |
| Full details of one job, by |
| Valid filter values: employment types (with the raw job types each covers), experience levels, sort options, and the live organisations and job functions with current job counts. |
Organisation and job-function names are matched case-insensitively against the live lists; unknown values return an error with close matches.
How it works
The site is not server-filtered: the home page embeds every current job (about 2,200) in its Next.js RSC payload (self.__next_f), and filtering, sorting and pagination run in the browser. This server fetches that page once, parses the embedded jobs, agencies and departments arrays, caches them in memory for 10 minutes (concurrent requests share one fetch), and applies the website's filter, sort and pagination rules locally. get_job fetches one detail page and reads its RSC jobDetail object (falling back to the JobPosting JSON-LD block).
Requests use a Mozilla/5.0 (compatible; careers-at-gov-mcp/0.1; +https://github.com/emansih/) user agent (the URL is the maintainer contact): the site's firewall returns 403 on detail pages for user agents that don't start with Mozilla/5.0.
Search ranking caveat
The website sends the search query to Algolia from the browser, which this server does not call. Free-text search is implemented locally: the query is split into words, every word must prefix-match (e.g. analys matches analyst) the title, organisation, job function or one-line summary, and title matches rank highest (exact title, then phrase in title, then all words in title, then words spread across fields). Ranking approximates the website's and result counts will differ from it when a query is used. Filter-only searches (no query) match the website exactly. Salary ranges are not published in the listing data at the time of writing, so salaryRange is usually absent.
Related MCP server: Arbeitnow Scout MCP
Install
Published on npm as careers-at-gov-mcp. Requires Node.js 20+. No API key needed.
npx -y careers-at-gov-mcp # run on demand
npm install -g careers-at-gov-mcp # or install globallyBuild from source
pnpm install
pnpm buildRun
pnpm start # run the built server (stdio)
pnpm dev # run from source with tsx (watch mode)
pnpm inspect # open the MCP Inspector against build/index.jsThe server logs to stderr only; stdout carries the JSON-RPC stream. Requires Node 20 or newer (global fetch).
Add to Claude Code
claude mcp add careers-at-gov -- npx -y careers-at-gov-mcpOn Windows (native, not WSL), wrap it with cmd /c: claude mcp add careers-at-gov -- cmd /c npx -y careers-at-gov-mcp.
Add to Claude Desktop
In claude_desktop_config.json:
{
"mcpServers": {
"careers-at-gov": {
"command": "npx",
"args": ["-y", "careers-at-gov-mcp"]
}
}
}On Windows, use "command": "cmd" and "args": ["/c", "npx", "-y", "careers-at-gov-mcp"].
Layout
src/careers/- fetching, RSC parsing, dataset cache, filters, local search, HTML-to-text.src/tools/- one file per tool, registered insrc/tools/index.ts.
Adding a tool
Create src/tools/<name>.ts using defineTool(...) (read-only, idempotent, open-world annotations by default) and add it to the list in src/tools/index.ts.
Be polite to the site: it is a government service, so keep request rates low (the in-memory cache means one listing fetch per 10 minutes).
This server cannot be deployed
Maintenance
Related MCP Connectors
A jobs data API and MCP server. Every listing comes from the employer's own career site, an ATS feed or a government employment service, never resold from another board. Each row names its source and when we last confirmed the vacancy existed, and a role that disappears keeps a closure date and a reason. Six tools: search_jobs, get_job, company_hiring, market_signals, coverage, changes_since.
Read-only MCP tools for AI agent discovery, structured resources, and NIULAI information.
Public MCP server for discovering open jobs. Search, filter, and get application links.
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables users to search job postings with keyword, location, remote-only, date, and limit filters, and retrieve individual job details via MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables MCP hosts to search job listings by keyword, location, remote preference, and posting date, and to retrieve individual job details through the search_jobs and get_job tools.MIT
- AlicenseNot gradedqualityCmaintenanceExposes the nofluffjobs.com public job board as two standard MCP tools, letting any MCP host search listings by keyword, location, posting date, and remote preference, then fetch full details for a chosen posting. It is read-only, requires no Zhencheng runtime, and returns normalized fields such as title, company, apply URL, and snippet.MIT
- AlicenseNot gradedqualityCmaintenanceEnables any MCP host to search and fetch public job-board listings through standardized search_jobs and get_job tools, with optional location, remote, date, and result-limit filters. It provides read-only access with polite rate limiting.MIT