YubHub

io.github.houtini-aiPublished by GitHub account houtini-aiv2.4.0Updated Nov 1, 2026

Build job feeds from careers pages; query enriched jobs and hiring stats. Needs a YubHub API key

VerifiedSTDIODesktop onlyData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

YubHub MCP server lets an assistant create and manage job feeds built from company careers pages, inspect enriched job listings, and query hiring market…

What you can do
  • Create, list, update and delete job feeds built from careers page URLs, and trigger discovery runs
  • View single-feed and all-feeds dashboards with stats and XML feed links
  • Check, enable and disable automatic weekly feed runs
  • List and read enriched jobs for a feed, and retry jobs that failed scraping or enrichment
  • Query market statistics: top companies, categories, titles, title trends, work arrangements, experience levels and top hiring cities
When to use it
Useful when you want an assistant to set up and monitor job feeds from company careers pages, review scraped and AI-enriched job listings, or pull aggregate hiring-market numbers into a chat without opening a browser tab.
Requirements
Runs locally over stdio via npx from the npm package @houtini/yubhub, so Node.js is needed. Requires a YubHub account on the Pro Publisher plan, with the YUBHUB_USER_ID and YUBHUB_API_KEY environment variables set; an optional YUBHUB_ADMIN_API_URL overrides the default API endpoint. Network access to the YubHub API is required.
Before you install
The API key (YUBHUB_API_KEY) and user ID are passed as environment variables and grant access to your YubHub account; keep them out of shared configs. Several tools change or remove data: creating, updating and deleting feeds, deleting all jobs for a feed, and triggering runs. Feed and job deletion cannot be undone. Feed data and job content are processed by YubHub's servers, including AI enrichment.

Installation

In SourceWeft

  1. Open YubHub in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[YubHub]

YubHub MCP Server

Turn any careers page into a structured job feed. Straight from Claude, Cursor or any MCP client.

[npm version] [MIT License] [MCP Compatible] [npm downloads] [Socket Badge]

[YubHub MCP server]


Quick start

Developer docs for YubHub's API, feeds and this server are at yubhub.co/developers.

You'll need a YubHub account on the Pro Publisher plan first: the server needs an API key. Head to your account page to grab your User ID and API key (required).

Claude Desktop

Open your Claude Desktop config file:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Add this block inside "mcpServers":

json
{  "mcpServers": {    "yubhub": {      "command": "npx",      "args": ["-y", "@houtini/yubhub"],      "env": {        "YUBHUB_USER_ID": "your-user-id",        "YUBHUB_API_KEY": "yh_your_api_key_here"      }    }  }}

Restart Claude Desktop. That's it. Ask Claude to "list my YubHub feeds" and you should see your data come back.

Cursor / VS Code

Same idea. Drop the config into your MCP settings and point it at npx -y @houtini/yubhub with the same env vars.

What it does

YubHub watches careers pages. Point it at a company's jobs URL, and it will discover every open role, scrape the listings, enrich them with AI (title normalisation, category tagging, salary extraction, company research) and publish them as an XML feed.

This MCP server gives you full control over that pipeline from inside your AI assistant. Create feeds, trigger runs, check on jobs, view dashboards, browse market stats. No browser tab required.

The pipeline

Careers page URL  → Discovery (ATS API / sitemap / crawl)    → Scraping (page content extraction)      → Enrichment (AI structuring + company research)        → XML feed (ready for job boards, aggregators, your own site)

Supported ATS platforms include Greenhouse, Lever, Workable, Workday, Oracle HCM, SmartRecruiters, Ashby, Pinpoint, Phenom and more. For platforms with public APIs (Greenhouse, Lever, Workable, Pinpoint), discovery skips scraping entirely and goes straight to enrichment.

Tools

23 tools across four areas.

Feed management

ToolWhat it does
list_feedsGet all your job feeds
create_feedCreate a feed from a careers page URL
get_feedFeed details including run history and job counts
show_feed_dashboardInteractive visual dashboard for a single feed
show_all_feeds_dashboardOverview dashboard with all feeds, stats and XML links
trigger_feed_runStart job discovery now
update_feedChange feed name, tag or source URLs
delete_feedRemove a feed and all its jobs
delete_jobsClear all jobs for a feed (keeps the feed)

Scheduling

ToolWhat it does
get_feed_scheduleCheck auto-run schedule and next run time
enable_feed_auto_runTurn on automatic runs (default: weekly)
disable_feed_auto_runTurn off automatic runs

Jobs

ToolWhat it does
list_jobsList jobs for a feed, optionally filtered by status
get_jobFull job details: title, company, location, salary, skills, description
retry_failed_jobsRe-queue failed jobs for another attempt

Market statistics

These read the live market numbers behind yubhub.co straight into your chat. No feed and no account needed - the stats endpoints are open, so you can ask what the market's doing before you've built a thing. Ask in plain language ("which cities are hiring most?", "what's the remote-versus-onsite split?", "which titles are gaining demand?") and the server pulls the current aggregate and hands it back as a table. The same numbers power the public stats pages on the site, so what you see here is what a jobseeker sees there.

ToolWhat it does
get_stats_overviewHigh-level numbers: total jobs, companies, active feeds
get_top_companiesCompanies ranked by job count with recent activity
get_categoriesJob counts by sector with experience level breakdown
get_top_titlesMost common job titles by volume
get_title_trendsTitles gaining or losing demand (2-week comparison)
get_work_arrangementsRemote vs hybrid vs onsite distribution
get_experience_levelsEntry, mid, senior level distribution
get_top_citiesCities hiring most, ranked by live job count

Environment variables

VariableRequiredDescription
YUBHUB_USER_IDYesYour YubHub user ID
YUBHUB_API_KEYYesAPI key from your account page
YUBHUB_ADMIN_API_URLNoAPI endpoint (defaults to https://api.yubhub.co)

Example conversation

You: Create a feed for Mercedes F1 careers at https://www.mercedesamgf1.com/careers

Claude: Done. Feed created with ID feed_abc123. Want me to trigger a run?

You: Yes please.

Claude: Discovery started. I'll check back in a couple of minutes.

You: How did it go?

Claude: Found 47 jobs. 42 enriched successfully, 5 still processing. Here's a breakdown by category...

Tip: For best results, provide an example job URL when creating a feed. This helps YubHub identify the URL pattern for job listings on that site, significantly improving discovery accuracy. You can pass it as the optional exampleJobUrl parameter in create_feed.

Development

bash
git clone https://github.com/houtini-ai/yubhub.gitcd yubhubnpm installnpm run build

The server compiles TypeScript to dist/ and runs as a stdio MCP server. Source lives in src/:

src/├── index.ts                # MCP server, tool definitions and handlers├── api-client.ts           # REST client for the YubHub API├── dashboard-generator.ts  # React-based interactive dashboard builder└── types.ts                # TypeScript interfaces

Running locally

bash
YUBHUB_USER_ID=your-id YUBHUB_API_KEY=yh_your_key node dist/index.js

Or point your MCP client at the built output instead of using npx.

Contributing

Issues and pull requests welcome. If you're adding a tool or changing behaviour, please test against a real YubHub account.

Links

License

MIT - see LICENSE for details.

Source: README.md at commit d0db533

Tools

23

list_feeds

Get all your job feeds

Takes no parameters.

create_feed

Create a new job feed for monitoring career pages

ParametersnamerequiredcareersUrlrequiredexampleJobUrl

get_feed

Get detailed information about a specific feed including statistics

ParametersfeedIdrequired

show_feed_dashboard

Display an interactive dashboard for monitoring a job feed

ParametersfeedIdrequired

show_all_feeds_dashboard

Display a comprehensive dashboard showing all feeds with stats, sortable columns, and XML feed links. Modern React UI with dark theme.

Takes no parameters.

trigger_feed_run

Start job discovery for a specific feed

ParametersfeedIdrequired

update_feed

Update a feed's name, tag, or source URLs. Use tag to group feeds by site for filtering on the dashboard.

ParameterstagnamefeedIdrequiredcareersUrlexampleJobUrl

delete_feed

Delete a feed and all associated jobs. This action cannot be undone.

ParametersfeedIdrequired

delete_jobs

Delete all jobs for a specific feed. This action cannot be undone.

ParametersfeedIdrequired

get_feed_schedule

Get the automatic run schedule configuration for a feed. Shows if auto-run is enabled, the run interval, and when the next automatic run is scheduled.

ParametersfeedIdrequired

enable_feed_auto_run

Enable automatic weekly runs for a feed. The scheduler worker runs hourly and will automatically trigger this feed at the configured interval (default: 7 days for weekly runs). Great for keeping job feeds updated without manual intervention.

ParametersfeedIdrequiredintervalDays

disable_feed_auto_run

Disable automatic runs for a feed. The feed will require manual triggering after this. Use this when you want full control over when a feed runs.

ParametersfeedIdrequired

list_jobs

Get all jobs for a specific feed, optionally filtered by status

ParametersfeedIdrequiredstatus

get_job

Get detailed information about a specific job

ParametersjobIdrequired

retry_failed_jobs

Retry failed jobs for a feed. Jobs that failed during scraping (no content) are re-queued for scraping. Jobs that failed during enrichment (have content) are re-queued for enrichment.

ParametersfeedIdrequired

get_stats_overview

Get high-level statistics: total enriched jobs, companies, and active feeds.

Takes no parameters.

get_top_companies

Get top companies by enriched job count, with recent activity (last 7d and 30d).

Takes no parameters.

get_categories

Get job counts by category/sector with experience level breakdown (entry, mid, senior).

Takes no parameters.

get_top_titles

Get the most common job titles by volume (top 30).

Takes no parameters.

get_work_arrangements

Get work arrangement distribution (remote, hybrid, onsite, etc.).

Takes no parameters.

get_experience_levels

Get experience level distribution (entry, mid, senior, etc.).

Takes no parameters.

get_top_cities

Get the cities hiring most, ranked by live job count. Each links to /jobs/city/<slug> on yubhub.co.

Parametersmin

Version history

2
  1. v2.4.0LatestOct 25, 2026
  2. v2.3.5Oct 22, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts