crawlgraph-mcp
The crawlgraph-mcp server provides backlink intelligence and competitor gap analysis powered by the Common Crawl webgraph (4.4B edges, 120M domains). It offers four tools:
backlinks— Retrieve all referring domains for a target domain, including authority scores (cg_authority), host counts, and rank data. Supports sorting, limiting results (up to 10,000), and querying specific snapshots viarelease_id.gap_analysis— Find domains that link to one or more competitors but not to you. Accepts 1–5 competitor domains and returns each gap domain along with which competitors it links to. Runs as an async job (typically 5–30s).gap_outreach_targets— A warm outreach tool that runs gap analysis and ranks results into PRIORITY targets (linking to all your competitors but not you) and SECONDARY targets (linking to 2+ competitors). Automatically filters platform/CDN/social noise, optionally enriches top targets with authority scores, and produces a clean ranked list. Requires 2–5 competitor domains.releases— List all available Common Crawl snapshot releases for historical queries. Free to call (no quota cost).
crawlgraph-mcp
MCP server for the CrawlGraph backlink-intelligence API. Gives any MCP client — Claude Desktop, Claude Code, Cursor, Cline, Zed, Windsurf — backlink lookups and competitor gap analysis built on the public Common Crawl webgraph (4.4B edges, 120M domains).
Backlink data without the $129/month subscription. CrawlGraph is $99 lifetime; API access is included on the lifetime tier.
What you can do
backlinks— every referring domain for a target, with authority scoresgap_analysis— domains linking to your competitors but not to yougap_outreach_targets— the warm-outreach play: the domains that link to all of your competitors but not to you, ranked and de-noised. These are publishers who cover your whole space and have simply never heard of you — the warmest backlink targets you will ever pitch.releases— list the Common Crawl snapshots you can query
Related MCP server: automatelab-ai-seo
Install
You need a CrawlGraph API key (cg_live_...). Free tier: 15 backlink calls/month, no card - get a key emailed to you at crawlgraph.com/docs/api. The gap_analysis and gap_outreach_targets tools need the $99 lifetime tier (1,000 calls + 50 gap analyses/month, no subscription).
Claude Desktop / Claude Code
Add to your MCP config (claude_desktop_config.json, or .mcp.json for Claude Code):
{
"mcpServers": {
"crawlgraph": {
"command": "npx",
"args": ["-y", "crawlgraph-mcp"],
"env": {
"CRAWLGRAPH_API_KEY": "cg_live_your_key_here"
}
}
}
}Cursor / Windsurf / Cline / Zed
Same shape — point the client's MCP config at npx -y crawlgraph-mcp with CRAWLGRAPH_API_KEY in the env. Restart the client and the four tools appear.
The outreach play, in one prompt
Once it's connected, you don't call the tools by hand — you describe the goal:
"Use gap_outreach_targets for mydomain.com against competitor-a.com and competitor-b.com, then draft a short, specific outreach email to each priority target."
Behind the scenes the server submits the gap job, polls until it completes, filters the results down to the domains that link to every competitor but not to you, strips out platform/CDN noise (amazonaws, github, facebook, ...), and hands your agent a clean ranked list to write outreach against.
Why 2-3 competitors, not one: a site linking to one competitor might be a fluke or a paid placement. A site linking to three of your competitors is a publisher who covers your whole category. That overlap is the qualifier.
Tools reference
Tool | Arguments | Quota cost |
|
| 1 backlinks call |
|
| 1 gap job |
|
| 1 gap job |
| — | free |
Lifetime quota: 1,000 backlinks calls + 50 gap jobs per calendar month. Full API reference: crawlgraph.com/docs/api.
Configuration
Env var | Required | Default |
| yes | — |
| no |
|
Limitations
CrawlGraph is a quarterly Common Crawl snapshot, not a live crawler. It's built for one-off competitor prospecting, not live backlink monitoring — for change-tracking within days, a continuous-crawl tool like Ahrefs is the right choice. The gap result carries which competitors each domain links to (found_on) but not per-domain authority; use the backlinks tool if you need to score an individual target.
Develop
npm install
npm run build
CRAWLGRAPH_API_KEY=cg_live_... npm startLicense
MIT
Available Tools
4 toolsbacklinksBacklink lookupARead-onlyIdempotent
Look up referring domains (backlinks) for a single target domain from the Common Crawl webgraph. Returns each linking domain with host count and CrawlGraph authority score, plus the target's own authority/rank. Costs one backlinks call against the monthly quota (1,000/mo on lifetime).
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain, e.g. 'stripe.com'. | |
| limit | No | Max rows (1..10000, default 1000). | |
| sort | No | 'authority' (default) or 'hosts'. | |
| release_id | No | Common Crawl release id (defaults to latest; see the releases tool). |
Output Schema
| Name | Required | Description |
|---|---|---|
| domain | Yes | |
| release_id | Yes | |
| release_label | Yes | |
| total_linking_domains | Yes | |
| returned | Yes | |
| cg_authority | Yes | |
| cg_rank | Yes | |
| results | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint. The description adds useful behavioral context: the data source (Common Crawl webgraph) and quota/cost details, which go beyond annotations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the main action 'Look up referring domains'. It is concise, avoids fluff, and covers key aspects: action, outputs, source, and cost.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, outputs, data source, and quota, and the schema and annotations handle parameters and safety. It is mostly complete, though it could optionally mention error handling or behavior for missing domains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter. The description adds minor context (data source, quota) but does not significantly enhance parameter understanding beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool looks up referring domains (backlinks) for a single target domain, specifying the returned data (linking domain, host count, authority score, target authority/rank). This distinguishes it from sibling tools like gap_analysis and gap_outreach_targets, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions the cost (one backlinks call against monthly quota), giving context on usage limits. However, it does not explicitly state when not to use or offer direct alternatives, though the context implies it's for obtaining backlink data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gap_analysisCompetitor backlink gap analysisARead-onlyIdempotent
Run a competitor backlink gap analysis: find domains that link to one or more of your competitors but NOT to you. Submits an async job and polls until done (usually 5-30s). Returns every gap with found_on listing which competitors each domain links to. Costs one gap job against the monthly quota (50/mo on lifetime).
| Name | Required | Description | Default |
|---|---|---|---|
| my_domain | Yes | Your domain. | |
| competitor_domains | Yes | 1 to 5 competitor domains. |
Output Schema
| Name | Required | Description |
|---|---|---|
| my_domain | Yes | |
| competitor_domains | Yes | |
| total_gaps | Yes | |
| gaps | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description contradicts the readOnlyHint annotation by explicitly stating it 'costs one gap job against the monthly quota', which is a side effect. This is a clear contradiction, so score is 1 per rubric.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then async behavior, quota, and output. Every sentence adds value with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, async polling duration, quota cost, and output structure (found_on field). Output schema exists so return details are not required. Complete for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds no extra semantic meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds domains linking to competitors but not to you, using specific verb 'run' and resource 'competitor backlink gap analysis'. It distinguishes from sibling tools like 'backlinks' and 'gap_outreach_targets' by its unique focus on gap identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (run when you want to find backlink gaps) but no explicit when-to-use or when-not-to-use compared to siblings. The quota mention gives cost context but no alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gap_outreach_targetsOutreach target finderARead-onlyIdempotent
The warm-outreach play. Runs a gap analysis, then ranks results: PRIORITY = domains linking to ALL your competitors but not you (publishers who cover your whole space and have never heard of you), SECONDARY = domains linking to 2+ competitors. Platform/CDN noise is filtered, top N priority targets are scored by authority. Use 2-3 competitors. Costs one gap job + one backlinks call per enriched target.
| Name | Required | Description | Default |
|---|---|---|---|
| my_domain | Yes | Your domain. | |
| competitor_domains | Yes | 2 to 5 competitor domains (2-3 recommended). | |
| include_platforms | No | Keep platform/CDN/social domains in the list. Default false. | |
| enrich_top | No | Authority-score the top N priority targets. Default 10; each costs one backlinks call. 0 disables. |
Output Schema
| Name | Required | Description |
|---|---|---|
| my_domain | Yes | |
| competitor_domains | Yes | |
| priority_targets | Yes | |
| secondary_targets | Yes | |
| total_gaps | Yes | |
| platforms_filtered | Yes | |
| authority_enriched | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint, destructiveHint false), the description adds that the tool runs a gap analysis, filters platform/CDN noise, scores by authority, and has a cost model. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences plus a usage note) and front-loaded with purpose. Every sentence provides essential information about how the tool works and its usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (which presumably details return values), the description covers the algorithm, filtering, scoring, and cost. It is sufficient for an agent to understand what the tool does and its inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already defines each parameter. The description adds value by explaining the overall algorithm (ranking, filtering) and the purpose of enabling options, which goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool runs a gap analysis and ranks results into priority and secondary based on competitor linking patterns. It distinguishes itself from sibling tools like gap_analysis and backlinks by focusing on outreach target generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context by calling it 'the warm-outreach play' and recommending 2-3 competitors. It also mentions costs (gap job + backlinks calls). However, it does not explicitly contrast with siblings or state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
releasesList Common Crawl releasesARead-onlyIdempotent
List the Common Crawl releases the API can query. Does not count against any quota. Use a release id with the backlinks tool to query a specific snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| releases | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true. The description adds that it does not count against quota, a behavioral trait beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, first states purpose and quota, second gives usage hint. No wasted words, front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given simplicity (no parameters, output schema exists), description sufficiently covers purpose, quota, and usage flow. Complete for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. Per rubric, 0 params baseline 4. Description adds no parameter info, but none needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List the Common Crawl releases the API can query', a specific verb and resource. It distinguishes from siblings like 'backlinks' which uses a release id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions that the tool does not count against quota and guides to 'Use a release id with the backlinks tool to query a specific snapshot', providing clear when-to-use and alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v0.2.2- First observed
backlinks - First observed
gap_analysis - First observed
gap_outreach_targets - First observed
releases
TDQS
Each tool has a clearly distinct purpose: backlinks for single domain lookup, gap_analysis for competitor gap detection, gap_outreach_targets for ranked outreach targets, and releases for listing data snapshots. No overlap.
All tool names follow a consistent pattern of lowercase with underscores, using descriptive noun phrases (e.g., gap_analysis, gap_outreach_targets). No mixing of conventions.
With 4 tools, the set is well-scoped for a specialized backlink analysis server. Each tool is necessary and the count is appropriate for the domain.
Covers essential workflows: single domain lookup, competitor gap analysis, and enriched outreach targeting. Missing bulk queries or historical comparisons, but the releases tool enables snapshot selection, mitigating gaps.
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 Connectors
- QuallaaOAuthcom.quallaa
Talk to your public-facing AI from any MCP client — Claude, ChatGPT, Cursor, Cline, Windsurf.
- RampifyOAuthdev.rampify
SEO MCP server: crawl your site, find AI-visibility gaps, and ship the fix from your coding agent.
SEO Backlinks MCP — backlink intelligence via DataForSEO Backlinks API
Related MCP Servers
- AlicenseBqualityDmaintenanceA MCP server for retrieving backlink information for any domain(SEO).4257MIT
- AlicenseAqualityCmaintenanceVendor-agnostic MCP server that audits, scores, and rewrites web pages for AI-citation eligibility. No API keys. No registration. Works in Claude Desktop, Cursor, Cline, Windsurf, VS Code (Copilot / Continue), and any client that speaks the Model Context Protocol.201003MIT
- AlicenseNot gradedqualityFmaintenanceMCP server that exposes OnCrawl's API for use with Claude Code and Claude Desktop. Enables Claude to perform deep technical SEO analysis by querying crawl data, Google Search Console metrics, and crawl-over-crawl comparisons.2MIT
- AlicenseAqualityBmaintenanceCode intelligence MCP server for Claude Code providing multi-project code graph, semantic search, session history, knowledge base, and web search.153MIT
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/pucilpet/crawlgraph-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server