Outrank MCP Server

Let Claude, ChatGPT, Cursor and other AI assistants work in your Outrank organization: plan keywords, generate and publish articles, manage integrations, backlinks and the marketplace.

Connect by URL (no install)

Outrank hosts the server, so clients that connect to a URL need nothing on your machine. Add this URL and sign in to Outrank when the client asks:

https://www.outrank.so/api/mcp
  • Claude (web, desktop and mobile): Settings, Connectors, Add custom connector. Paste the URL, then sign in to Outrank when asked.
  • ChatGPT: Settings, Apps and Connectors, Create (developer mode). Paste the URL and choose OAuth.
  • Cursor: Add the entry below to ~/.cursor/mcp.json, then click Connect next to Outrank in the MCP settings.
  • Claude Code: Run the command below, then /mcp in a session to sign in.
{
  "mcpServers": {
    "outrank": { "url": "https://www.outrank.so/api/mcp" }
  }
}
claude mcp add --transport http outrank https://www.outrank.so/api/mcp

Signing in creates a connection on the API Keys page, named after the client; revoke it there to disconnect. Only organization admins can connect. Clients that take a header instead of a sign-in can send an API key:

Authorization: Bearer outr_live_your_api_key_here

The hosted server lists the toolsets your organization can use and takes images as base64. The local server below adds --toolsets, --read-only and uploads from a folder.

What it is

The Outrank MCP server is part of the official outrank-cli package. It speaks the Model Context Protocol, so any MCP client can call Outrank directly as tools. It runs on your machine, started by the client, and sends requests to the Outrank REST API with your API key.

  • Node.js 18 or newer on the machine that runs the client. Check with node --version.
  • An Outrank API key. One key belongs to one organization.
  • Nothing to install up front: the client starts the server through npx.

Claude Code

On macOS, Linux and WSL, run this in the project folder:

claude mcp add outrank --env OUTRANK_API_KEY=outr_live_your_api_key_here \
  -- npx -y outrank-cli@latest mcp

On native Windows, from the Command Prompt:

claude mcp add outrank --env OUTRANK_API_KEY=outr_live_your_api_key_here -- cmd /c npx -y outrank-cli@latest mcp

On native Windows, from PowerShell, call claude.exe so that the -- separator is kept (claude.cmd when Claude Code was installed with npm):

claude.exe mcp add outrank --env OUTRANK_API_KEY=outr_live_your_api_key_here -- cmd /c npx -y outrank-cli@latest mcp

Check the connection, then start a new Claude Code session:

claude mcp get outrank

That command prints the stored key, so do not paste its output anywhere.

To share the server with a team, commit a .mcp.json file that takes the key from each developer's environment, so no key lands in git:

{
  "mcpServers": {
    "outrank": {
      "command": "npx",
      "args": ["-y", "outrank-cli@latest", "mcp"],
      "env": { "OUTRANK_API_KEY": "${OUTRANK_API_KEY}" }
    }
  }
}

Each developer then sets the variable once. On macOS and Linux, add this line to ~/.zshrc or ~/.bashrc:

export OUTRANK_API_KEY=outr_live_your_api_key_here

On Windows, from the Command Prompt or PowerShell:

setx OUTRANK_API_KEY outr_live_your_api_key_here

The variable reaches new terminals only, so open a new one before starting Claude Code.

Cursor

Add the server to ~/.cursor/mcp.json, the file for all projects. It is in your home folder, outside any repository, so the key in it cannot be committed by accident. On Windows it is %USERPROFILE%\.cursor\mcp.json.

{
  "mcpServers": {
    "outrank": {
      "command": "npx",
      "args": ["-y", "outrank-cli@latest", "mcp"],
      "env": { "OUTRANK_API_KEY": "outr_live_your_api_key_here" }
    }
  }
}

If the server does not start on native Windows, use this form:

{
  "mcpServers": {
    "outrank": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "outrank-cli@latest", "mcp"],
      "env": { "OUTRANK_API_KEY": "outr_live_your_api_key_here" }
    }
  }
}

For one project or a team, put the server in .cursor/mcp.json inside the project and take the key from the environment, so the file can be committed without it:

{
  "mcpServers": {
    "outrank": {
      "command": "npx",
      "args": ["-y", "outrank-cli@latest", "mcp"],
      "env": { "OUTRANK_API_KEY": "${env:OUTRANK_API_KEY}" }
    }
  }
}

Set OUTRANK_API_KEY as shown in the Claude Code section, then quit and reopen Cursor. A project server may first have to be switched on in the MCP section of the Cursor settings; a server in the all-projects file starts on its own.

The examples use the latest tag, so the server picks up each new release the next time the client starts it. To stay on one version, replace latest with an exact version number from the npm page.

Other MCP clients

Any client that can start a local MCP server (the stdio transport) works. Give it these three values; many clients read the same JSON as the Cursor example above.

  • Command: npx
  • Arguments: -y outrank-cli@latest mcp
  • Environment variable: OUTRANK_API_KEY set to your API key

First steps

Ask the assistant to "show my Outrank account and products". It calls auth_whoami and products_list and should answer with your organization and its websites. Every result names the organization it came from, so the assistant cannot mix accounts up silently.

Tools are named after the CLI commands with underscores: keywords_list, articles_generate or products_integrations_list.

Toolsets

Tools are grouped into toolsets. At startup the server asks Outrank which areas your organization can use and lists only those tools, so an assistant is not offered dozens of tools that would only return errors. The tools that start a new area, such as the marketplace status tools, are always listed.

core

Account, products and their settings, target audiences, competitors, usage and subscription status. On by default; an explicit --toolsets list has to name it.

integrations

Connect and test publishing integrations such as WordPress, Webflow, Shopify or Framer.

gsc

Connect Google Search Console and read performance, search analytics, cannibalization and URL inspection data.

linking

Internal linking: link sources, detection and the list of link targets.

backlinks

The backlink exchange: settings, credits, earned backlinks, verification and plan quotes.

keywords

The content plan: list, suggest, generate, schedule, reschedule and delete keywords.

articles

Generate articles or create them from your own content, edit them, publish them to the connected CMS and push later edits to it, including images.

improvements

Find under-performing published articles, review the candidates, schedule and push the rewrites.

marketplace-seller

Sell placements in the Outrank Marketplace: onboarding, payout setup, placements and earnings.

marketplace-buyer

Buy placements in the Outrank Marketplace: plan, target pages and placements.

billing

Quote and buy extra product slots, and open the billing portal.

blog

Create and run a hosted Outrank Blog: publish, update and delete posts in one call, change the settings and the theme, pages, categories, authors, custom domain, redirects, snippets, subscribers, webhooks and analytics.

knowledge

Business Knowledge: add text, links and files about the business, list the facts Outrank learned from them and remove sources. Articles use these facts and are checked against them.

Add options after mcp in the server command to change what is listed:

npx -y outrank-cli@latest mcp --read-only
npx -y outrank-cli@latest mcp --toolsets core,keywords,articles
npx -y outrank-cli@latest mcp --toolsets all
  • --read-only lists only tools that change nothing in Outrank or on your site.
  • --toolsets with a list exposes exactly those toolsets. Keep core in the list unless you already know your product ids.
  • --toolsets all lists everything.

The tool list is a noise filter, not a permission system: Outrank checks access on every request. After buying a new service, ask the assistant to run whoami again or restart the server to refresh the list.

Publishing posts

Ask the assistant to "write a post about our new pricing and publish it on our blog". On a product with a hosted Outrank Blog it calls products_blog_posts_create once, with the title, the markdown body, the SEO fields and status: published (or scheduled with a date). Nothing is created when a field is invalid, and an existing slug is reported with the post's id instead of creating a duplicate.

  • products_blog_posts_update changes only the fields it is given, including the body and the status, and refreshes a live post on the blog. products_blog_posts_delete takes a post down and deletes it.
  • products_blog_update_settings changes the blog name, description, language and subdomain; products_blog_design_patch changes part of the theme, navigation, footer, homepage or SEO defaults and can publish it in the same call.
  • On a product connected to WordPress, Webflow, Shopify or another CMS, articles_create stores the article and can publish it right away, articles_publish publishes an existing article, and articles_sync pushes later edits to the post already in the CMS.

From a terminal, the CLI reads the body from a markdown file: outrank-cli products blog posts create <product-id> --title "..." --content-file post.md --status published.

Several organizations

One server works on one organization. For several organizations, store one profile per organization with the CLI and register one server per profile:

npm install -g outrank-cli@latest
outrank-cli auth login outr_live_first_key --profile acme
outrank-cli auth login outr_live_second_key --profile globex
claude mcp add outrank-acme -- npx -y outrank-cli@latest mcp --profile acme
claude mcp add outrank-globex -- npx -y outrank-cli@latest mcp --profile globex

A server started with --profile ignores OUTRANK_API_KEY, so each one stays on its own organization even when that variable is set in your shell.

In PowerShell, call claude.exe in the last two commands, as described in the Claude Code section.

Security

  • The key never passes through the assistant. No tool takes an API key as an argument and logging in is not a tool. Put the key in the client configuration or in the environment, never in a chat message or in a file that is committed.
  • The key is only sent to Outrank. The server talks to www.outrank.so. Environment variables cannot point it at another host, so a project file such as .mcp.json cannot redirect your key that way; any other host needs a profile you store yourself in a terminal.
  • Only register the server from a configuration you trust. Whoever controls the server command and its environment controls the process, and a configuration that replaces the program can read the key. Read a .mcp.json from a repository you did not write before you approve it.
  • Purchases and cancellations need explicit confirmation. Tools that charge your card or cancel a subscription require the exact amount or subscription id as a confirmation field and are flagged as destructive, so the client asks before running them. A client set to approve every tool automatically removes that safeguard.
  • Uploads are restricted. Image files are read only from the folder the server starts in (or --upload-dir); the assistant can also send image bytes directly. Either way the limit is 5 MB and the content must really be an image.
  • Marketplace text is untrusted. Briefs, notifications and placement articles are written by other organizations. The server tells the assistant to treat them as data, not as instructions.

Rate limits

The server uses the same budget as every other client of the key: 120 requests per minute and 10,000 requests per day. When a limit is reached, the tool result says how long to wait.

Troubleshooting

The server does not start.

Run npx -y outrank-cli@latest mcp --help in a terminal: it must print the usage. Check that Node.js 18 or newer is installed. On native Windows, if the client cannot start npx directly, use the cmd /c npx form shown above.

The command works in a terminal, but the client cannot find npx or node (macOS, Linux).

A client started from the Dock or a desktop menu does not always get the PATH of your shell, so a Node.js installed with nvm, fnm or volta can be invisible to it. Run which npx in a terminal, use that full path as the command, and add its folder to PATH in the env block of the server entry, for example "PATH": "/home/you/.nvm/versions/node/v22.0.0/bin:/usr/bin:/bin". The full path alone is not enough: npx starts node through PATH.

PowerShell reports "unknown option '-y'" when adding the server.

PowerShell drops the -- separator when claude is a script or a function instead of the program itself. Call claude.exe directly, as in the PowerShell example above. If claude.exe is not found (Claude Code installed with npm), call claude.cmd or run the command from the Command Prompt.

The first start is slow or times out.

npx downloads the package the first time, which can take 20 seconds or more, and contacts the npm registry on every start. In Claude Code, run /mcp reconnect all to try again, or install the package globally and use outrank-cli mcp as the command.

Every call returns CLI_AUTH_REQUIRED.

The server has no API key. Add OUTRANK_API_KEY to the server entry in the client configuration.

Only a few tools are listed.

The organization does not have that service yet, the key could not be checked at startup, or the server command narrows the list with --toolsets or --read-only. Ask the assistant to run whoami: the answer names what is on, what is off and how to start it. Then check the server entry in the client configuration.

A call takes minutes or times out.

Generating articles, analyzing improvements and generating keywords are long operations. When a call times out the result says whether the work may still be running and which tool to check with. Do not repeat the call before checking.

If you prefer a global install over npx:

npm install -g outrank-cli@latest
outrank-cli mcp --help
background

Let's Try!

Start creating magic today with a free trial!