Skip to main content
Glama
epolat

io.github.epolat/rankjot-mcp

by epolat
README.md
# RankJot MCP server

Real Google rankings as a tool for AI assistants. Ask Claude (or any MCP client)
"where does example.com rank for *best running shoes* in the UK?" and it makes a
live lookup instead of guessing.

<!-- mcp-name: io.github.epolat/rankjot-mcp -->

## What it does

One tool:

**`check_rank(domain, keyword, country="us")`** returns

- `position`: the domain's 1-based Google organic position, or `null` if it isn't
  in the results checked
- `url`: which of the domain's pages ranks
- `results`: the top 10 organic results (position, domain, url, title), so the
  assistant can answer "who's above me?" without another call
- `quota`: lookups used and remaining this month

Positions are organic results only (ads, maps and answer boxes aren't counted),
for the Google market you pass as `country`.

## Setup

**1. Get an API key.** Sign in at [rankjot.com](https://rankjot.com/login), open
**Account → API access → Generate key**. Free accounts include **25 lookups a
month**; the API plan ($20/mo) includes 5,000.

**2. Add the server to your client.** It runs with [`uvx`](https://docs.astral.sh/uv/),
so there's nothing to install by hand.

Claude Desktop (`claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "rankjot": {
      "command": "uvx",
      "args": ["rankjot-mcp"],
      "env": { "RANKJOT_API_KEY": "rjk_your_key_here" }
    }
  }
}
```

Any other client that launches stdio servers takes the same command, `uvx
rankjot-mcp`, with `RANKJOT_API_KEY` in its environment.

Prefer pip? `pip install rankjot-mcp`, then use `rankjot-mcp` as the command.

**3. Restart the client** and ask a ranking question.

## Errors

Failures come back as a normal result with an `error` field, so the assistant can
tell you what happened instead of retrying blindly:

| `error` | Meaning |
|---|---|
| `config` | `RANKJOT_API_KEY` isn't set |
| `unauthorized` | The key is wrong or was revoked |
| `api_trial_limit` | This month's included lookups are used up |
| `quota_exceeded` / `rate_limited` | Monthly quota used, or too many calls per minute |
| `provider_error` / `network` | The lookup couldn't be made; try again |

Every call spends one lookup. Models are happy to call tools in loops, so if you
ask about many keywords at once, say how many lookups it may use.

## Privacy

The domain, keyword and country you check are sent to rankjot.com to perform the
lookup. See the [privacy policy](https://rankjot.com/privacy).

## Links

- API reference: https://rankjot.com/api-docs
- How this server was designed: https://rankjot.com/blog/google-rankings-as-an-mcp-tool

## License

MIT

TDQS

A4.6/5.0

Scored across 1 tool

Disambiguation5/5

With only a single tool, there is no possibility of overlap or confusion about which tool to invoke. The tool's purpose is well-defined and unambiguous.

Naming Consistency5/5

The tool name 'check_rank' uses a clear verb_noun snake_case convention. Although there is no comparison set, the naming is internally consistent and predictable.

Tool Count4/5

The server is narrowly scoped to a single rank-checking operation, so one tool is serviceable. However, related features like batch ranking checks or quota status would strengthen the server, making the count slightly thin.

Completeness4/5

The tool covers the core 'check rank' operation completely and returns relevant data. The lack of batch operations, historical tracking, or multi-keyword support leaves a notable gap for a rank-checking service.