Skip to main content
Glama
README.md
# keith-apis-mcp: web page to Markdown, OG images, job and resume parsing, Elo ratings

**keith-apis-mcp is an MCP (Model Context Protocol) server that gives AI assistants such as Claude, Cursor and ChatGPT eleven tools from five small hosted APIs:** read any web page as clean Markdown, get link previews, generate Open Graph share images, parse job postings and resumes, score a resume against a job, and compute Elo, Glicko-2 or OpenSkill ratings. One RapidAPI key works for all of them, and each API has a free plan.

## Tools

| Tool | What it does | API |
|---|---|---|
| `fetch_url_as_markdown` | Fetch a page and return its main content as clean Markdown (for reading, summarising, RAG) | [Web Page API](https://web-page-api.fly.dev/) |
| `html_to_markdown` | Convert HTML you already have to Markdown | Web Page API |
| `get_link_preview` | Title, description, images, favicon, Open Graph and Twitter card tags | Web Page API |
| `generate_og_image` | 1200×630 PNG Open Graph image from a title (returned as an image) | [OG Image API](https://og-image-api.fly.dev/) |
| `parse_job_posting` | Job ad → seniority, job function, remote regions, annualised salary, skills | [Job Posting Parser](https://job-parser-api.fly.dev/) |
| `parse_job_postings_batch` | Up to 20 postings in one call | Job Posting Parser |
| `parse_resume` | Resume (text, or a local PDF / DOCX / TXT file) → structured JSON | [Resume Parser + Job Match](https://resume-match-api.fly.dev/) |
| `match_resume_to_job` | 0–100 fit score with a breakdown and missing skills | Resume Parser + Job Match |
| `rate_matches` | Ratings from match results: OpenSkill, Glicko-2 or Elo; 1v1, teams, free-for-alls | [Skill Rating API](https://ranking-api.fly.dev/) |
| `predict_match` | Win probability and match quality for a matchup | Skill Rating API |
| `list_rating_algorithms` | Supported algorithms and their parameters | Skill Rating API |

## Setup

1. Get a RapidAPI key and subscribe (free plans available) to the APIs you want, from each API's page linked above.
2. Add the server to your client with your key as `RAPIDAPI_KEY`.

**Claude Code**

```bash
claude mcp add keith-apis -e RAPIDAPI_KEY=your-key -- npx -y keith-apis-mcp
```

**Claude Desktop, Cursor, Windsurf and other clients** (`claude_desktop_config.json`, `.cursor/mcp.json`, ...):

```json
{
  "mcpServers": {
    "keith-apis": {
      "command": "npx",
      "args": ["-y", "keith-apis-mcp"],
      "env": { "RAPIDAPI_KEY": "your-key" }
    }
  }
}
```

Requires Node.js 18 or newer.

## Example prompts

- "Read https://example.com/blog/post as Markdown and summarise it in five bullets."
- "Make an OG image titled 'Release notes: October' with the light theme and footer example.com."
- "Parse this job ad and tell me the salary range per year and whether it's open to Europe."
- "Score my resume at ~/cv.pdf against this job description and list the skills I'm missing."
- "Here are our league results; rank the players with Glicko-2 and predict next week's final."

## Privacy

The server runs on your machine and sends each request only to the API it uses, through RapidAPI. The APIs are stateless: inputs, including resumes, are processed and returned, never stored or logged.

## FAQ

**Which tool should an AI agent use to read a web page?**
`fetch_url_as_markdown`. It strips navigation, ads and boilerplate, so the model gets the article text at a fraction of the tokens of raw HTML.

**Do I need all five subscriptions?**
No. Subscribe only to the APIs you use; tools for the others return a clear "not subscribed" error.

**Can I use these without MCP?**
Yes. Each API is a normal REST API on RapidAPI, and each also runs as a pay-per-result Actor on the [Apify Store](https://apify.com/keith-apis).

## License

MIT

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation4/5

Within each domain cluster the tools are clearly distinct: parse_job_posting vs parse_job_postings_batch (single vs batch), fetch_url_as_markdown vs html_to_markdown (fetch vs local convert), rate_matches vs predict_match. The only mild confusion is fetch_url_as_markdown vs html_to_markdown, but descriptions clarify that one fetches and one doesn't.

Naming Consistency4/5

Almost all tools use snake_case verb_noun phrasing (parse_resume, get_link_preview, generate_og_image, match_resume_to_job). Minor deviations are noun-first names like html_to_markdown, but overall the convention is predictable and readable.

Tool Count4/5

11 tools is a well-scoped count and each tool earns its place within its own cluster. The issue is not the number but the unrelatedness of the clusters, so the count itself is reasonable.

Completeness3/5

The recruiting pipeline (parse resume, parse job posting, batch, match) and the web-content cluster (fetch, convert, preview, OG image) are fairly complete, and the ratings trio is self-contained. However, the server is a grab-bag of three unrelated domains with no tool bridging them, making overall 'purpose' coverage hard to assess and leaving each domain somewhat shallow.

Maintenance

ActivityMaintained
ResponsivenessNo issues