Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

Watchtower

von connorlaganaVersion 0.1.1i★ –iLäuft in der Cloud
Name in der Registrylat.watchtower/watchtower

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Job alerts for AI agents: describe a role once, get only new postings from 1,500+ tech job boards.

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft in der Cloud
  • Transport: Streamable HTTP
  • Kategorie: Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf dem Server des Entwicklers: Was du fragst, läuft über dessen Server.
  • Die Registry nennt keinen Schlüssel zum Eintragen.

Du brauchst

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Funktioniert in Claude im Web, auf dem Desktop und auf dem Handy:

  1. Öffne Settings → Connectors
  2. Tippe auf Add custom connector
  3. Füge die Adresse unten ein und tippe auf Add
  4. Wenn eine Anmeldung verlangt wird, melde dich beim Dienst des Entwicklers an
SettingsConnectors1+ Add2https://…3
https://watchtower.lat/mcp?ref=registry

Führe das in deinem Terminal aus

claude mcp add --transport http watchtower 'https://watchtower.lat/mcp?ref=registry'

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "watchtower": {
      "url": "https://watchtower.lat/mcp?ref=registry"
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "watchtower": {
      "type": "http",
      "url": "https://watchtower.lat/mcp?ref=registry"
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

ChatGPT verbindet sich nur mit Servern im Internet:

  1. Öffne ChatGPT im Web → Settings → Connectors (Apps)
  2. Tippe auf Create oder Add (bei manchen Tarifen musst du zuerst Developer mode unter Advanced einschalten)
  3. Füge die Adresse unten ein, gib ihr einen Namen und speichere
  4. Wenn eine Anmeldung verlangt wird, melde dich beim Dienst des Entwicklers an
SettingsConnectors1+ Create2https://…3
https://watchtower.lat/mcp?ref=registry

Menünamen können sich je nach Tarif und mit der Zeit leicht unterscheiden.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Die Tool-Liste dieses Servers haben wir noch nicht gelesen; wir prüfen die Endpunkte reihum.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde über die Domain watchtower.lat bestätigt (die Registry prüft, wem die Domain gehört)

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Endpunkt antwortet

    Noch nicht geprüft; wir prüfen die Endpunkte reihum

  • … Noch nicht geprüft

    Anmeldung mit OAuth

    Noch nicht geprüft; wir prüfen die Endpunkte reihum

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 32602 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 58 % der anderen 32602 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 32602 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist Watchtower sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft in der Cloud des Entwicklers. Du verbindest dich übers Internet, ohne etwas zu installieren, aber was du sendest, läuft über die Server des Entwicklers.

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.1) kam vor 28 Tagen in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Rystic

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Spec Driven Development

von formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Läuft auf deinem Computer★ 440MITAktualisiert vor 14 Monaten
Installieren

Remote Desktop Commander

von desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Läuft in der Cloud★ 211Aktualisiert vorgestern
Installieren

Rystic

von Rystic-Inc

Start, seed, clock, inspect and diff Rystic API simulators from your agent.

Läuft auf deinem ComputerAktualisiert heute
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

Watchtower

Tech job monitoring for AI agents. Say what you are looking for once and get only the new postings that match, from the job boards of tech companies and startups, as structured JSON.

Agents are bad at waiting for a job to be posted. A session lasts minutes, careers pages are heavy to re-read, and "has anyone posted an iOS role in Austin yet?" turns into re-running the same search every day. With Watchtower the agent creates a watch once, in plain language:

{ "query": "iOS jobs in Austin making at least 150k a year with a maximum of 6 years of experience" }

Watchtower checks the job boards of tech companies and startups on a schedule and remembers which jobs were open. get_changes then returns only the new postings that match, and a webhook can wake the agent when one arrives. An agent can also watch one company's board by URL and get JOB_ADDED, JOB_REMOVED and JOB_UPDATED events.

  • No URL needed. A watch created from a query covers every board Watchtower monitors: a built-in directory of tech company and startup boards plus every board anyone has watched by URL.
  • Pay and experience. Jobs carry salary and experience_years when the posting states them, and watches filter on min_salary and max_experience_years.
  • Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday, iCIMS, Oracle Recruiting, Eightfold and SuccessFactors are read through each platform's own endpoints: no bot walls. So are Apple (jobs.apple.com), Google (careers.google.com), Amazon (amazon.jobs) and Microsoft (careers.microsoft.com), which run their own careers sites. Any other careers page works if it publishes schema.org JobPosting markup.
  • Filters on the watch, so get_changes only returns what matters: keywords, all_keywords, exclude_keywords, locations, seniority, remote_only, min_salary and max_experience_years. Every job carries derived remote and seniority fields.
  • Many companies in one call: pass urls instead of url.
  • MCP (Streamable HTTP) and REST, backed by the same service layer.
  • Free and anonymous: a client gets a token and up to 50 watches (a search across all boards is one watch).
  • TypeScript, Node.js 22, Fastify 5, PostgreSQL, the official MCP TypeScript SDK. No LLM or third-party API keys required.

Use the hosted service

Watchtower runs at [watchtower.lat](https://watchtower.lat), free, with no sign-up. MCP endpoint: https://watchtower.lat/mcp.

  • Claude Code: claude mcp add --transport http watchtower https://watchtower.lat/mcp, or install the plugin, which adds a skill that tells Claude when to use it:
  /plugin marketplace add connorlagana/watchtower

/plugin install watchtower@watchtower

- **Claude.ai / Claude Desktop**: Settings → Connectors → Add custom connector → `https://watchtower.lat/mcp`.
  • Cursor, VS Code: one-click buttons at watchtower.lat/#install.
  • Anything else: { "mcpServers": { "watchtower": { "type": "http", "url": "https://watchtower.lat/mcp" } } }.

Listed in the MCP Registry as lat.watchtower/watchtower (server.json).

Quick start

cp .env.example .env

docker compose up --build # app on http://localhost:3000, Postgres alongside docker compose --profile demo run --rm demo # the end-to-end demo below

Without Docker (Node 22 and a running Postgres):

npm install

export DATABASE_URL=postgres://postgres:postgres@localhost:5432/watchtower npm run migrate npm run dev # or: npm run build && npm start

Demo

npm run demo (with DATABASE_URL set) runs the core loop end to end against a local fixture careers page:

  1. create client → 2. create a job watch with keyword ios (takes the initial snapshot) → 3. a second agent watches the same board and reuses the same resource → 4. a third agent names no board and creates a search watch from "remote iOS jobs paying at least 150k with a maximum of 6 years of experience" → 5. a re-check where only the page around the jobs changed (session token, "N minutes ago") reports no change → 6. the source adds an iOS job and an Android job → 7. Watchtower checks and detects the change → 8. an MCP client calls get_changes:
{

"changes": [ { "type": "JOB_ADDED", "summary": "New job: Senior iOS Engineer (Remote - US)", "data": { "job": { "title": "Senior iOS Engineer", "location": "Remote - US", "company": "Acme Robotics", "url": "…/careers/ios-303" } } } ], "cursor": 2, "has_more": false }

The Android job is filtered out by the keyword. 9. A second get_changes call returns []. 10. The second agent, with no keyword, sees both new roles. 11. The third agent gets the iOS role with the salary and experience read from the posting.

The demo runs its fixture on 127.0.0.1, so it turns on ALLOW_PRIVATE_NETWORKS for its own process only.

Connecting an agent (MCP)

{ "mcpServers": { "watchtower": { "type": "http", "url": "http://localhost:3000/mcp" } } }
ToolWhat it does
watch_jobsWith query and no URL: watch every monitored board for new postings that match a plain-language request. The result shows the reading (interpreted), the matching jobs open now (current_jobs) and the boards covered (coverage). With url, or urls (up to 25; returns watches and per-URL errors): watch specific boards. Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Workday and iCIMS use their own endpoints; other careers pages use schema.org JobPosting. A careers page that only links to a supported board is watched through that board (resolved_from), and a page with neither is rejected with NO_JOB_DATA. Board watches emit JOB_ADDED / JOB_REMOVED / JOB_UPDATED; search watches emit JOB_ADDED. Explicit filters override the query: keywords, all_keywords, exclude_keywords, locations, seniority, remote_only, min_salary, salary_currency, max_experience_years, include_unknown.
search_jobsRead-only, one-off: the jobs open right now that match a query and/or the same filters, across every monitored board, newest first. Returns interpreted, total, jobs and next_offset (limit up to 100, offset). Needs no token and creates no watch. REST: POST /v1/jobs/search. Limited to SEARCH_PER_MINUTE (20) calls per address.
list_companiesRead-only: the companies in the directory (what every search covers), by name, with board_url, platform and open_jobs. query checks for one company; pages with limit/offset. Needs no token. REST: GET /v1/companies?q=. People can browse the same list at /companies.
get_changesChanges since your last call (the cursor advances). peek, since (replay), watch_id, limit.
ack_changesAcknowledge a cursor after get_changes(peek=true), for at-least-once processing.
list_watchesYour watches, with health, expiry and pending-change counts.
get_watchOne watch plus the jobs currently open that match its filters (across all boards for a search watch).
delete_watchStop monitoring and free a slot.

watch_jobs also accepts webhook_url for push delivery (see below).

The tool descriptions and server instructions tell agents to prefer Watchtower over re-running job searches or re-checking careers pages.

Search watches

A watch with no url is a search watch. It is its filters, and it reads the new postings of every monitored board.

curl -s -X POST localhost:3000/v1/watches -H "Authorization: Bearer $TOKEN" -H "content-type: application/json" \

-d '{"query":"iOS jobs in Austin making at least 150k a year with a maximum of 6 years of experience"}'

{

"scope": "all_boards", "interpreted": { "filters": { "keywords": ["ios"], "locations": ["austin"], "min_salary": 150000, "max_experience_years": 6, "include_unknown": true }, "notes": [] }, "coverage": { "boards": 1705 }, "matching_jobs_count": 3, "current_jobs": [ { "title": "Senior iOS Engineer", "company": "Acme", "location": "Austin, TX", "salary": { "min": 165000, "max": 210000, "currency": "USD", "period": "year", "annual_min": 165000, "annual_max": 210000 }, "experience_years": 5, "url": "…" } ] }

  • The query is read by rules, not a model. Watchtower still needs no LLM or API key. The reading comes back as interpreted, with notes for anything it could not use, so the calling agent can check it. Explicit filters always win over the query.
  • Role words become keywords (any of, for "iOS or Android") or all_keywords (all of, for "data scientist"). Generic words such as "engineer" and "developer" are dropped when a more specific word is present.
  • "in Austin", "in Austin, TX", "in New York or remote" become locations. A bare "remote" becomes remote_only.
  • "at least 150k", "$180,000+", "$45/hr" become min_salary, converted to a yearly figure.
  • "a maximum of 6 years of experience", "3-5 years", "I have 4 years of experience" become max_experience_years.
  • "senior", "staff", "entry level" and the other levels become seniority. "no managers" becomes exclude_keywords.
  • Coverage is tech companies and startups, not the whole internet. The built-in directory (src/search/boards.ts) lists 1,705 company boards on Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Workday, iCIMS, Oracle Recruiting, Eightfold and SuccessFactors, plus the careers sites of Apple, Google, Amazon and Microsoft, from seed-stage startups to large employers in every industry that hire developers. Each was confirmed against its platform's API with open jobs. Every role those companies post is covered, not only engineering. The live list is published at /companies and through list_companies. On top of that, every board any client watches by URL is covered, and stays covered (see Growing the directory).
  • Pay and experience come from the posting. Lever, Ashby, Greenhouse, Recruitee and JSON-LD pay fields are read directly; otherwise the posting text is parsed ("$150,000 - $200,000/yr", "5+ years of experience"). A job passes min_salary when the top of its range reaches it, and max_experience_years when it asks for no more than that.
  • Postings that state neither are still reported, without a salary or experience_years field, because many postings state no pay. Pass include_unknown: false to report only postings that state a qualifying value.
  • Only new postings are reported (JOB_ADDED), and only those that appear after the watch was created. current_jobs on creation and on get_watch is the baseline of what is open now.
  • SmartRecruiters, Workday, iCIMS, Eightfold (except older-endpoint tenants), SuccessFactors (except RSS sitemaps), Google and Microsoft listings carry no posting text, so their jobs never have salary or experience_years. Apple and Oracle Recruiting listings carry only a short summary, which rarely states either.
  • Google jobs have no location and only the first part of the title (see Google), so a search with locations never matches them.
Growing the directory

The directory grows in three ways.

  • Agents grow it by using it. When a client watches a platform board by URL and it has open jobs, the board joins the directory and stays there after that watch ends, so every search watch covers it from then on. At most INDEX_MAX_PROMOTED (5,000) boards are kept this way, and one that fails eight checks in a row is dropped. Arbitrary careers pages are never kept; only boards on the platform APIs.
  • A careers page works as a way in. watch_jobs with https://acme.com/careers usually finds no job markup there, because the page only links to or embeds the company's board. Watchtower the

Nur der Anfang wird gezeigt; den Rest findest du im Repo

PopNx fragen