@houtini/seo-crawler-mcp 2.1.3 → 2.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/README.md +26 -1
  2. package/build/analyzers/queries/README.md +228 -0
  3. package/build/analyzers/queries/content/duplicate-h1.sql +18 -0
  4. package/build/analyzers/queries/content/duplicate-meta-descriptions.sql +18 -0
  5. package/build/analyzers/queries/content/duplicate-titles.sql +19 -0
  6. package/build/analyzers/queries/content/missing-h1.sql +18 -0
  7. package/build/analyzers/queries/content/missing-meta-descriptions.sql +19 -0
  8. package/build/analyzers/queries/content/multiple-h1.sql +17 -0
  9. package/build/analyzers/queries/content/thin-content.sql +18 -0
  10. package/build/analyzers/queries/critical/404-errors.sql +14 -0
  11. package/build/analyzers/queries/critical/broken-internal-links.sql +22 -0
  12. package/build/analyzers/queries/critical/missing-titles.sql +17 -0
  13. package/build/analyzers/queries/critical/server-errors.sql +15 -0
  14. package/build/analyzers/queries/opportunities/high-external-links.sql +18 -0
  15. package/build/analyzers/queries/opportunities/meta-description-length.sql +27 -0
  16. package/build/analyzers/queries/opportunities/missing-images.sql +18 -0
  17. package/build/analyzers/queries/opportunities/no-outbound-links.sql +18 -0
  18. package/build/analyzers/queries/opportunities/title-equals-h1.sql +21 -0
  19. package/build/analyzers/queries/opportunities/title-length.sql +27 -0
  20. package/build/analyzers/queries/opportunities/uncrawled-internal-links.sql +20 -0
  21. package/build/analyzers/queries/security/missing-csp.sql +16 -0
  22. package/build/analyzers/queries/security/missing-hsts.sql +17 -0
  23. package/build/analyzers/queries/security/missing-referrer-policy.sql +16 -0
  24. package/build/analyzers/queries/security/missing-x-frame-options.sql +16 -0
  25. package/build/analyzers/queries/security/protocol-relative-links.sql +16 -0
  26. package/build/analyzers/queries/security/unsafe-external-links.sql +17 -0
  27. package/build/analyzers/queries/technical/canonical-issues.sql +20 -0
  28. package/build/analyzers/queries/technical/heading-hierarchy-issues.sql +19 -0
  29. package/build/analyzers/queries/technical/non-https.sql +16 -0
  30. package/build/analyzers/queries/technical/orphan-pages.sql +21 -0
  31. package/build/analyzers/queries/technical/redirects.sql +15 -0
  32. package/build/core/CrawlDatabase.d.ts +1 -1
  33. package/build/core/CrawlDatabase.d.ts.map +1 -1
  34. package/build/core/CrawlDatabase.js +2 -2
  35. package/build/core/CrawlDatabase.js.map +1 -1
  36. package/build/index.js +1 -1
  37. package/build/index.js.map +1 -1
  38. package/package.json +3 -3
  39. package/server.json +36 -36
  40. package/houtini-logo.jpg +0 -0
package/README.md CHANGED
@@ -5,12 +5,21 @@
5
5
  [![Build Status](https://github.com/houtini-ai/seo-crawler-mcp/workflows/CI/badge.svg)](https://github.com/houtini-ai/seo-crawler-mcp/actions)
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.3-blue?logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
7
7
  [![Type Definitions](https://img.shields.io/badge/types-included-blue)](https://www.npmjs.com/package/@houtini/seo-crawler-mcp)
8
- [![Known Vulnerabilities](https://snyk.io/test/github/houtini-ai/seo-crawler-mcp/badge.svg)](https://snyk.io/test/github/houtini-ai/seo-crawler-mcp)
9
8
  [![MCP Registry](https://img.shields.io/badge/MCP-Registry-blue?style=flat-square)](https://registry.modelcontextprotocol.io)
10
9
  [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
11
10
 
12
11
  **Crawl and analyse your website for errors and issues that probably affect your site's SEO**
13
12
 
13
+ <p align="center">
14
+ <a href="https://glama.ai/mcp/servers/@houtini-ai/seo-crawler-mcp">
15
+ <img width="380" height="200" src="https://glama.ai/mcp/servers/@houtini-ai/seo-crawler-mcp/badge" alt="SEO Crawler MCP server" />
16
+ </a>
17
+ </p>
18
+
19
+ > **Quick Navigation**
20
+ >
21
+ > [Installation](#installation) | [CLI mode](#cli-mode-terminal-usage) | [How to use](#how-to-use-this) | [What gets detected](#what-gets-detected) | [Data storage](#data-storage) | [Performance](#performance) | [Tools reference](#mcp-tools-reference) | [Available queries](#available-queries)
22
+
14
23
  I wanted to build on my experience working with the MCP protocol SDK to see just how far we can extend an AI assistant's capabilities. I decided that I'd quite like to build a crawler to check my site's "technical SEO" health and came across Crawlee - which seemed like the ideal library to base the crawl component of my MCP.
15
24
 
16
25
  What's interesting is that MCP usually indicates a server connection of some sort. This is not so with SEO Crawler MCP. The MCP protocol is probably more powerful than I realised - this is a self-contained application wrapped in the MCP SDK that handles everything locally:
@@ -69,6 +78,22 @@ Restart Claude Desktop. Four tools will be available:
69
78
  - `seo-crawler-mcp:query_seo_data`
70
79
  - `seo-crawler-mcp:list_seo_queries`
71
80
 
81
+ ### Claude Code (CLI)
82
+
83
+ Claude Code uses a different registration mechanism -- it doesn't read `claude_desktop_config.json`. Use `claude mcp add` instead:
84
+
85
+ ```bash
86
+ claude mcp add -e OUTPUT_DIR=/path/to/seo-audits -s user seo-crawler-mcp -- npx -y @houtini/seo-crawler-mcp
87
+ ```
88
+
89
+ Verify with:
90
+
91
+ ```bash
92
+ claude mcp get seo-crawler-mcp
93
+ ```
94
+
95
+ You should see `Status: Connected`.
96
+
72
97
  ### Development Install
73
98
 
74
99
  ```bash
@@ -0,0 +1,228 @@
1
+ # SEO Analysis Query Library
2
+
3
+ **Version:** 1.0.0
4
+ **Last Updated:** 2026-02-01
5
+ **Coverage:** 25 detectable SEO issues
6
+
7
+ ## Query Organization
8
+
9
+ All queries follow a standard format:
10
+ - SQL comments describing the issue
11
+ - Priority level (CRITICAL, HIGH, MEDIUM, LOW)
12
+ - Category classification
13
+ - Optimized SELECT statements with ORDER BY and LIMIT
14
+ - Results limited to 100 rows for performance
15
+
16
+ ## Critical Issues (4 queries)
17
+
18
+ **Indexability issues that must be fixed immediately**
19
+
20
+ 1. **missing-titles.sql** - Pages without title tags
21
+ - Priority: CRITICAL
22
+ - Impact: Major indexability problem
23
+ - Fix: Add unique, descriptive title tags
24
+
25
+ 2. **broken-internal-links.sql** - Internal links to 404/5xx pages
26
+ - Priority: CRITICAL
27
+ - Impact: Poor user experience, crawl budget waste
28
+ - Fix: Update or remove broken links
29
+
30
+ 3. **server-errors.sql** - Pages returning 5xx errors
31
+ - Priority: CRITICAL
32
+ - Impact: Prevents indexing
33
+ - Fix: Debug server issues immediately
34
+
35
+ 4. **404-errors.sql** - Pages not found
36
+ - Priority: CRITICAL
37
+ - Impact: Dead ends for users and crawlers
38
+ - Fix: Redirect to relevant pages or restore content
39
+
40
+ ## Content Quality Issues (7 queries)
41
+
42
+ **Problems with page content and metadata**
43
+
44
+ 5. **duplicate-titles.sql** - Multiple pages with same title
45
+ - Priority: HIGH
46
+ - Impact: Cannibalization, poor CTR
47
+ - Fix: Create unique titles for each page
48
+
49
+ 6. **duplicate-meta-descriptions.sql** - Duplicate meta descriptions
50
+ - Priority: MEDIUM
51
+ - Impact: Reduced CTR, missed opportunities
52
+ - Fix: Write unique descriptions
53
+
54
+ 7. **missing-meta-descriptions.sql** - Pages without descriptions
55
+ - Priority: MEDIUM
56
+ - Impact: Search engines auto-generate poor snippets
57
+ - Fix: Add compelling meta descriptions
58
+
59
+ 8. **thin-content.sql** - Pages with < 300 words
60
+ - Priority: MEDIUM
61
+ - Impact: Low quality signals
62
+ - Fix: Expand content or consolidate pages
63
+
64
+ 9. **missing-h1.sql** - Pages without H1 tags
65
+ - Priority: HIGH
66
+ - Impact: Unclear page topic
67
+ - Fix: Add descriptive H1 tags
68
+
69
+ 10. **multiple-h1.sql** - Pages with multiple H1 tags
70
+ - Priority: MEDIUM
71
+ - Impact: Diluted topical focus
72
+ - Fix: Use single H1 per page
73
+
74
+ 11. **duplicate-h1.sql** - Multiple pages with same H1
75
+ - Priority: MEDIUM
76
+ - Impact: Content cannibalization
77
+ - Fix: Differentiate H1 tags
78
+
79
+ ## Technical SEO Issues (5 queries)
80
+
81
+ **Infrastructure and architecture problems**
82
+
83
+ 12. **redirects.sql** - Pages with 3xx redirect status
84
+ - Priority: MEDIUM
85
+ - Impact: Crawl budget waste, slow page speed
86
+ - Fix: Update links to final destinations
87
+
88
+ 13. **orphan-pages.sql** - Pages with no internal links
89
+ - Priority: MEDIUM
90
+ - Impact: Difficult to discover and crawl
91
+ - Fix: Add internal links from related pages
92
+
93
+ 14. **canonical-issues.sql** - Canonical URL differs from actual URL
94
+ - Priority: MEDIUM
95
+ - Impact: Duplicate content confusion
96
+ - Fix: Review canonical implementation
97
+
98
+ 15. **non-https.sql** - Pages not using HTTPS
99
+ - Priority: MEDIUM
100
+ - Impact: Security warnings, ranking penalty
101
+ - Fix: Migrate to HTTPS
102
+
103
+ 16. **heading-hierarchy-issues.sql** - Non-sequential headings
104
+ - Priority: MEDIUM
105
+ - Impact: Poor document structure
106
+ - Fix: Correct heading order (h1 → h2 → h3)
107
+
108
+ ## Security Issues (6 queries)
109
+
110
+ **Security header and link security problems**
111
+
112
+ 17. **missing-hsts.sql** - No Strict-Transport-Security header
113
+ - Priority: HIGH
114
+ - Impact: HTTPS downgrade attacks possible
115
+ - Fix: Add HSTS header to server config
116
+
117
+ 18. **missing-csp.sql** - No Content-Security-Policy header
118
+ - Priority: MEDIUM
119
+ - Impact: XSS vulnerability
120
+ - Fix: Implement CSP header
121
+
122
+ 19. **missing-x-frame-options.sql** - No X-Frame-Options header
123
+ - Priority: MEDIUM
124
+ - Impact: Clickjacking vulnerability
125
+ - Fix: Add X-Frame-Options: DENY
126
+
127
+ 20. **missing-referrer-policy.sql** - No Referrer-Policy header
128
+ - Priority: LOW
129
+ - Impact: Privacy leaks
130
+ - Fix: Add Referrer-Policy header
131
+
132
+ 21. **unsafe-external-links.sql** - target="_blank" without rel="noopener"
133
+ - Priority: MEDIUM
134
+ - Impact: Tabnabbing vulnerability
135
+ - Fix: Add rel="noopener noreferrer"
136
+
137
+ 22. **protocol-relative-links.sql** - Links using //example.com format
138
+ - Priority: LOW
139
+ - Impact: Mixed content warnings
140
+ - Fix: Use absolute HTTPS URLs
141
+
142
+ ## Optimization Opportunities (6 queries)
143
+
144
+ **Enhancement opportunities for better SEO**
145
+
146
+ 23. **title-length.sql** - Titles too short (< 30) or too long (> 60)
147
+ - Priority: MEDIUM
148
+ - Impact: Truncated or poor SERP display
149
+ - Fix: Optimize title length to 30-60 characters
150
+
151
+ 24. **meta-description-length.sql** - Descriptions too short/long
152
+ - Priority: LOW
153
+ - Impact: Suboptimal SERP snippets
154
+ - Fix: Optimize to 120-160 characters
155
+
156
+ 25. **title-equals-h1.sql** - Title and H1 are identical
157
+ - Priority: LOW
158
+ - Impact: Missed keyword opportunity
159
+ - Fix: Differentiate title and H1 slightly
160
+
161
+ 26. **no-outbound-links.sql** - Pages with no links
162
+ - Priority: LOW
163
+ - Impact: Poor user experience, low PageRank flow
164
+ - Fix: Add relevant internal/external links
165
+
166
+ 27. **high-external-links.sql** - Pages with > 20 external links
167
+ - Priority: LOW
168
+ - Impact: Excessive PageRank dilution
169
+ - Fix: Review and reduce external links
170
+
171
+ 28. **missing-images.sql** - Content pages without images
172
+ - Priority: LOW
173
+ - Impact: Poor engagement, no image search visibility
174
+ - Fix: Add relevant images with alt text
175
+
176
+ ## Query Performance
177
+
178
+ All queries are optimized for SQLite with:
179
+ - Indexed columns (url, status_code, depth)
180
+ - LIMIT clauses to prevent excessive results
181
+ - Strategic WHERE clauses to filter early
182
+ - Simple JOINs where necessary
183
+
184
+ **Expected Performance:**
185
+ - Simple queries: < 10ms
186
+ - Complex queries (duplicates, orphans): < 100ms
187
+ - Join queries (broken links): < 200ms
188
+
189
+ ## Usage Patterns
190
+
191
+ ### Direct SQL Execution
192
+ ```typescript
193
+ import Database from 'better-sqlite3';
194
+ import fs from 'fs';
195
+
196
+ const db = new Database('./crawl-data.db');
197
+ const query = fs.readFileSync('./queries/critical/missing-titles.sql', 'utf-8');
198
+ const results = db.prepare(query).all();
199
+ ```
200
+
201
+ ### Programmatic Analysis
202
+ ```typescript
203
+ import { SQLAnalyzer } from './SQLAnalyzer.js';
204
+
205
+ const analyzer = new SQLAnalyzer(crawlId);
206
+ const report = await analyzer.generateReport();
207
+ // Returns structured SEOAnalysisReport
208
+ ```
209
+
210
+ ### MCP Tool Integration
211
+ ```bash
212
+ seo-crawler-mcp:analyze_seo crawlId="431841d4"
213
+ # Returns JSON report with all 25 issues checked
214
+ ```
215
+
216
+ ## Future Enhancements
217
+
218
+ **Not yet implemented (requires additional data capture):**
219
+ - Core Web Vitals analysis (requires Playwright)
220
+ - Robots.txt validation (requires separate parser)
221
+ - Readability scoring (requires text analysis library)
222
+ - Mobile rendering issues (requires device emulation)
223
+
224
+ ---
225
+
226
+ **Query Coverage: 25 Production-Ready SEO Checks**
227
+ **Status: Production Ready**
228
+ **Next Step: Build SQLAnalyzer.ts class**
@@ -0,0 +1,18 @@
1
+ -- Duplicate H1 Tags (MEDIUM)
2
+ -- Multiple pages sharing the same H1 tag
3
+ -- Priority: MEDIUM
4
+ -- Category: content
5
+
6
+ SELECT
7
+ h1,
8
+ COUNT(*) as page_count,
9
+ GROUP_CONCAT(url, '|||') as urls,
10
+ MIN(title) as example_title
11
+ FROM pages
12
+ WHERE h1 IS NOT NULL
13
+ AND TRIM(h1) != ''
14
+ AND status_code = 200
15
+ GROUP BY h1
16
+ HAVING COUNT(*) > 1
17
+ ORDER BY page_count DESC
18
+ LIMIT 50;
@@ -0,0 +1,18 @@
1
+ -- Duplicate Meta Descriptions (MEDIUM)
2
+ -- Multiple pages sharing the same meta description
3
+ -- Priority: MEDIUM
4
+ -- Category: content
5
+
6
+ SELECT
7
+ meta_description,
8
+ COUNT(*) as page_count,
9
+ GROUP_CONCAT(url, '|||') as urls,
10
+ MIN(title) as example_title
11
+ FROM pages
12
+ WHERE meta_description IS NOT NULL
13
+ AND TRIM(meta_description) != ''
14
+ AND status_code = 200
15
+ GROUP BY meta_description
16
+ HAVING COUNT(*) > 1
17
+ ORDER BY page_count DESC
18
+ LIMIT 50;
@@ -0,0 +1,19 @@
1
+ -- Duplicate Title Tags (HIGH)
2
+ -- Multiple pages sharing the same title tag
3
+ -- Priority: HIGH
4
+ -- Category: content
5
+ -- Impact: Title duplication causes keyword cannibalization where pages compete against each other. Reduces click-through rates as users can't distinguish between pages in search results.
6
+ -- Fix: Create unique, descriptive title tags for each page that accurately reflect the page's specific content and target different keyword variations.
7
+
8
+ SELECT
9
+ title,
10
+ GROUP_CONCAT(url, ', ') as duplicate_urls,
11
+ COUNT(*) as count
12
+ FROM pages
13
+ WHERE title IS NOT NULL
14
+ AND title != ''
15
+ AND status_code = 200
16
+ GROUP BY title
17
+ HAVING count > 1
18
+ ORDER BY count DESC
19
+ LIMIT 100;
@@ -0,0 +1,18 @@
1
+ -- Missing H1 Tags (HIGH)
2
+ -- Pages without H1 headings
3
+ -- Priority: HIGH
4
+ -- Category: content
5
+ -- Impact: H1 tags are critical for SEO and accessibility. Their absence makes it unclear to search engines and users what the page is about. Impacts topic clarity and ranking potential.
6
+ -- Fix: Ensure every important page has exactly one descriptive H1 tag that clearly indicates the main topic. Include primary keywords naturally without keyword stuffing.
7
+
8
+ SELECT
9
+ url,
10
+ title,
11
+ word_count,
12
+ depth
13
+ FROM pages
14
+ WHERE (h1 IS NULL OR h1 = '' OR TRIM(h1) = '')
15
+ AND status_code = 200
16
+ AND content_type LIKE '%text/html%'
17
+ ORDER BY word_count DESC
18
+ LIMIT 100;
@@ -0,0 +1,19 @@
1
+ -- Missing Meta Descriptions (MEDIUM)
2
+ -- Pages without meta descriptions
3
+ -- Priority: MEDIUM
4
+ -- Category: content
5
+ -- Impact: Search engines auto-generate snippets which are often poor quality and don't entice clicks. Missed opportunity to control your SERP messaging and improve click-through rates.
6
+ -- Fix: Write unique, compelling meta descriptions (120-160 characters) for key pages. Focus on benefits and include a call-to-action. Avoid duplicating title tag content.
7
+
8
+ SELECT
9
+ url,
10
+ title,
11
+ word_count,
12
+ depth
13
+ FROM pages
14
+ WHERE (meta_description IS NULL OR meta_description = '' OR TRIM(meta_description) = '')
15
+ AND status_code = 200
16
+ AND content_type LIKE '%text/html%'
17
+ AND depth <= 5
18
+ ORDER BY word_count DESC
19
+ LIMIT 100;
@@ -0,0 +1,17 @@
1
+ -- Multiple H1 Tags (MEDIUM)
2
+ -- Pages with more than one H1 tag (can confuse search engines)
3
+ -- Priority: MEDIUM
4
+ -- Category: content
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ heading_count_h1,
10
+ h1,
11
+ status_code,
12
+ depth
13
+ FROM pages
14
+ WHERE heading_count_h1 > 1
15
+ AND status_code = 200
16
+ ORDER BY heading_count_h1 DESC, depth ASC
17
+ LIMIT 100;
@@ -0,0 +1,18 @@
1
+ -- Thin Content (MEDIUM)
2
+ -- Pages with insufficient content (< 300 words)
3
+ -- Priority: MEDIUM
4
+ -- Category: content
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ word_count,
10
+ status_code,
11
+ depth,
12
+ internal_links
13
+ FROM pages
14
+ WHERE word_count < 300
15
+ AND status_code = 200
16
+ AND content_type LIKE '%text/html%'
17
+ ORDER BY word_count ASC
18
+ LIMIT 100;
@@ -0,0 +1,14 @@
1
+ -- 404 Not Found Errors (CRITICAL)
2
+ -- Pages returning 404 errors
3
+ -- Priority: CRITICAL
4
+ -- Category: indexability
5
+
6
+ SELECT
7
+ url,
8
+ depth,
9
+ linked_from,
10
+ crawled_at
11
+ FROM pages
12
+ WHERE status_code = 404
13
+ ORDER BY depth ASC
14
+ LIMIT 100;
@@ -0,0 +1,22 @@
1
+ -- Broken Internal Links (CRITICAL)
2
+ -- Internal links pointing to pages that actually returned HTTP errors (404, 500, etc.)
3
+ -- Priority: CRITICAL
4
+ -- Category: critical
5
+ -- Impact: Poor user experience, wasted crawl budget, and loss of link equity. Users encounter dead ends and search engines waste resources crawling broken links.
6
+ -- Fix: View URLs that link to errors using the 'inlinks' tab and export them in bulk. Update broken links to point to correct URLs or remove them. Consider implementing 301 redirects for permanently moved content.
7
+ -- Note: This query only reports links to pages that were crawled AND returned errors. Un-crawled links are reported separately in the opportunities category.
8
+
9
+ SELECT
10
+ l.source_url,
11
+ l.target_url,
12
+ l.anchor_text,
13
+ l.placement,
14
+ p.status_code,
15
+ COUNT(*) as occurrences
16
+ FROM links l
17
+ INNER JOIN pages p ON l.target_url = p.url -- Only check pages we actually crawled
18
+ WHERE l.is_internal = 1
19
+ AND p.status_code >= 400 -- Only actual HTTP errors (404, 500, etc.)
20
+ GROUP BY l.target_url, l.source_url, p.status_code
21
+ ORDER BY occurrences DESC
22
+ LIMIT 100;
@@ -0,0 +1,17 @@
1
+ -- Missing Title Tags (CRITICAL)
2
+ -- Pages without title tags - catastrophic for SEO
3
+ -- Priority: CRITICAL
4
+ -- Category: critical
5
+ -- Impact: Pages are essentially invisible to search engines. Title tags are the most important on-page SEO element and their absence prevents proper indexing and ranking.
6
+ -- Fix: Add unique, descriptive title tags (50-60 characters) to all pages immediately. Include primary keywords and brand name where appropriate.
7
+
8
+ SELECT
9
+ url,
10
+ word_count,
11
+ heading_count_h1
12
+ FROM pages
13
+ WHERE (title IS NULL OR title = '' OR TRIM(title) = '')
14
+ AND status_code = 200
15
+ AND depth <= 5
16
+ ORDER BY word_count DESC
17
+ LIMIT 100;
@@ -0,0 +1,15 @@
1
+ -- Server Errors (5xx) (CRITICAL)
2
+ -- Pages returning 500, 502, 503, 504 errors
3
+ -- Priority: CRITICAL
4
+ -- Category: indexability
5
+
6
+ SELECT
7
+ url,
8
+ status_code,
9
+ depth,
10
+ linked_from,
11
+ crawled_at
12
+ FROM pages
13
+ WHERE status_code >= 500 AND status_code < 600
14
+ ORDER BY status_code ASC, depth ASC
15
+ LIMIT 100;
@@ -0,0 +1,18 @@
1
+ -- High External Link Count (LOW)
2
+ -- Pages with unusually high number of external links
3
+ -- Priority: LOW
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ external_links,
10
+ internal_links,
11
+ word_count,
12
+ status_code,
13
+ depth
14
+ FROM pages
15
+ WHERE external_links > 20
16
+ AND status_code = 200
17
+ ORDER BY external_links DESC
18
+ LIMIT 100;
@@ -0,0 +1,27 @@
1
+ -- Meta Description Length Issues (LOW)
2
+ -- Meta descriptions that are too short (< 120 chars) or too long (> 160 chars)
3
+ -- Priority: LOW
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ meta_description,
10
+ meta_description_length,
11
+ status_code,
12
+ CASE
13
+ WHEN meta_description_length < 120 THEN 'Too Short'
14
+ WHEN meta_description_length > 160 THEN 'Too Long'
15
+ END as issue_type
16
+ FROM pages
17
+ WHERE (meta_description_length < 120 OR meta_description_length > 160)
18
+ AND meta_description IS NOT NULL
19
+ AND TRIM(meta_description) != ''
20
+ AND status_code = 200
21
+ ORDER BY
22
+ CASE
23
+ WHEN meta_description_length < 120 THEN 1
24
+ ELSE 2
25
+ END,
26
+ meta_description_length ASC
27
+ LIMIT 100;
@@ -0,0 +1,18 @@
1
+ -- Missing Images (LOW)
2
+ -- Pages with no images
3
+ -- Priority: LOW
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ word_count,
10
+ images,
11
+ status_code,
12
+ depth
13
+ FROM pages
14
+ WHERE (images = '[]' OR images IS NULL OR images = '')
15
+ AND word_count > 300
16
+ AND status_code = 200
17
+ ORDER BY word_count DESC
18
+ LIMIT 100;
@@ -0,0 +1,18 @@
1
+ -- Pages with No Outbound Links (LOW)
2
+ -- Pages with no internal or external links
3
+ -- Priority: LOW
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ word_count,
10
+ internal_links,
11
+ external_links,
12
+ status_code,
13
+ depth
14
+ FROM pages
15
+ WHERE (internal_links = 0 AND external_links = 0)
16
+ AND status_code = 200
17
+ ORDER BY word_count DESC, depth ASC
18
+ LIMIT 100;
@@ -0,0 +1,21 @@
1
+ -- Pages with Title = H1 (OPPORTUNITY)
2
+ -- Pages where title and H1 are identical (opportunity for differentiation)
3
+ -- Priority: LOW
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ h1,
10
+ word_count,
11
+ status_code,
12
+ depth
13
+ FROM pages
14
+ WHERE title = h1
15
+ AND title IS NOT NULL
16
+ AND TRIM(title) != ''
17
+ AND h1 IS NOT NULL
18
+ AND TRIM(h1) != ''
19
+ AND status_code = 200
20
+ ORDER BY word_count DESC
21
+ LIMIT 100;
@@ -0,0 +1,27 @@
1
+ -- Title Length Issues (MEDIUM)
2
+ -- Titles that are too short (< 30 chars) or too long (> 60 chars)
3
+ -- Priority: MEDIUM
4
+ -- Category: optimization
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ title_length,
10
+ status_code,
11
+ depth,
12
+ CASE
13
+ WHEN title_length < 30 THEN 'Too Short'
14
+ WHEN title_length > 60 THEN 'Too Long'
15
+ END as issue_type
16
+ FROM pages
17
+ WHERE (title_length < 30 OR title_length > 60)
18
+ AND title IS NOT NULL
19
+ AND TRIM(title) != ''
20
+ AND status_code = 200
21
+ ORDER BY
22
+ CASE
23
+ WHEN title_length < 30 THEN 1
24
+ ELSE 2
25
+ END,
26
+ title_length ASC
27
+ LIMIT 100;
@@ -0,0 +1,20 @@
1
+ -- Un-crawled Internal Links (OPPORTUNITIES)
2
+ -- Internal links discovered but not crawled (likely due to depth or page limits)
3
+ -- Priority: LOW
4
+ -- Category: opportunities
5
+ -- Impact: These links were discovered during the crawl but not visited, usually because the crawler reached its depth limit or page count limit. Not necessarily broken - just outside the crawl scope.
6
+ -- Fix: Review these URLs to determine if they should be included in future crawls. Consider increasing maxPages or maxDiscoveryDepth if important sections of your site are being missed.
7
+
8
+ SELECT
9
+ l.source_url,
10
+ l.target_url,
11
+ l.anchor_text,
12
+ l.placement,
13
+ COUNT(*) as occurrences
14
+ FROM links l
15
+ LEFT JOIN pages p ON l.target_url = p.url
16
+ WHERE l.is_internal = 1
17
+ AND p.url IS NULL -- Link discovered but page never crawled
18
+ GROUP BY l.target_url, l.source_url
19
+ ORDER BY occurrences DESC
20
+ LIMIT 100;
@@ -0,0 +1,16 @@
1
+ -- Missing Security Headers - CSP (MEDIUM)
2
+ -- Pages missing Content-Security-Policy header
3
+ -- Priority: MEDIUM
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ status_code,
10
+ depth,
11
+ security_headers_csp
12
+ FROM pages
13
+ WHERE (security_headers_csp IS NULL OR security_headers_csp = '')
14
+ AND status_code = 200
15
+ ORDER BY depth ASC
16
+ LIMIT 100;
@@ -0,0 +1,17 @@
1
+ -- Missing Security Headers - HSTS (HIGH)
2
+ -- Pages missing Strict-Transport-Security header
3
+ -- Priority: HIGH
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ status_code,
10
+ depth,
11
+ security_headers_hsts
12
+ FROM pages
13
+ WHERE (security_headers_hsts IS NULL OR security_headers_hsts = '')
14
+ AND status_code = 200
15
+ AND url LIKE 'https://%'
16
+ ORDER BY depth ASC
17
+ LIMIT 100;
@@ -0,0 +1,16 @@
1
+ -- Missing Security Headers - Referrer-Policy (LOW)
2
+ -- Pages missing Referrer-Policy header (privacy protection)
3
+ -- Priority: LOW
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ status_code,
10
+ depth,
11
+ security_headers_referrer
12
+ FROM pages
13
+ WHERE (security_headers_referrer IS NULL OR security_headers_referrer = '')
14
+ AND status_code = 200
15
+ ORDER BY depth ASC
16
+ LIMIT 100;
@@ -0,0 +1,16 @@
1
+ -- Missing Security Headers - X-Frame-Options (MEDIUM)
2
+ -- Pages missing X-Frame-Options header (clickjacking protection)
3
+ -- Priority: MEDIUM
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ status_code,
10
+ depth,
11
+ security_headers_x_frame
12
+ FROM pages
13
+ WHERE (security_headers_x_frame IS NULL OR security_headers_x_frame = '')
14
+ AND status_code = 200
15
+ ORDER BY depth ASC
16
+ LIMIT 100;
@@ -0,0 +1,16 @@
1
+ -- Protocol-Relative Links (LOW)
2
+ -- Links using protocol-relative URLs (//example.com) which can cause mixed content warnings
3
+ -- Priority: LOW
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ link_protocol_relative_count,
10
+ status_code,
11
+ depth
12
+ FROM pages
13
+ WHERE link_protocol_relative_count > 0
14
+ AND status_code = 200
15
+ ORDER BY link_protocol_relative_count DESC
16
+ LIMIT 100;
@@ -0,0 +1,17 @@
1
+ -- Unsafe External Links (MEDIUM)
2
+ -- External links with target="_blank" but missing rel="noopener noreferrer"
3
+ -- Priority: MEDIUM
4
+ -- Category: security
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ link_ext_target_blank_count,
10
+ link_ext_target_blank_no_rel_count,
11
+ status_code,
12
+ depth
13
+ FROM pages
14
+ WHERE link_ext_target_blank_no_rel_count > 0
15
+ AND status_code = 200
16
+ ORDER BY link_ext_target_blank_no_rel_count DESC
17
+ LIMIT 100;
@@ -0,0 +1,20 @@
1
+ -- Canonical Issues (MEDIUM)
2
+ -- Pages where canonical URL differs from actual URL
3
+ -- Priority: MEDIUM
4
+ -- Category: technical
5
+
6
+ SELECT
7
+ url,
8
+ canonical_url,
9
+ title,
10
+ status_code,
11
+ depth
12
+ FROM pages
13
+ WHERE canonical_url IS NOT NULL
14
+ AND canonical_url != ''
15
+ AND canonical_url != url
16
+ -- Ignore trailing slash differences (normalize both URLs)
17
+ AND RTRIM(canonical_url, '/') != RTRIM(url, '/')
18
+ AND status_code = 200
19
+ ORDER BY depth ASC
20
+ LIMIT 100;
@@ -0,0 +1,19 @@
1
+ -- Heading Hierarchy Issues (MEDIUM)
2
+ -- Pages with non-sequential heading structures (h1 -> h3, skipping h2)
3
+ -- Priority: MEDIUM
4
+ -- Category: technical
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ heading_hierarchy,
10
+ heading_sequential_errors,
11
+ heading_count_h1,
12
+ heading_count_h2,
13
+ heading_count_h3
14
+ FROM pages
15
+ WHERE heading_sequential_errors IS NOT NULL
16
+ AND heading_sequential_errors != '[]'
17
+ AND status_code = 200
18
+ ORDER BY depth ASC
19
+ LIMIT 100;
@@ -0,0 +1,16 @@
1
+ -- Non-HTTPS Pages (MEDIUM)
2
+ -- Pages not using HTTPS protocol
3
+ -- Priority: MEDIUM
4
+ -- Category: technical
5
+
6
+ SELECT
7
+ url,
8
+ title,
9
+ status_code,
10
+ depth,
11
+ linked_from
12
+ FROM pages
13
+ WHERE url NOT LIKE 'https://%'
14
+ AND status_code = 200
15
+ ORDER BY depth ASC
16
+ LIMIT 100;
@@ -0,0 +1,21 @@
1
+ -- Orphan Pages (MEDIUM)
2
+ -- Pages not linked from any other internal page
3
+ -- Priority: MEDIUM
4
+ -- Category: technical
5
+
6
+ SELECT
7
+ p.url,
8
+ p.title,
9
+ p.depth,
10
+ p.word_count,
11
+ p.status_code
12
+ FROM pages p
13
+ WHERE p.url NOT IN (
14
+ SELECT DISTINCT target_url
15
+ FROM links
16
+ WHERE is_internal = 1
17
+ )
18
+ AND p.depth > 0
19
+ AND p.status_code = 200
20
+ ORDER BY p.word_count DESC, p.depth ASC
21
+ LIMIT 100;
@@ -0,0 +1,15 @@
1
+ -- Redirect Chains (MEDIUM)
2
+ -- Pages that redirect (3xx status codes)
3
+ -- Priority: MEDIUM
4
+ -- Category: technical
5
+
6
+ SELECT
7
+ url,
8
+ status_code,
9
+ canonical_url,
10
+ depth,
11
+ redirects
12
+ FROM pages
13
+ WHERE status_code >= 300 AND status_code < 400
14
+ ORDER BY status_code ASC, depth ASC
15
+ LIMIT 100;
@@ -16,7 +16,7 @@ export declare class CrawlDatabase {
16
16
  saveLinks(links: LinkData[]): void;
17
17
  getAllLinks(): LinkData[];
18
18
  getLinkCount(): number;
19
- saveError(error: CrawlError): void;
19
+ saveError(crawlId: string, error: CrawlError): void;
20
20
  getAllErrors(crawlId: string): CrawlError[];
21
21
  exportToCsv(outputPath: string): void;
22
22
  private generateCsvFromRows;
@@ -1 +1 @@
1
- {"version":3,"file":"CrawlDatabase.d.ts","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,gBAAgB;IAuIxB,OAAO,CAAC,uBAAuB;IA0H/B,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI;IA4ChF,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA6C1D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAyBvD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IA6F9B,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAUrC,WAAW,IAAI,QAAQ,EAAE;IAQzB,YAAY,IAAI,MAAM;IAQtB,OAAO,CAAC,aAAa;IAuErB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IA6BlC,WAAW,IAAI,QAAQ,EAAE;IAkBzB,YAAY,IAAI,MAAM;IAQtB,SAAS,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI;IAelC,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAa3C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAqCrC,OAAO,CAAC,mBAAmB;IAsB3B,KAAK,IAAI,IAAI;CAGd"}
1
+ {"version":3,"file":"CrawlDatabase.d.ts","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,QAAQ,EACR,QAAQ,EACR,UAAU,EACX,MAAM,mBAAmB,CAAC;AAG3B,qBAAa,aAAa;IACxB,OAAO,CAAC,EAAE,CAAoB;gBAElB,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,gBAAgB;IAuIxB,OAAO,CAAC,uBAAuB;IA0H/B,iBAAiB,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,GAAG,IAAI;IA4ChF,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,IAAI;IA6C1D,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAyBvD,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IA6F9B,aAAa,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAUtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAUrC,WAAW,IAAI,QAAQ,EAAE;IAQzB,YAAY,IAAI,MAAM;IAQtB,OAAO,CAAC,aAAa;IAuErB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IA6BlC,WAAW,IAAI,QAAQ,EAAE;IAkBzB,YAAY,IAAI,MAAM;IAQtB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,IAAI;IAenD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,EAAE;IAa3C,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAqCrC,OAAO,CAAC,mBAAmB;IAsB3B,KAAK,IAAI,IAAI;CAGd"}
@@ -523,12 +523,12 @@ export class CrawlDatabase {
523
523
  `).get();
524
524
  return result.count;
525
525
  }
526
- saveError(error) {
526
+ saveError(crawlId, error) {
527
527
  const stmt = this.db.prepare(`
528
528
  INSERT INTO errors (crawl_id, url, error_type, error_message, timestamp)
529
529
  VALUES (?, ?, ?, ?, ?)
530
530
  `);
531
- stmt.run(error.url, error.url, error.errorType, error.message, error.timestamp);
531
+ stmt.run(crawlId, error.url, error.errorType, error.message, error.timestamp);
532
532
  }
533
533
  getAllErrors(crawlId) {
534
534
  const rows = this.db.prepare(`
@@ -1 +1 @@
1
- {"version":3,"file":"CrawlDatabase.js","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CrawlDatabase.js","sourceRoot":"","sources":["../../src/core/CrawlDatabase.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -8,7 +8,7 @@ import { analyzeSeo } from './tools/analyze-seo.js';
8
8
  import { querySeoData } from './tools/query-seo-data.js';
9
9
  import { listQueries } from './tools/list-queries.js';
10
10
  const SERVER_NAME = 'seo-crawler-mcp';
11
- const SERVER_VERSION = '2.1.0';
11
+ const SERVER_VERSION = '2.1.4';
12
12
  const tools = [
13
13
  {
14
14
  name: 'run_seo_audit',
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@houtini/seo-crawler-mcp",
3
- "version": "2.1.3",
3
+ "version": "2.1.5",
4
4
  "mcpName": "io.github.houtini-ai/seo-crawler-mcp",
5
5
  "description": "Crawl and analyse websites for SEO errors and issues using Crawlee with SQLite storage",
6
6
  "type": "module",
@@ -35,7 +35,7 @@
35
35
  "node": ">=18.0.0"
36
36
  },
37
37
  "scripts": {
38
- "build": "tsc",
38
+ "build": "tsc && node --input-type=commonjs -e \"require('fs').cpSync('src/analyzers/queries','build/analyzers/queries',{recursive:true})\"",
39
39
  "dev": "tsc --watch",
40
40
  "start": "node build/index.js",
41
41
  "test": "npm run build && echo 'Build successful - all checks passed'",
@@ -43,7 +43,7 @@
43
43
  },
44
44
  "dependencies": {
45
45
  "@crawlee/memory-storage": "^3.7.0",
46
- "@modelcontextprotocol/sdk": "^1.0.4",
46
+ "@modelcontextprotocol/sdk": "^1.26.0",
47
47
  "@types/better-sqlite3": "^7.6.13",
48
48
  "better-sqlite3": "^12.6.2",
49
49
  "cheerio": "^1.0.0-rc.12",
package/server.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
- "name": "io.github.houtini-ai/seo-crawler-mcp",
4
- "description": "Crawl and analyse websites for SEO errors using Crawlee with SQLite storage",
5
- "repository": {
6
- "url": "https://github.com/houtini-ai/seo-crawler-mcp",
7
- "source": "github"
8
- },
9
- "version": "2.1.3",
10
- "packages": [
11
- {
12
- "registryType": "npm",
13
- "identifier": "@houtini/seo-crawler-mcp",
14
- "version": "2.1.3",
15
- "transport": {
16
- "type": "stdio"
17
- },
18
- "environmentVariables": [
19
- {
20
- "name": "OUTPUT_DIR",
21
- "description": "Directory where crawl results are saved",
22
- "isRequired": true,
23
- "format": "string",
24
- "isSecret": false
25
- },
26
- {
27
- "name": "DEBUG",
28
- "description": "Enable verbose debug logging (set to 'true' to enable)",
29
- "isRequired": false,
30
- "format": "string",
31
- "isSecret": false
32
- }
33
- ]
34
- }
35
- ]
36
- }
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.houtini-ai/seo-crawler-mcp",
4
+ "description": "Crawl and analyse websites for SEO errors using Crawlee with SQLite storage",
5
+ "repository": {
6
+ "url": "https://github.com/houtini-ai/seo-crawler-mcp",
7
+ "source": "github"
8
+ },
9
+ "version": "2.1.5",
10
+ "packages": [
11
+ {
12
+ "registryType": "npm",
13
+ "identifier": "@houtini/seo-crawler-mcp",
14
+ "version": "2.1.5",
15
+ "transport": {
16
+ "type": "stdio"
17
+ },
18
+ "environmentVariables": [
19
+ {
20
+ "name": "OUTPUT_DIR",
21
+ "description": "Directory where crawl results are saved",
22
+ "isRequired": true,
23
+ "format": "string",
24
+ "isSecret": false
25
+ },
26
+ {
27
+ "name": "DEBUG",
28
+ "description": "Enable verbose debug logging (set to 'true' to enable)",
29
+ "isRequired": false,
30
+ "format": "string",
31
+ "isSecret": false
32
+ }
33
+ ]
34
+ }
35
+ ]
36
+ }
package/houtini-logo.jpg DELETED
Binary file