mcpField
F
fecklesspleb Apify Actors

fecklesspleb Apify Actors

Local
github.com/fecklessplebBusiness & Marketing0Updated 1w ago

About fecklesspleb Apify Actors

fecklesspleb Apify Actors is an MCP server for AI agents that runs Apify Actors for SEO, site data, news, and job searches. It returns results in the tool call and applies a per-call spending cap.

Key features

  1. 01SEO audits and page metadata extraction
  2. 02Sitemap URL extraction
  3. 03Hacker News search
  4. 04Remote and company job listings
  5. 05Optional crawling, screenshots, and link checks
  6. 06Synchronous results with call cost caps

Use cases

  1. 01Review SEO issues and page metadata
  2. 02Find Hacker News posts or remote jobs
  3. 03Retrieve openings from company career sites
  4. 04Convert pages to Markdown or find broken links

MCP support

The MCP server provides 14 tools for AI agents: 10 enabled by default and four optional web tools. Each tool runs an Apify Actor and returns its dataset results directly, with a spending cap per call.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"fecklesspleb-actors": {
"command": "npx",
"args": [
"-y",
"fecklesspleb-actors-mcp"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>",
"FECKLESSPLEB_TOOLSETS": "<FECKLESSPLEB_TOOLSETS>",
"APIFY_MAX_COST_USD": "<APIFY_MAX_COST_USD>",
"APIFY_MAX_COST_CEILING_USD": "<APIFY_MAX_COST_CEILING_USD>"
}
}
}
}
Run commandnpx -y fecklesspleb-actors-mcp
Environment variables to set
APIFY_TOKENSecretYour Apify API token. Actor runs are billed to this Apify account per result.
FECKLESSPLEB_TOOLSETSComma-separated toolsets: core, jobs, web, or all. Default: core,jobs.
APIFY_MAX_COST_USDDefault spending cap per tool call, in USD.
APIFY_MAX_COST_CEILING_USDHighest per-call cap a tool call may request, in USD.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmfecklesspleb-actors-mcp0.1.0

Tools

10

Saved tool list · updated 1w ago

ParameterTypeRequiredDescription
startUrlsarrayYesWebsites to audit. Start page of each site, usually the home page, e.g. ["https://books.toscrape.com/"]. Plain URL strings or {"url": "..."} objects; a URL without http(s):// gets https:// added. Only links on the same host are crawled (www. and the bare domain count as one host) and robots.txt is obeyed. Default ["https://www.python.org/"] is a sample run: at most 2 pages, stops after 15 s.
maxCostUsdnumberNoMost this call may charge your Apify account, in US dollars. Default 0.25, maximum 5. Passed to Apify as maxTotalChargeUsd, the most Apify will charge for this run.
maxResultsintegerNoMax pages in dataset. Maximum rows saved to the dataset in the whole run, across all sites. Default 0 = no cap. Free rows (pages that returned HTTP 400+ or no response) also count. The crawl stops when the cap is reached. Each charged row costs $0.003.
includeJsonLdbooleanNoInclude JSON-LD data. If true, each row gets jsonLd: the parsed JSON-LD blocks, with email, telephone, author, creator, contributor, editor and reviewedBy keys removed. Default false. jsonLdTypes (schema.org types found) and jsonLdErrors (blocks that failed to parse) are always included.
excludePatternsarrayNoExclude URL patterns. Regular expressions for links not to crawl, matched case-insensitively anywhere in the full URL, e.g. ["/tag/", "\\?page="]. They apply to links found on pages; the start URL is always audited. Default: none.
maxPagesPerSiteintegerNoMax pages per site. Maximum pages audited per start URL, 1 to 10,000. Default 10. Pages that fail (HTTP 400+ or no response) count; pages blocked by robots.txt, non-HTML files and redirects to another host do not. Example: 200 for a full audit of a small site.
onlyPagesWithIssuesbooleanNoOnly pages with issues. If true, pages with no issues are not saved and not charged; only pages with at least one issue are output. Default false: every audited page is output.

Details

From the project README

fecklesspleb-actors-mcp

An MCP server that gives AI agents 14 tools: 10 on by default for SEO audits, page metadata, sitemaps, Hacker News search and job listings, plus 4 opt-in web tools for Markdown crawling, image downloads, screenshots and broken-link checks. Each tool runs one of my public Apify Actors and returns the results in the tool response.

Disclosure: I (fecklesspleb) wrote and maintain this server and every Actor it calls. Runs are billed per result to your own Apify account at the Actors' Store prices, and some of that money comes to me as the Actor developer. This project is not affiliated with or endorsed by Apify, Greenhouse, Lever, Ashby, Workday, Remote OK, We Work Remotely, Jobicy, Hacker News, Y Combinator or Algolia.

Why use this instead of Apify's own MCP server

You don't have to. Apify's official server can run these Actors too:

  • Hosted: https://mcp.apify.com?tools=fecklesspleb/website-seo-audit,fecklesspleb/sitemap-extractor (OAuth, or an Authorization: Bearer <APIFY_TOKEN> header)
  • Local: npx -y @apify/actors-mcp-server --tools fecklesspleb/website-seo-audit,fecklesspleb/sitemap-extractor with APIFY_TOKEN set

This server is a smaller, focused option:

  • The results come back in the tool call. Each call uses Apify's synchronous run-sync-get-dataset-items endpoint, so the agent gets the dataset items directly instead of a run ID to poll.
  • Every call has a dollar cap. maxCostUsd (default $0.25) is sent to Apify as maxTotalChargeUsd. A server-side ceiling (default $5) caps what an agent can ask for.
  • Small defaults. When the agent leaves them out, the server sets limits such as 25 jobs, 50 Hacker News items or 10 pages per site. Job descriptions are left out unless the agent asks for them, which keeps responses short.
  • Input schemas stay current. At startup the server reads each Actor's input schema from its live Apify build, so the tools accept exactly what the Actors accept. If Apify can't be reached, it uses a bundled snapshot.

Tools

Prices are the Apify Store prices when this was written. The live price is on each Actor's page.

core (5 tools, on by default)
ToolActorWhat it returnsPrice
seo_audit_websitewebsite-seo-auditCrawls a site from startUrls (same host) and returns one record per page: status, score 0-100, issues (title, meta description, H1, canonical, noindex, alt text, thin content, Open Graph, JSON-LD, slow pages)$0.003 per page + $0.00005 per run start
extract_website_metadatawebsite-metadata-extractorFor each of urls: title, meta description, canonical, language, Open Graph, Twitter card, JSON-LD, favicon, RSS feeds, hreflang. Rows for URLs that could not be read are free$0.001 per URL + $0.00005 per run start
extract_sitemap_urlssitemap-extractorEvery URL in a site's sitemaps (found through robots.txt, or from a sitemap URL you pass) with lastmod, changefreq, priority. Regex and date filters$0.0002 per URL
search_hacker_newshacker-news-scrapermode: "search": HN stories and comments by keyword, points, comments and date (HN Search API by Algolia). mode: "whoIsHiring": job records from the monthly "Ask HN: Who is hiring?" thread$0.00015 per item
search_remote_jobsremote-jobs-aggregatorOne deduplicated list of remote jobs from the Remote OK, We Work Remotely and Jobicy feeds, with the source on every job. Keyword, location, salary and date filters$0.001 per job
jobs (5 tools, on by default)

Open jobs from company career sites. Each job has the company, title, location, remote flag, department, employment type, salary (when the posting gives one), posting date and URL.

ToolActorPass companies asPrice
greenhouse_jobsgreenhouse-jobs-scraperGreenhouse slugs (airbnb), board URLs or careers pages. Or set searchDirectory: true$0.001 per job
lever_jobslever-jobs-scraperLever slugs (palantir), board URLs or careers pages. Or set searchDirectory: true$0.001 per job
ashby_jobsashby-jobs-scraperAshby slugs (ramp), board URLs or careers pages. Or set searchDirectory: true$0.001 per job
workday_jobsworkday-jobs-scraperFull Workday career site URLs, e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite$0.002 per job
ats_jobsats-jobs-scraperBoard URLs or careers pages on Greenhouse, Lever, Ashby, Workday, Workable, Recruitee or Teamtailor (Polymer and HireHive by URL). Use it when you don't know which ATS a company uses$0.002 per job
web (4 tools, opt-in: FECKLESSPLEB_TOOLSETS=core,jobs,web or all)
ToolActorWhat it returnsPrice
crawl_website_to_markdownwebsite-to-markdown-crawlerPages of a site as Markdown or text$0.0008 per page + $0.00005 per run start
download_imagesbulk-image-downloaderLinks to images and files saved in your Apify storage, with size, dimensions, alt text, SHA-256$0.001 per file + $0.00005 per run start
screenshot_websitewebsite-screenshotLinks to PNG/JPEG screenshots (and optional PDFs) saved in your Apify storage$0.0008 per screenshot + $0.00005 per run start
check_broken_linksbroken-link-checkerBroken links and images with the page, link text and status code$0.003 per broken link ($0.0005 per checked link when onlyBroken is off) + $0.00005 per run start

The "run start" charge is per GB of run memory, once per run.

Every tool also takes maxCostUsd. All other arguments are the Actor's own input fields, described in the tool's input schema.

Setup

You need Node.js 20 or newer and an Apify account. Copy your API token from Apify Console > Settings > API & Integrations.

Claude Desktop, Cursor and other clients that use an mcpServers config:

{
  "mcpServers": {
    "fecklesspleb-actors": {
      "command": "npx",
      "args": ["-y", "fecklesspleb-actors-mcp"],
      "env": { "APIFY_TOKEN": "<your Apify API token>" }
    }
  }
}

Claude Code:

claude mcp add fecklesspleb-actors --env APIFY_TOKEN=<your Apify API token> -- npx -y fecklesspleb-actors-mcp

From source:

git clone https://github.com/fecklesspleb/actors-mcp.git
cd actors-mcp
npm ci && npm run build
APIFY_TOKEN=<your Apify API token> node dist/index.js

Docker:

docker build -t fecklesspleb-actors-mcp .
docker run -i --rm -e APIFY_TOKEN=<your Apify API token> fecklesspleb-actors-mcp

Configuration

VariableDefaultMeaning
APIFY_TOKEN(required for calls)Your Apify API token. Tools are still listed without one, but calls return an error.
FECKLESSPLEB_TOOLSETScore,jobsComma-separated: core, jobs, web, or all.
APIFY_MAX_COST_USD0.25Cap per call when the agent doesn't pass maxCostUsd. Must be a positive number; 0, negative values and non-numbers stop the server at startup. A value above the ceiling is lowered to the ceiling.
APIFY_MAX_COST_CEILING_USD5Highest maxCostUsd an agent can request. Bigger values are lowered to this. Must be a positive number.
APIFY_RUN_TIMEOUT_SECS280Run timeout sent to Apify. 0 uses the Actor's own timeout.
MAX_OUTPUT_CHARS60000Longest tool response. Longer results are cut short, and the response says how many items were left out.
FECKLESSPLEB_LIVE_SCHEMAS1Set to 0 to skip the live schema lookup and use the bundled snapshots.
APIFY_API_BASE_URLhttps://api.apify.com/v2API base URL. Only for testing against a mock API; leave unset. Must be https; plain http is accepted only for localhost, 127.0.0.1 and ::1.

What a call returns

{
  "actor": "fecklesspleb/sitemap-extractor",
  "itemCount": 2,
  "maxCostUsd": 0.25,
  "items": [
    { "url": "https://example.com/blog/a", "lastmod": "2026-10-01", "sitemapUrl": "https://example.com/sitemap.xml" },
    { "url": "https://example.com/blog/b", "lastmod": "2026-10-03", "sitemapUrl": "https://example.com/sitemap.xml" }
  ]
}

items are the Actor's dataset items, unchanged. The fields for each Actor are listed on its Apify Store page.

Limits

  • Apify's synchronous endpoint waits at most 300 seconds. A longer run returns an error, but the run may keep going in your Apify Console. Ask for fewer URLs, pages or companies.
  • Results larger than MAX_OUTPUT_CHARS are cut short. The full dataset stays in your Apify account.
  • Screenshots and downloaded files are returned as links to your Apify storage, not as image data.

Development

Building and running the tests needs Node.js 20.19 or newer (on Node 22, 22.12 or newer), because the test runner (Vitest, on Vite 8) requires it. Running the server still needs only Node.js 20 or newer.

npm ci
npm run build
npm test                  # builds, then runs unit, protocol and token-leak tests against a mocked Apify API, no network
APIFY_TOKEN=<your Apify API token> npm run e2e   # one real call (Hacker News, 5 items, about $0.00075, billed to that account)
npm run snapshot-schemas  # refresh the bundled input schemas from the live Actor builds

License

MIT. Copyright (c) 2026 fecklesspleb.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.