What Watchtower MCP server does
Watchtower MCP server gives agents a way to search and monitor technology jobs across a directory of more than 1,500 job boards and company career sites. A plain-language request such as a role, location, salary threshold, or experience limit is converted into filters and returned in the interpreted result so the caller can inspect how the request was understood.
Use search_jobs for a one-time view of currently open roles. It returns matching jobs in newest-first order, along with the total and a pagination offset. Use watch_jobs when the requirement is ongoing monitoring. A watch without a URL covers the monitored directory; a watch with a URL follows a specific board or career page. Multiple URLs can be supplied for several companies.
Each job can include its title, location, alternate locations, department, company, source URL, posting date, remote status, seniority, salary, and stated experience requirements. Salary and experience fields are present only when the source posting provides them.
How it works
Watchtower MCP server takes an initial snapshot when a watch is created and checks its sources on a schedule. get_changes then returns detected additions, removals, or updates, depending on the watch type. Search watches emit new matching postings; board watches can emit JOB_ADDED, JOB_REMOVED, and JOB_UPDATED events.
The normal get_changes cursor advances as changes are delivered. Use peek=true when an agent needs to process changes before acknowledging them, then call ack_changes after successful handling. A since cursor can replay earlier changes. An optional webhook URL can be attached to a watch for push delivery.
Searches and watches support keyword inclusion and exclusion, locations, seniority, remote-only matching, minimum salary, salary currency, maximum experience, and whether unknown values should be included. Explicit filter parameters take precedence over values inferred from the query. Query interpretation uses rules rather than an LLM, so no model or third-party API key is required.
Setup and configuration
A hosted MCP endpoint is available at https://watchtower.lat/mcp without sign-up. The README documents connections for Claude Code, Claude Desktop or Claude.ai, Cursor, and VS Code, as well as a generic HTTP MCP configuration.
For local operation, the project uses Node.js 22 and PostgreSQL. Copy .env.example to .env, provide DATABASE_URL, run the database migrations, and start the development or production build. Docker Compose can start the application and PostgreSQL together. The local MCP endpoint is shown as http://localhost:3000/mcp.
The same service layer also exposes REST endpoints. The repository describes the implementation as TypeScript using Fastify, PostgreSQL, and the official MCP TypeScript SDK.
Tools and capabilities
The Watchtower MCP server exposes these tools:
watch_jobs: Create a search watch or one or more URL-based board watches.
search_jobs: Search current openings without saving a watch or requiring a token.
list_companies: Inspect covered companies, board URLs, platforms, and open-job counts.
get_changes: Retrieve new or changed jobs for all watches or one watch.
list_watches: Show active watches, health, last checks, expiry, and pending changes.
get_watch: Return a watch and its currently matching open jobs.
ack_changes: Confirm processing after a peek-based delivery.
delete_watch: Stop a watch and release its watch slot.
Supported sources include several recruiting platforms, including Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday, iCIMS, Oracle Recruiting, Eightfold, and SuccessFactors. Apple, Google, Amazon, and Microsoft career sites have dedicated handling. Other pages must expose schema.org JobPosting JSON-LD; pages without usable job data are rejected.