SignalSumo MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SignalSumo MCP Serverwhat's my current ranking for 'best coffee beans'?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@signalsumo/mcp
Model Context Protocol server for SignalSumo. Lets Claude, Cursor, and any other MCP-compatible client read your SEO data, run technical audits, research keywords, and check backlink profiles through natural-language tool calls.
Every tool wraps a real endpoint on the SignalSumo REST API (/api/v1/*). Auth, plan gating, quotas and billing all happen server-side — the MCP layer is a thin, well-typed shim.
What it exposes today
Eleven read-only tools. Every one reads data your SignalSumo account already holds — this server computes nothing of its own, so the "Produced by" column is the product that generates each dataset.
Rankings
Tool | Wraps | Purpose | Produced by |
|
| Every keyword you track, with country, device and current position | |
|
| Daily position history for one keyword, plus the URL that ranked |
Research
Tool | Wraps | Purpose | Produced by |
|
| Start keyword research (async — returns | |
|
| Backlink profile for any domain (paginated) |
Audits
Tool | Wraps | Purpose | Produced by |
|
| Start a technical SEO audit (async — returns | |
|
| Poll any async job until | — |
AI visibility
Tool | Wraps | Purpose | Produced by |
|
| Brands you track across AI answer engines | |
|
| How often each engine names you versus competitors |
Search Console
Tool | Wraps | Purpose | Produced by |
|
| Connected Search Console properties | |
|
| Queries, clicks, impressions and position from GSC |
Account
Tool | Wraps | Purpose | Produced by |
|
| Current-month API usage, plan, quota reset date |
Reading is free. run_site_audit and research_keyword start work that consumes
plan credits; everything else reads data you have already paid for.
More tools follow the same pattern — one file per tool in src/tools/,
registered in src/index.ts. Full REST reference:
signalsumo.com/api-docs. Prefer no install?
The hosted connector speaks the same tools
over OAuth.
Related MCP server: Search Console MCP
Quick start
1. Get an API key
Sign in to SignalSumo → API Keys → create a key. Copy it once — it won't be shown again.
2. Install
npm install -g @signalsumo/mcpOr run without installing via npx:
npx -y @signalsumo/mcp3. Wire it into your MCP client
Claude Desktop — edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"signalsumo": {
"command": "npx",
"args": ["-y", "@signalsumo/mcp"],
"env": {
"SIGNALSUMO_API_KEY": "sk_live_your_key_here"
}
}
}
}Restart Claude Desktop. You should see the SignalSumo tools available in the tool picker.
Claude Code — add to ~/.claude/mcp_servers.json (same shape as above).
Cursor — Settings → MCP → Add a new server with command: npx, args: ["-y", "@signalsumo/mcp"], and set SIGNALSUMO_API_KEY in the env.
ChatGPT — this package will not help you, and that is not a limitation of the
package. ChatGPT connects to MCP servers as remote HTTPS connectors rather than
spawning a local process, so there is nothing for npx to do. Point it at the
hosted connector instead:
https://signalsumo.com/mcpIt exposes the same tools, authenticates with OAuth rather than an API key, and needs no install. Setup steps are at signalsumo.com/mcp-server.
The same applies to any client that takes a URL rather than a command — the split is stdio versus HTTP, not one vendor versus another.
4. Try it
Ask Claude:
"What SEO tools do I have available through SignalSumo? Check my API usage first."
Claude will call get_api_usage and describe what it can do with the other tools.
Local development
git clone https://github.com/signalsumo/mcp
cd mcp
npm install
cp .env.example .env # add your key
npm run build
SIGNALSUMO_API_KEY=sk_live_... node dist/index.jsPoint Claude Desktop at your local build — replace the path with wherever you cloned the repo:
{
"mcpServers": {
"signalsumo-dev": {
"command": "node",
"args": ["/path/to/signalsumo-mcp/dist/index.js"],
"env": {
"SIGNALSUMO_API_KEY": "sk_live_..."
}
}
}
}Hosted / multi-tenant mode (HTTP + SSE)
The package ships a second entry point for self-hosting the MCP server as a shared HTTP endpoint. This is what remote MCP clients (claude.ai's remote MCP registry, hosted Cursor, browser-based inspectors) connect to.
Transport: Streamable HTTP per the MCP 2025-06-18 spec — POST for client → server calls, GET for the SSE stream, DELETE to end a session. Session isolation is per-connection; each session gets its own Server + SignalSumoClient so keys and state never leak between users.
Auth: every request must carry Authorization: Bearer <signalsumo_api_key>. The key is resolved at session-init and used for every subsequent call in that session — the process itself holds no keys.
Run the HTTP server
npm run start:http
# or as an installed bin:
signalsumo-mcp-httpEnv vars:
MCP_PORT— port to listen on (default3000)MCP_HOST— bind address (default0.0.0.0)SIGNALSUMO_API_BASE— API base URL (defaulthttps://signalsumo.com/api/v1)
Endpoints
Method | Path | Purpose |
|
| Liveness probe. Returns |
|
| Every client → server MCP call. First call in a session must be |
|
| SSE stream for server → client notifications and streamed tool results. Requires |
|
| Cleanly terminate a session. Requires |
Reverse proxy
Put it behind nginx/Caddy on a subdomain (e.g. mcp.signalsumo.com), terminate TLS there, and forward /mcp to the Node process. SSE requires HTTP/1.1 with buffering disabled — nginx snippet:
location /mcp {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Authorization $http_authorization;
proxy_buffering off; # critical for SSE
proxy_cache off;
proxy_read_timeout 24h;
chunked_transfer_encoding off;
}Point a client at the hosted server
For MCP clients that accept a URL + Bearer token (e.g. custom scripts, MCP Inspector, ChatGPT, remote-server support in Claude clients), SignalSumo runs a hosted endpoint — nothing to deploy:
URL: https://signalsumo.com/mcp
Header: Authorization: Bearer sk_live_...That endpoint also speaks OAuth 2.1, which is what the Claude and ChatGPT connector flows use instead of a raw key — see the section below and signalsumo.com/mcp-server.
If you have self-hosted this package on your own subdomain, substitute your own
host and /mcp path in the URL above.
OAuth 2.1 (for the claude.ai/mcp remote registry)
OAuth is handled by the SignalSumo authorization server at https://signalsumo.com — the MCP HTTP endpoint here is just the resource server. MCP clients that speak OAuth 2.1 (Claude Desktop's remote MCP support, claude.ai/mcp) discover everything automatically:
Client hits
/mcpwithout a token → server replies 401 withWWW-Authenticate: Bearer error="unauthorized", resource_metadata="https://signalsumo.com/.well-known/oauth-protected-resource"Client fetches the resource metadata → learns the authorization server is
https://signalsumo.comClient fetches
https://signalsumo.com/.well-known/oauth-authorization-server→ learns the endpointsClient POSTs to
/oauth/register→ gets aclient_id(Dynamic Client Registration, RFC 7591)Client opens
/oauth/authorize?...in a browser tab → user logs into SignalSumo and clicks "Authorize"Client POSTs to
/oauth/tokenwith the auth code + PKCE verifier → gets an access tokenClient uses the access token as
Authorization: Bearer <token>on/mcp
The access token is validated by SignalSumo's ApiAuth — the same class that validates raw API keys — so the MCP server itself doesn't need to know about OAuth. Access tokens live 1 hour; refresh tokens are rotated on every use per OAuth 2.1.
Architecture
src/
├── index.ts # stdio entry (single-user, Claude Desktop / Cursor)
├── server-http.ts # HTTP + SSE entry (multi-tenant, self-hosted)
├── build-server.ts # shared: builds an MCP Server with all tools registered
├── client.ts # Axios wrapper around SignalSumo /api/v1
└── tools/
├── types.ts # Shared ToolDefinition interface
├── usage.ts # get_api_usage
├── backlinks.ts # get_backlinks
├── site_audit.ts # run_site_audit (async)
├── keyword_research.ts # research_keyword (async)
├── job_status.ts # get_job_status
├── rank_keywords.ts # list_tracked_keywords
├── rank_history.ts # get_rank_history
├── gsc_properties.ts # list_gsc_properties
├── gsc_queries.ts # get_gsc_queries
├── ai_visibility_projects.ts # list_ai_visibility_projects
└── ai_share_of_voice.ts # get_ai_share_of_voiceBoth transports register the same tools — the only difference is where the API key comes from (env var for stdio, per-request header for HTTP).
Adding a new tool — copy an existing file in src/tools/, wire the Zod input schema, call client.get() / client.post(), then register it in the tools array in src/index.ts. Rebuild, restart your MCP client, done.
Boundaries
The MCP inherits your API key's trust level. It can do anything the key can do — no more, no less. Endpoints intentionally not exposed as tools even though they exist on the REST API:
Billing / plan changes / credit purchases
User account or password reset
Team management
Admin-only endpoints
Roadmap
Read-only rank tracker tools (
list_tracked_keywords,get_rank_history)Read-only AI visibility tools (
list_ai_visibility_projects,get_ai_share_of_voice)Read-only GSC tools (
list_gsc_properties,get_gsc_queries)HTTP + SSE transport (in addition to stdio)
OAuth 2.1 flow for the claude.ai/mcp remote registry
Write-capable rank tracker tools (
add_keyword_to_tracker,trigger_rank_scan)Local SEO tools (grid rank, review AI, citation status)
Report generation (
generate_executive_report)
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseBqualityBmaintenanceA Model Context Protocol server that enables Claude to interact with DataForSEO APIs, allowing access to SEO data including SERPs, keyword research, on-page metrics, and domain analytics.177,409240Apache 2.0- AlicenseBqualityAmaintenanceModel Context Protocol (MCP) server that provides AI agents with access to Google Search Console data.212,582258MIT
- AlicenseAqualityBmaintenanceA MCP server that turns your scattered SEO and analytics data into one clear verdict per URL. Plug it into Claude, Cursor, or any MCP-aware client and ask: "Which three posts should I update this week?" - and get an answer backed by hard numbers.81512MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that provides comprehensive SEO analysis tools with actionable fix instructions for AI assistants like Claude Code and Claude Desktop.MIT
Related MCP Connectors
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/signalsumo/mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server