SurfRank MCP Server
# SurfRank MCP Server
> Let your AI agent run AI-visibility reports, research keywords, and track competitors on [SurfRank](https://surfrank.ai) β directly from the chat window.
[](https://www.npmjs.com/package/@surfrank/mcp-server)
[](./LICENSE)
[](https://nodejs.org)
This package exposes the [SurfRank](https://surfrank.ai) public API as [Model Context Protocol](https://modelcontextprotocol.io) (MCP) tools, so any MCP-compatible AI assistant β **Claude Desktop, Claude Code, Cursor, Windsurf, ChatGPT MCP connectors**, and others β can call SurfRank on your behalf.
---
## What is SurfRank?
SurfRank measures how visible your brand is inside AI answers (ChatGPT, Perplexity, Gemini, Claude, Grok, DeepSeek, Meta AI). It runs your tracked keywords against each engine, scores your mentions against competitors, and surfaces the content opportunities that would move the needle.
## What is MCP?
The **Model Context Protocol** is an open standard from Anthropic that lets AI agents discover and call external tools. Install this server once, and your agent gets 24 new abilities β no plugin APIs, no OAuth dance, no glue code.
---
## What you can ask your agent once this is connected
> π¬ *"Create a SurfRank project for surfrank.ai in the SaaS industry, then track these 10 keywordsβ¦"*
> π¬ *"What did my latest AI visibility report show? Which engines are missing my brand?"*
> π¬ *"Run a quick test for competitor.com and compare it to my score."*
> π¬ *"List my top 5 content opportunities and draft articles for the highest-impact ones."*
The agent picks the right tool, calls the SurfRank API with your key, and replies in natural language. Credits come out of your SurfRank account at the same rate as direct API calls.
---
## Requirements
- **Node.js 18 or newer** (required by the MCP SDK).
- A **SurfRank API key** on the **Pay As You Go** plan. Generate one at [app.surfrank.ai/api-management](https://app.surfrank.ai/api-management).
- An MCP-compatible client (see the Configuration section).
---
## Install
Run ad-hoc with `npx` β no install needed:
```bash
npx -y @surfrank/mcp-server
```
Or install globally:
```bash
npm install -g @surfrank/mcp-server
```
---
## Configuration
Pick your client below and paste the snippet into its MCP config file.
### Claude Desktop
Edit your Claude Desktop config file:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"surfrank": {
"command": "npx",
"args": ["-y", "@surfrank/mcp-server"],
"env": {
"SURFRANK_API_KEY": "sr_your_key_here"
}
}
}
}
```
Restart Claude Desktop. You should see **surfrank** appear in the MCP servers menu.
### Cursor
Edit `~/.cursor/mcp.json` (or use Settings β MCP β Add server):
```json
{
"mcpServers": {
"surfrank": {
"command": "npx",
"args": ["-y", "@surfrank/mcp-server"],
"env": {
"SURFRANK_API_KEY": "sr_your_key_here"
}
}
}
}
```
### Claude Code
```bash
claude mcp add surfrank -- npx -y @surfrank/mcp-server
export SURFRANK_API_KEY=sr_your_key_here
```
### Windsurf
Edit `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"surfrank": {
"command": "npx",
"args": ["-y", "@surfrank/mcp-server"],
"env": { "SURFRANK_API_KEY": "sr_your_key_here" }
}
}
}
```
---
## Available tools
The server exposes every SurfRank public-API endpoint as a tool (24 in total). Your agent discovers them automatically β you don't need to list them in your prompt.
| Category | Tools |
|---|---|
| **Projects** | `list_projects`, `get_project`, `create_project`, `update_project`, `delete_project` |
| **Keywords** | `list_keywords`, `add_keyword`, `add_keywords_bulk`, `delete_keyword` |
| **Reports** | `trigger_report`, `list_reports`, `get_report`, `get_latest_analyses` |
| **Quick Test** | `run_quick_test`, `list_quick_tests`, `get_quick_test`, `select_quick_test_keywords` |
| **Keyword Research** | `research_keyword`, `list_keyword_research`, `get_keyword_research` |
| **Competitors** | `list_competitors`, `add_competitor`, `delete_competitor` |
| **Opportunities** | `list_opportunities` |
Each tool maps 1:1 to a REST endpoint under `https://api.surfrank.ai/api/v1/public/*`.
---
## Scoped API keys
If you generate a **project-scoped** API key, the MCP server can only operate on that project. Any tool call that references a different project ID is rejected with a `403` from the SurfRank API, and the error surfaces verbatim in the agent's response.
This is the recommended setup when you're connecting a single workspace or a teammate to a single brand.
---
## Credit usage
Credits are deducted from your SurfRank account per the same pricing as direct API calls:
| Operation | Cost |
|---|---|
| Quick test | 1 credit flat |
| Keyword research | 0.5 Γ number of engines |
| Report trigger | 0.3 Γ keywords Γ engines |
| Everything else (list / get / update) | free |
Every tool response includes a `credits` object so your agent (and you) can track usage in real time.
---
## Environment variables
| Variable | Required | Default | Purpose |
|---|---|---|---|
| `SURFRANK_API_KEY` | β
| β | Your API key (`sr_β¦`) |
| `SURFRANK_API_URL` | β | `https://api.surfrank.ai/api/v1/public` | Override for staging / local development |
---
## Debugging
Use the official MCP inspector to poke at the server directly β useful when onboarding a new client or diagnosing a connection issue:
```bash
SURFRANK_API_KEY=sr_your_key_here \
npx @modelcontextprotocol/inspector npx @surfrank/mcp-server
```
The inspector opens a browser UI where you can list tools and call them manually, exactly as an AI agent would.
---
## Security notes
- API keys are **shown once** on creation and stored as SHA-256 hashes on SurfRank's servers. If you lose a key, revoke and regenerate it β it can't be recovered.
- Credentials stay in your local MCP config file. This package never writes them to disk and never phones home.
- Each API key is rate-limited to **60 requests per minute**. Exceeding it returns HTTP `429`.
---
## Links
- π SurfRank β [surfrank.ai](https://surfrank.ai)
- π API Management β [app.surfrank.ai/api-management](https://app.surfrank.ai/api-management)
- π Public API docs β in the API Management β Documentation tab
- π Issues β [github.com/SurfRankAI/mcp-server/issues](https://github.com/SurfRankAI/mcp-server/issues)
- π¦ npm β [@surfrank/mcp-server](https://www.npmjs.com/package/@surfrank/mcp-server)
---
## License
MIT Β© SurfRank Pte. Ltd. β see [LICENSE](./LICENSE).
TDQS
Scored across 24 tools
Each tool targets a distinct operation on a specific resource (project, keyword, competitor, report, quick test, analysis, opportunity). There is no functional overlap; even similar-sounding tools like get_keyword_research and research_keyword are clearly differentiated by one retrieving past results and the other initiating new research.
All tool names follow a consistent verb_noun pattern (e.g., create_project, add_keyword, delete_competitor). The few compound terms like add_keywords_bulk and select_quick_test_keywords still adhere to the pattern. No mixing of conventions like camelCase or inconsistent verb forms.
The 24 tools cover the full domain of AI-visibility tracking (projects, keywords, competitors, reports, quick tests, research, opportunities). While slightly above the typical 3-15 range, the count is justified by the breadth of functionality and each tool serves a clear purpose.
The tool set provides full CRUD for projects, keywords, and competitors, plus lifecycle management for reports and quick tests. Additional tools for keyword research, opportunities, and analyses fill all plausible gaps. No essential operations appear missing.