screaming-frog-mcp 0.1.0__tar.gz

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.
@@ -0,0 +1,9 @@
1
+ # Path to the Screaming Frog CLI executable.
2
+ # macOS default shown below. Adjust for your OS.
3
+ SF_CLI_PATH=/Applications/Screaming Frog SEO Spider.app/Contents/MacOS/ScreamingFrogSEOSpiderLauncher
4
+
5
+ # Linux example:
6
+ # SF_CLI_PATH=/usr/bin/screamingfrogseospider
7
+
8
+ # Windows example:
9
+ # SF_CLI_PATH=C:\Program Files (x86)\Screaming Frog SEO Spider\ScreamingFrogSEOSpiderCli.exe
@@ -0,0 +1,9 @@
1
+ .env
2
+ .venv/
3
+ __pycache__/
4
+ *.pyc
5
+ .DS_Store
6
+ marketing/
7
+ dist/
8
+ build/
9
+ *.egg-info/
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Boaz Sasson
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,207 @@
1
+ Metadata-Version: 2.4
2
+ Name: screaming-frog-mcp
3
+ Version: 0.1.0
4
+ Summary: MCP server for Screaming Frog SEO Spider — crawl sites, export data, and manage crawl storage via AI assistants
5
+ Project-URL: Homepage, https://github.com/bzsasson/screaming-frog-mcp
6
+ Project-URL: Repository, https://github.com/bzsasson/screaming-frog-mcp
7
+ Project-URL: Issues, https://github.com/bzsasson/screaming-frog-mcp/issues
8
+ Author: Boaz Sasson
9
+ License-Expression: MIT
10
+ License-File: LICENSE
11
+ Keywords: crawl,mcp,model-context-protocol,screaming-frog,seo
12
+ Classifier: Development Status :: 4 - Beta
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: License :: OSI Approved :: MIT License
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Internet :: WWW/HTTP :: Site Management
21
+ Requires-Python: >=3.10
22
+ Requires-Dist: mcp>=1.26.0
23
+ Requires-Dist: python-dotenv>=1.0.0
24
+ Description-Content-Type: text/markdown
25
+
26
+ # Screaming Frog SEO Spider MCP Server
27
+
28
+ An MCP (Model Context Protocol) server that gives Claude (or any MCP-compatible client) programmatic access to [Screaming Frog SEO Spider](https://www.screamingfrog.co.uk/seo-spider/) — crawl websites, export crawl data, and manage your crawl storage, all from your AI assistant.
29
+
30
+ ## Prerequisites
31
+
32
+ 1. **Screaming Frog SEO Spider** installed on your machine (tested with v23.x, should work with v16+).
33
+ Download from: https://www.screamingfrog.co.uk/seo-spider/
34
+
35
+ 2. **A valid Screaming Frog license.** The free version has a 500-URL crawl limit. Most MCP features (headless CLI, saving/loading crawls, exports) require a paid license.
36
+
37
+ 3. **Python 3.10+**
38
+
39
+ ## Important: How the Workflow Works
40
+
41
+ Screaming Frog uses an internal database that can only be accessed by one process at a time. This means:
42
+
43
+ > **You must close the Screaming Frog GUI before the MCP server can access crawl data.**
44
+
45
+ The typical workflow is:
46
+
47
+ 1. **Run your crawl** — either through the SF GUI (with all your custom settings, filters, etc.) or via the MCP `crawl_site` tool.
48
+ 2. **Close the Screaming Frog GUI** — the GUI locks the crawl database. The MCP server's headless CLI cannot read or export data while the GUI is running.
49
+ 3. **Use the MCP tools** — once the GUI is closed, you can list crawls, export data, read CSVs, and more through your AI assistant.
50
+
51
+ If you forget to close the GUI, the server will detect it and show a clear error message telling you to quit SF first.
52
+
53
+ ## Setup
54
+
55
+ ### Option A: Install from PyPI (recommended)
56
+
57
+ ```bash
58
+ pip install screaming-frog-mcp
59
+ ```
60
+
61
+ Or run directly with `uvx` (no install needed):
62
+
63
+ ```bash
64
+ uvx screaming-frog-mcp
65
+ ```
66
+
67
+ ### Option B: Clone and install from source
68
+
69
+ ```bash
70
+ git clone https://github.com/bzsasson/screaming-frog-mcp.git
71
+ cd screaming-frog-mcp
72
+ python3 -m venv .venv
73
+ source .venv/bin/activate
74
+ pip install -r requirements.txt
75
+ ```
76
+
77
+ ### Configure the CLI path
78
+
79
+ The default Screaming Frog CLI path works for macOS. If you're on Linux or Windows, set the `SF_CLI_PATH` environment variable:
80
+
81
+ | OS | Default Path |
82
+ |---------|-------------|
83
+ | macOS | `/Applications/Screaming Frog SEO Spider.app/Contents/MacOS/ScreamingFrogSEOSpiderLauncher` |
84
+ | Linux | `/usr/bin/screamingfrogseospider` |
85
+ | Windows | `C:\Program Files (x86)\Screaming Frog SEO Spider\ScreamingFrogSEOSpiderCli.exe` |
86
+
87
+ If you cloned the repo, copy `.env.example` to `.env` and edit it.
88
+
89
+ ### Add to Claude Code
90
+
91
+ If installed via pip/uvx:
92
+
93
+ ```json
94
+ {
95
+ "mcpServers": {
96
+ "screaming-frog": {
97
+ "command": "uvx",
98
+ "args": ["screaming-frog-mcp"],
99
+ "env": {
100
+ "SF_CLI_PATH": "/path/to/ScreamingFrogSEOSpiderLauncher"
101
+ }
102
+ }
103
+ }
104
+ }
105
+ ```
106
+
107
+ If cloned from source:
108
+
109
+ ```json
110
+ {
111
+ "mcpServers": {
112
+ "screaming-frog": {
113
+ "command": "/path/to/screaming-frog-mcp/.venv/bin/python",
114
+ "args": ["/path/to/screaming-frog-mcp/sf_mcp.py"]
115
+ }
116
+ }
117
+ }
118
+ ```
119
+
120
+ ### Add to Claude Desktop
121
+
122
+ Add to your Claude Desktop config (`claude_desktop_config.json`):
123
+
124
+ ```json
125
+ {
126
+ "mcpServers": {
127
+ "screaming-frog": {
128
+ "command": "uvx",
129
+ "args": ["screaming-frog-mcp"],
130
+ "env": {
131
+ "SF_CLI_PATH": "/path/to/ScreamingFrogSEOSpiderLauncher"
132
+ }
133
+ }
134
+ }
135
+ }
136
+ ```
137
+
138
+ ## Available Tools
139
+
140
+ | Tool | Description |
141
+ |------|-------------|
142
+ | `sf_check` | Verify Screaming Frog is installed, check version and license status |
143
+ | `crawl_site` | Start a headless background crawl (see note below) |
144
+ | `crawl_status` | Check progress of a running crawl |
145
+ | `list_crawls` | List all saved crawls with their Database IDs |
146
+ | `export_crawl` | Export crawl data as CSV files (many export options available) |
147
+ | `read_crawl_data` | Read exported CSV data with pagination and filtering |
148
+ | `delete_crawl` | Permanently delete a crawl from the database |
149
+ | `storage_summary` | Show disk usage of SF's crawl storage |
150
+
151
+ ## Usage Examples
152
+
153
+ ### Check installation
154
+
155
+ > "Is Screaming Frog installed and licensed?"
156
+
157
+ The assistant will call `sf_check` and report version/license info.
158
+
159
+ ### Work with existing crawls (recommended flow)
160
+
161
+ For most use cases, **crawl in the Screaming Frog GUI** where you have full control over configuration, JavaScript rendering, crawl scope, custom extraction, etc. Then close the GUI and use the MCP to analyze the results:
162
+
163
+ After you've crawled a site in the Screaming Frog GUI and closed it:
164
+
165
+ > "List my saved crawls"
166
+ > "Export the crawl for example.com"
167
+ > "Show me all pages with missing meta descriptions"
168
+ > "What are the 404 pages?"
169
+
170
+ ### Crawl a site via MCP (optional)
171
+
172
+ > "Crawl https://example.com with a max of 100 URLs"
173
+
174
+ The `crawl_site` tool can kick off headless crawls via CLI. This is useful for quick re-crawls or automated workflows, but note the limitations compared to the GUI:
175
+ - Uses default crawl settings (no custom extraction, JavaScript rendering config, etc.)
176
+ - You can pass a `.seospiderconfig` file to customize settings, but the GUI is easier for complex setups
177
+ - The crawl must finish and save before you can export data
178
+
179
+ ### Export options
180
+
181
+ The server supports all of Screaming Frog's export tabs, bulk exports, and reports. Ask the assistant to read the `screaming-frog://export-reference` resource for the full list, or specify them directly:
182
+
183
+ ```
184
+ export_tabs: "Internal:All,Response Codes:All,Page Titles:All"
185
+ bulk_export: "All Inlinks,All Outlinks"
186
+ save_report: "Crawl Overview"
187
+ ```
188
+
189
+ ## Temp file cleanup
190
+
191
+ Exported CSVs are stored in `~/.cache/sf-mcp/exports/` and are automatically cleaned up after 1 hour.
192
+
193
+ ## Troubleshooting
194
+
195
+ | Problem | Solution |
196
+ |---------|----------|
197
+ | "GUI is already running" error | Quit the Screaming Frog application, then retry |
198
+ | Empty CSV exports (headers only, 0 data rows) | The GUI likely has the database locked — close it and re-export |
199
+ | CLI not found | Check that `SF_CLI_PATH` in `.env` points to the correct executable |
200
+ | Crawl not appearing in `list_crawls` | Make sure you saved the crawl in the GUI (File > Save) before closing |
201
+ | Export times out | Large crawls may need more time — try exporting fewer tabs |
202
+
203
+ ## License
204
+
205
+ MIT
206
+
207
+ <!-- mcp-name: io.github.bzsasson/screaming-frog-mcp -->
@@ -0,0 +1,182 @@
1
+ # Screaming Frog SEO Spider MCP Server
2
+
3
+ An MCP (Model Context Protocol) server that gives Claude (or any MCP-compatible client) programmatic access to [Screaming Frog SEO Spider](https://www.screamingfrog.co.uk/seo-spider/) — crawl websites, export crawl data, and manage your crawl storage, all from your AI assistant.
4
+
5
+ ## Prerequisites
6
+
7
+ 1. **Screaming Frog SEO Spider** installed on your machine (tested with v23.x, should work with v16+).
8
+ Download from: https://www.screamingfrog.co.uk/seo-spider/
9
+
10
+ 2. **A valid Screaming Frog license.** The free version has a 500-URL crawl limit. Most MCP features (headless CLI, saving/loading crawls, exports) require a paid license.
11
+
12
+ 3. **Python 3.10+**
13
+
14
+ ## Important: How the Workflow Works
15
+
16
+ Screaming Frog uses an internal database that can only be accessed by one process at a time. This means:
17
+
18
+ > **You must close the Screaming Frog GUI before the MCP server can access crawl data.**
19
+
20
+ The typical workflow is:
21
+
22
+ 1. **Run your crawl** — either through the SF GUI (with all your custom settings, filters, etc.) or via the MCP `crawl_site` tool.
23
+ 2. **Close the Screaming Frog GUI** — the GUI locks the crawl database. The MCP server's headless CLI cannot read or export data while the GUI is running.
24
+ 3. **Use the MCP tools** — once the GUI is closed, you can list crawls, export data, read CSVs, and more through your AI assistant.
25
+
26
+ If you forget to close the GUI, the server will detect it and show a clear error message telling you to quit SF first.
27
+
28
+ ## Setup
29
+
30
+ ### Option A: Install from PyPI (recommended)
31
+
32
+ ```bash
33
+ pip install screaming-frog-mcp
34
+ ```
35
+
36
+ Or run directly with `uvx` (no install needed):
37
+
38
+ ```bash
39
+ uvx screaming-frog-mcp
40
+ ```
41
+
42
+ ### Option B: Clone and install from source
43
+
44
+ ```bash
45
+ git clone https://github.com/bzsasson/screaming-frog-mcp.git
46
+ cd screaming-frog-mcp
47
+ python3 -m venv .venv
48
+ source .venv/bin/activate
49
+ pip install -r requirements.txt
50
+ ```
51
+
52
+ ### Configure the CLI path
53
+
54
+ The default Screaming Frog CLI path works for macOS. If you're on Linux or Windows, set the `SF_CLI_PATH` environment variable:
55
+
56
+ | OS | Default Path |
57
+ |---------|-------------|
58
+ | macOS | `/Applications/Screaming Frog SEO Spider.app/Contents/MacOS/ScreamingFrogSEOSpiderLauncher` |
59
+ | Linux | `/usr/bin/screamingfrogseospider` |
60
+ | Windows | `C:\Program Files (x86)\Screaming Frog SEO Spider\ScreamingFrogSEOSpiderCli.exe` |
61
+
62
+ If you cloned the repo, copy `.env.example` to `.env` and edit it.
63
+
64
+ ### Add to Claude Code
65
+
66
+ If installed via pip/uvx:
67
+
68
+ ```json
69
+ {
70
+ "mcpServers": {
71
+ "screaming-frog": {
72
+ "command": "uvx",
73
+ "args": ["screaming-frog-mcp"],
74
+ "env": {
75
+ "SF_CLI_PATH": "/path/to/ScreamingFrogSEOSpiderLauncher"
76
+ }
77
+ }
78
+ }
79
+ }
80
+ ```
81
+
82
+ If cloned from source:
83
+
84
+ ```json
85
+ {
86
+ "mcpServers": {
87
+ "screaming-frog": {
88
+ "command": "/path/to/screaming-frog-mcp/.venv/bin/python",
89
+ "args": ["/path/to/screaming-frog-mcp/sf_mcp.py"]
90
+ }
91
+ }
92
+ }
93
+ ```
94
+
95
+ ### Add to Claude Desktop
96
+
97
+ Add to your Claude Desktop config (`claude_desktop_config.json`):
98
+
99
+ ```json
100
+ {
101
+ "mcpServers": {
102
+ "screaming-frog": {
103
+ "command": "uvx",
104
+ "args": ["screaming-frog-mcp"],
105
+ "env": {
106
+ "SF_CLI_PATH": "/path/to/ScreamingFrogSEOSpiderLauncher"
107
+ }
108
+ }
109
+ }
110
+ }
111
+ ```
112
+
113
+ ## Available Tools
114
+
115
+ | Tool | Description |
116
+ |------|-------------|
117
+ | `sf_check` | Verify Screaming Frog is installed, check version and license status |
118
+ | `crawl_site` | Start a headless background crawl (see note below) |
119
+ | `crawl_status` | Check progress of a running crawl |
120
+ | `list_crawls` | List all saved crawls with their Database IDs |
121
+ | `export_crawl` | Export crawl data as CSV files (many export options available) |
122
+ | `read_crawl_data` | Read exported CSV data with pagination and filtering |
123
+ | `delete_crawl` | Permanently delete a crawl from the database |
124
+ | `storage_summary` | Show disk usage of SF's crawl storage |
125
+
126
+ ## Usage Examples
127
+
128
+ ### Check installation
129
+
130
+ > "Is Screaming Frog installed and licensed?"
131
+
132
+ The assistant will call `sf_check` and report version/license info.
133
+
134
+ ### Work with existing crawls (recommended flow)
135
+
136
+ For most use cases, **crawl in the Screaming Frog GUI** where you have full control over configuration, JavaScript rendering, crawl scope, custom extraction, etc. Then close the GUI and use the MCP to analyze the results:
137
+
138
+ After you've crawled a site in the Screaming Frog GUI and closed it:
139
+
140
+ > "List my saved crawls"
141
+ > "Export the crawl for example.com"
142
+ > "Show me all pages with missing meta descriptions"
143
+ > "What are the 404 pages?"
144
+
145
+ ### Crawl a site via MCP (optional)
146
+
147
+ > "Crawl https://example.com with a max of 100 URLs"
148
+
149
+ The `crawl_site` tool can kick off headless crawls via CLI. This is useful for quick re-crawls or automated workflows, but note the limitations compared to the GUI:
150
+ - Uses default crawl settings (no custom extraction, JavaScript rendering config, etc.)
151
+ - You can pass a `.seospiderconfig` file to customize settings, but the GUI is easier for complex setups
152
+ - The crawl must finish and save before you can export data
153
+
154
+ ### Export options
155
+
156
+ The server supports all of Screaming Frog's export tabs, bulk exports, and reports. Ask the assistant to read the `screaming-frog://export-reference` resource for the full list, or specify them directly:
157
+
158
+ ```
159
+ export_tabs: "Internal:All,Response Codes:All,Page Titles:All"
160
+ bulk_export: "All Inlinks,All Outlinks"
161
+ save_report: "Crawl Overview"
162
+ ```
163
+
164
+ ## Temp file cleanup
165
+
166
+ Exported CSVs are stored in `~/.cache/sf-mcp/exports/` and are automatically cleaned up after 1 hour.
167
+
168
+ ## Troubleshooting
169
+
170
+ | Problem | Solution |
171
+ |---------|----------|
172
+ | "GUI is already running" error | Quit the Screaming Frog application, then retry |
173
+ | Empty CSV exports (headers only, 0 data rows) | The GUI likely has the database locked — close it and re-export |
174
+ | CLI not found | Check that `SF_CLI_PATH` in `.env` points to the correct executable |
175
+ | Crawl not appearing in `list_crawls` | Make sure you saved the crawl in the GUI (File > Save) before closing |
176
+ | Export times out | Large crawls may need more time — try exporting fewer tabs |
177
+
178
+ ## License
179
+
180
+ MIT
181
+
182
+ <!-- mcp-name: io.github.bzsasson/screaming-frog-mcp -->
@@ -0,0 +1,39 @@
1
+ [project]
2
+ name = "screaming-frog-mcp"
3
+ version = "0.1.0"
4
+ description = "MCP server for Screaming Frog SEO Spider — crawl sites, export data, and manage crawl storage via AI assistants"
5
+ readme = "README.md"
6
+ license = "MIT"
7
+ requires-python = ">=3.10"
8
+ authors = [{ name = "Boaz Sasson" }]
9
+ keywords = ["mcp", "seo", "screaming-frog", "crawl", "model-context-protocol"]
10
+ classifiers = [
11
+ "Development Status :: 4 - Beta",
12
+ "Intended Audience :: Developers",
13
+ "License :: OSI Approved :: MIT License",
14
+ "Programming Language :: Python :: 3",
15
+ "Programming Language :: Python :: 3.10",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Programming Language :: Python :: 3.13",
19
+ "Topic :: Internet :: WWW/HTTP :: Site Management",
20
+ ]
21
+ dependencies = [
22
+ "mcp>=1.26.0",
23
+ "python-dotenv>=1.0.0",
24
+ ]
25
+
26
+ [project.urls]
27
+ Homepage = "https://github.com/bzsasson/screaming-frog-mcp"
28
+ Repository = "https://github.com/bzsasson/screaming-frog-mcp"
29
+ Issues = "https://github.com/bzsasson/screaming-frog-mcp/issues"
30
+
31
+ [project.scripts]
32
+ screaming-frog-mcp = "screaming_frog_mcp:main"
33
+
34
+ [build-system]
35
+ requires = ["hatchling"]
36
+ build-backend = "hatchling.build"
37
+
38
+ [tool.hatch.build.targets.wheel]
39
+ packages = ["src/screaming_frog_mcp"]
@@ -0,0 +1,2 @@
1
+ mcp>=1.26.0
2
+ python-dotenv>=1.0.0
@@ -0,0 +1,30 @@
1
+ {
2
+ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
+ "name": "io.github.bzsasson/screaming-frog-mcp",
4
+ "title": "Screaming Frog SEO Spider MCP Server",
5
+ "description": "Crawl websites, export SEO data, and manage crawls via Screaming Frog SEO Spider.",
6
+ "version": "0.1.0",
7
+ "repository": {
8
+ "url": "https://github.com/bzsasson/screaming-frog-mcp",
9
+ "source": "github"
10
+ },
11
+ "packages": [
12
+ {
13
+ "registryType": "pypi",
14
+ "registryBaseUrl": "https://pypi.org",
15
+ "identifier": "screaming-frog-mcp",
16
+ "version": "0.1.0",
17
+ "transport": {
18
+ "type": "stdio"
19
+ },
20
+ "environmentVariables": [
21
+ {
22
+ "name": "SF_CLI_PATH",
23
+ "description": "Path to the Screaming Frog SEO Spider CLI executable. Defaults to the standard macOS location.",
24
+ "isRequired": false,
25
+ "isSecret": false
26
+ }
27
+ ]
28
+ }
29
+ ]
30
+ }