/v3 endpoint and is authenticated with the same sk_ API key. The server stores nothing — your key is forwarded per request and your brand is resolved from the key automatically.
The MCP server uses your Developer API key, which is available on the Scale plan. Generate one from Settings → Integrations → API — see the Authentication guide.
Connection details
| Property | Value |
|---|---|
| Endpoint | https://mcp.snowseo.com/mcp |
| Transport | Streamable HTTP (POST) |
| Auth | Authorization: Bearer sk_xxx or x-api-key: sk_xxx |
| Brand context | Resolved from the key — no teamId needed |
| Access | Read-only |
Setup
Claude Code
Add the server with one command:--scope project to write it to a checked-in .mcp.json, or --scope user to make it available in every project.
Manual configuration (other AI agents)
For other MCP-compatible clients (Cursor, VS Code, Windsurf, custom agents), find your client’s MCP config file (usually.mcp.json or mcp.json, at the project or user level) and add:
Field names vary slightly between clients (e.g. Windsurf uses
serverUrl instead of url; VS Code’s top-level key is servers). Check your client’s docs for the exact shape — the URL, http transport, and auth header stay the same.Client only supports stdio? Use the mcp-remote bridge
Client only supports stdio? Use the mcp-remote bridge
Some clients can only launch local commands. Bridge the remote server to stdio with The
mcp-remote (requires Node.js):x-api-key header is preferred here — its value has no space, which avoids a header-escaping bug some clients hit on Windows.Available tools
All tools are read-only. The brand is resolved from your key, so none of them take ateamId.
| Tool | What it returns |
|---|---|
keyword_research | Keyword ideas with search volume, competition, and CPC |
suggest_keywords | AI keyword suggestions from a website + brand context |
rank_tracking_keywords | All tracked keywords with current position and trend |
rank_tracking_top_keywords | Best-performing tracked keywords, with period comparison |
rank_tracking_keyword_changes | Keywords that improved, dropped, newly ranked, or were lost |
rank_tracking_keyword_history | Position history for a specific keyword over time |
topic_clusters_list | All topic clusters with counts, visibility, and trend |
topic_cluster_detail | One cluster’s keyword/prompt performance and competitors |
gsc_traffic_stats | Search Console clicks, impressions, CTR, and position |
ga_overview | GA4 users, pageviews, and sessions with comparison |
cms_articles | Articles with status, SEO scores, and metadata |
activity_feed | Recent team activity across the platform |
brand_settings | Brand profile, audience, competitors, and colors |
Some tools chain naturally — e.g. call
topic_clusters_list first to get a cluster id, then pass it to topic_cluster_detail. Good agents do this automatically.Verify the connection
Once configured, restart (or refresh MCP in) your client and ask the agent something like:“Using SnowSEO, show me my brand settings.”If it returns your brand name and website, you’re connected. You can also list the tools — the client should show 13 SnowSEO tools available.
Frequently asked questions
Do I need a different key than the Developer API?
Do I need a different key than the Developer API?
No — it’s the same
sk_ key. The MCP server is just a different way to reach the Developer API. Generate keys in Settings → Integrations → API.Can the agent change or delete my data?
Can the agent change or delete my data?
No. Every MCP tool is read-only — they fetch data, never write it.
Which brand does it read from?
Which brand does it read from?
The brand is baked into the key. To work across multiple brands, create one key per brand and add each as its own MCP server (e.g.
snowseo-brand-a, snowseo-brand-b).The agent shows zero / empty data for a keyword.
The agent shows zero / empty data for a keyword.
Make sure you’re asking about a keyword you actually track (see
rank_tracking_keywords), and that the brand has Google Search Console connected. Untracked keywords return no history.Connection fails or the client can't authenticate.
Connection fails or the client can't authenticate.
Double-check the header is exactly
Authorization: Bearer sk_xxx (with the space) or x-api-key: sk_xxx, that the key hasn’t been revoked, and that your client is using the streamable-http transport. For stdio-only clients, use the mcp-remote bridge.
