MCP setup
Connect an MCP client to RankMySEO
One endpoint, one config block, and two kinds of key. If you want the plain-language version of what an assistant can do with this, read the overview instead.
Add to your MCP config
{
"mcpServers": {
"rankmyseo": {
"url": "https://api.rankmyseo.com/mcp"
}
}
}Where that goes
- Cursor
- Settings, then MCP, then Add new server. Or drop the block into
.cursor/mcp.jsonin the project. - Claude
- Settings, then Connectors, then Add custom connector, and paste the URL.
- ChatGPT and Grok
- Add it as a remote MCP connector with the same URL. Neither needs an API key from us to start.
- Anything else
- The endpoint is
https://api.rankmyseo.com/mcpover streamable HTTP. A client that speaks MCP needs nothing else.
Keys
Two kinds of key, and how one becomes the other
A client that has never met us can still get an answer. Everything after that runs on a bearer token tied to a real account.
- 1
Walk-up
Call register with no Authorization header. You get a key scoped to one site, two keywords, and 48 hours. One per network. The research is deleted after a day if nobody claims it. - 2
Pairing
register returns a claim link. A signed-in person opens it and approves. The site and its history move onto that account, and the key starts following that plan's flags. - 3
Signed-in
Create a key in the dashboard and send it as a bearer token. It carries the same plan limits the dashboard enforces, and you can revoke it there.
Walk-up: no header at all
POST https://api.rankmyseo.com/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
"params": { "name": "register", "arguments": {} } }Signed-in: bearer token
POST https://api.rankmyseo.com/mcp
Authorization: Bearer rms_live_…Tools your client will see
A call that your plan does not cover comes back as a refusal naming the plan that does, not as an error. Limits are enforced server side, so a client cannot talk its way past them.
Getting in
- register
- Mints a walk-up key. The only call that works with no Authorization header.
- request_link
- Returns a claim URL so a signed-in person can pair the key onto their account.
- account_status
- What this key is allowed to do, and how much of the plan is left.
Setting up a site
- add_project
- Starts tracking a domain. Refused once the account is at its plan's project count.
- add_keyword
- Adds one keyword with a country and language.
- add_competitor
- Saves a rival domain against a project.
- list_projects
- The projects on this account.
- list_keywords
- Tracked keywords for a site, with their locale.
- list_competitors
- Saved rivals for a project.
Reading positions
- project_overview
- The project's headline numbers, the same ones the dashboard shows.
- keyword_history
- Saved checks for one keyword, as far back as the plan keeps them.
- check_ranks
- Asks for a fresh check. Subject to the daily queue, so it may be refused.
Starter and up
- site_issues
- On-page problems found in the last crawl.
- issue_pages
- The URLs behind an issue, rather than just the count.
- rank_compare
- Your positions next to a saved rival's on the same keywords.
- keyword_gap
- Keywords a rival ranks for and you do not.
- competitor_traffic
- Estimated traffic for you and a rival, side by side.
- keyword_planner
- Keyword ideas with volume, to pick what to track next.
- backlink_review
- Referring domains and the links worth a second look.
The list an assistant actually receives comes from tools/list and is filtered by the key's plan, so treat that response as the source of truth rather than this table.
Questions people ask
- Is there a machine-readable version of this page?
- Yes. /llms.txt is the same playbook written for an agent to follow on its own, and it is also served at
/index.mdand/auth.md. Any page on this site returns markdown if you sendAccept: text/markdown. - Where do I create or revoke a signed-in key?
- On the Account screen once you are signed in. A key is shown once when it is created, so copy it then. Open your account.
- What happens when a call exceeds the plan?
- The tool returns a refusal that names the limit and the plan that raises it. Nothing is charged and nothing is partially written.
- Can I self-host this instead?
- The toolkit is Apache-2.0 and runs against your own database. See Open source.
Paste the config and call register
That is the whole setup. Sign in when you want to keep what your assistant found.