MCP Server

Dan Sharp

Posted 17 March, 2026 by in

MCP Server

You can run crawls, analyse, export and manipulate data using the SEO Spider and node.js inside Claude, LM Studio and other AI assistants using the Screaming Frog SEO Spider MCP.

Quick Start

If you want to set up quickly and test, then read on.

  • Ensure you have the latest version (24) of SEO Spider installed. The MCP integration requires it to be in database storage mode (‘File > Settings > Storage Mode’), which is the default.
  • The easiest way is to use Claude Desktop and follow the Claude Desktop Setup instructions below for STDIO mode using the MCP Extension to install it.
  • Connect, then try some examples prompts suggested below, such as starting a crawl or exporting data from an existing crawl.

Introduction

The SEO Spider can operate as an MCP Server, exposing a wide range of crawl data to large language models (LLMs). This includes reports, bulk exports, and other crawl-related datasets.

In addition to data access tools, the server provides two powerful groups of tools:

Node Tools


Name
Purpose

Node script runner tool
Allows the LLM to execute custom Node.js scripts

npm install tool
enables the LLM to install any required Node packages on demand

Note: the Node tools are disabled by default, you will need to enable it in the MCP Server config (‘File > Settings > MCP Server’).

Filesystem Access Tools


Name
Purpose

Read Text File
Read the complete contents of a file from the file system as text

Write Text File
Create a new file or completely overwrite an existing file with new content

List allowed directory
Returns the allowed base directory that this server can access for reading and writing files

List directories
Get a detailed listing of all files and directories in a specified relative path

Create directory
Create a new directory or ensure a directory exists

Because these tools are built in, there is no need to configure additional MCP servers for scripting or filesystem access. This makes the SEO Spider MCP server largely self-contained and easier to manage.

All scripts, tool outputs, and installed packages are stored in a configurable directory, which you can define under ‘Settings > MCP Server’.

The full list of tools available to the LLM is detailed in our MCP API list below.

Running the Server

There are a number of MCP Clients that exist that can use the SEO Spider as an MCP Server. We have setups for two of these:

Claude Desktop works well but can run out of tokens quickly unless you are on the paid plan. LM Studio combined with local models is a good free alternative. We have setup guides for both below.

Claude Desktop Setup

The SEO Spider MCP server can be run in two different modes.

1. STDIO Server

This is the only mode that Claude desktop supports natively. However, you can get it to accept Streamable HTTP Servers which is documented below.

In STDIO mode:

  • The client (i.e. Claude Desktop) launches the Spider in CLI mode. The UI will not be visible to the user, it will run headless.
  • Communication happens via standard input/output streams.
  • The user must explicitly prompt the client to load a crawl.
  • You can get the client to list the most recent crawls or reference an existing database crawl by using its crawl ID, which can be found by right-clicking the crawl in the ‘File > Crawls’ dialog.

2. Streamable HTTP Server

  • The SEO Spider is started in UI mode and all data is visible to the user. The MCP Server can be started and stopped via the MCP top level menu.
  • Actions such as opening a crawl via the MCP will be visible in the UI to the user.
  • The SEO Spider exposes the MCP Server URL.

You can select which method you wish to use based upon the pros and cons above.

If you like seeing the UI and reviewing the data being analysed at the same time as Claude, then Streamable is recommended.

Licencing & Privacy: By configuring an MCP server, you must ensure the software is not accessed or interacted with by anyone other than the licensed user. You are responsible for the privacy of all data sent to, or accessed via the MCP server.

How to Add the SEO Spider as an MCP Server to Claude Desktop

There are two ways to add the SEO Spider as an MCP Server to Claude desktop, depending on whether you wish to use STDIO or Streamable mode.

STDIO Mode Setup

Please ensure you are using version 24 before installing the MCP Extension below – or you will receive an ‘Unexpected non-whitespace character’ error.

To add the SEO Spider as an MCP server to Claude Desktop, you can download our MCP Extension below.

Download SEO Spider MCP Extension

When you have downloaded the MCP extension, open up Claude Desktop, navigate to ‘Settings > Extensions’ and click ‘Advanced Settings’.

MCP Extensions Advanced Settings

Then click on ‘Install Extension’, and select the downloaded ‘spider-mcp.mcpb’ file.

Install MCP Extension

When selected, click ‘Install’.

Accept MCP Extension Install

The SEO Spider MCP will then be installed.

In Claude desktop under ‘Settings > Developer’, the extension should be visible with a message to show it is running.

SEO Spider MCP Extension Installed

Please read our FAQ if you have an ‘Unexpected non-whitespace character error‘ after installing the MCP Extension. You have installed it before the latest version with the MCP!

After configuring, please close Claude. Ensure it’s closed either via the tray icon, or via Task Manager – or it will continue to run in the background.

Then open Claude desktop to use with the SEO Spider MCP.

In this mode, you’re not required to activate the MCP Server in the SEO Spider via ‘File > Settings > MCP Server’.

MCP Server

However, if you wish to enable the Node.js runtime environment you will need to accept it.

This essentially allows the LLM to install any required Node packages on demand and execute custom node.js scripts to manage and manipulate data. As they are built in and self contained, additional servers are not required for scripting or file access.

Node.js Runtime Environment: Enabling this allows the AI to write and run specialised scripts to handle complex data exports and reporting. This uses node.js to excecute JavaScript code and npm to fetch and install libraries. Enabling this allows the execution of arbitrary code on your system. We have attempted to mitigate as many risks as we can, however, only grant this permission if you fully trust the AI client, as malicious scripts could access local data, network resources, or persist beyond the current session.

Streamable HTTP Server Mode Setup

Please ensure you are using version 24 before editing the config file directly – or it will error.

There isn’t an MCP extension for Streamable mode, it requires editing the config file directly.

Open Claude desktop, select ‘Settings > Developer’ and click ‘Edit Config’.

Claude MCP Server

Open the selected file ‘claude_desktop_config.json’ in a text editor.

Claude Desktop Config JSON file

Copy and paste the streamable code below into the ‘claude_desktop_config.json’ file and save it:

{
  "mcpServers": {
    "seospider": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:11435/mcp"
      ]
    }
  }
}

You can replace all the existing code in the claude_desktop_config.json file, if you don’t wish to keep existing MCP, or preferences.

If you wish to add above preferences for example, you will need to add a comma, and delete the start bracket { proceeding preferences. Here is an example:

Claude MCP Server Config Streamable Set Up in Notepad

After configuring, please close Claude.

Ensure it’s closed either via the tray icon, or via Task Manager – or it will continue to run in the background. Then open to use with the SEO Spider MCP.

With this mode you must enable the MCP server functionality by going to ‘File > Settings > MCP Server’ and clicking ‘Start MCP Server’.

MCP Server

You can also select to enable the Node.js runtime environment.

This essentially allows the LLM to install any required Node packages on demand and execute custom node.js scripts to manage and manipulate data. As they are built in and self contained, additional servers are not required for scripting or file access.

Node.js Runtime Environment: Enabling this allows the AI to write and run specialised scripts to handle complex data exports and reporting. This uses node.js to excecute JavaScript code and npm to fetch and install libraries. Enabling this allows the execution of arbitrary code on your system. We have attempted to mitigate as many risks as we can, however, only grant this permission if you fully trust the AI client, as malicious scripts could access local data, network resources, or persist beyond the current session.

When ‘Start MCP Server’ has been activated, a ‘MCP Server Active’ message will appear in the bottom left hand corner of the UI.

Windows note: To terminate the Claude app on Windows, you need to close it from the system tray (bottom right corner of your screen) and not just by closing the application window. Simply closing the window will leave the app running in the background and also the Spider MCP server. To properly close it, right-click the Claude icon in the system tray and select “Quit”.

When you next open Claude, you should be able to interact directly with the SEO Spider via the MCP.

LM Studio Setup

To add the SEO Spider as an MCP server to LM Studio do the following:

  • Select the settings cog bottom right of the LM Studio Window.
  • Select Program tab.
  • Press ‘Install > Edit mcp.json’

Add the “screaming-frog-mcp-server” section to the “mcpServers”:

{
  "mcpServers": {
    "screaming-frog-mcp-server": {
      "url": "http://localhost:11435/mcp"
    }
  }
}

Hardware Considerations For Local Models

Local model performance depends heavily on your hardware. For example:

  • A MacBook Pro with 64 GB unified memory can run models up to around 40GB.
  • Systems with smaller GPUs or less memory may require experimentation to find a suitable model.

In general:

  • Claude will perform better than a local model.
  • Larger local models perform better than smaller local models, especially for complex prompts.
  • Thinking/reasoning models tend to give higher-quality results.
  • Models must support tool calling to work with the MCP server.

Security Considerations

Allowing LLMs to run arbitrary scripts introduces inherent security risks but at the same time unlocks great power.

We have attempted to mitigate as many risks as we can, however, only grant permission if you fully trust the LLM.

Context Window and Data Volume

It is easy for an LLM to exceed its context window when generating large reports or working with extensive crawl data. This was a key reason for adding the ability of the LLM to:

  • Save reports directly to files.
  • Generate Node.js scripts to process data externally.

In general, it is best to start a new chat for every job you want to do to save accumulating redundant conversations in the context window.

Evolving Ecosystem and Feedback

The MCP ecosystem is evolving rapidly. The current set of tools represents an initial attempt to identify what might be useful, but real-world testing will show if there are limitations.

As more users begin integrating the SEO Spider MCP Server into agentic workflows, we expect that:

  • New requirements will emerge.
  • Existing tools will need refinement.
  • Additional capabilities will likely be requested.

We look forward to user suggestions and feedback as to how we can improve the SEO Spider MCP.

Example Prompts

At the outset, it is worth reiterating our stance on AI – We do not recommend using AI to replace an experienced SEO professional.

We recommend using AI to improve efficiency of tasks and workflows like any other tool.

An experienced SEO professional should always analyse, review and interpret crawl data into appropriate prioritised actions relevant to each unique business, website and objectives.

Here are some examples for prompts.


Prompt

Crawl www.example.com with Screaming Frog and summarise the top issues found in the crawl by priority.

Crawl www.example.com with Screaming Frog, analyse the top issues identified from the Issues Overview report, consider the priorities and those in line with current technical SEO standards and create a comprehensive report detailing all issues identified in HTML/Word using any relevant bulk exports.

Bulk Export the client error broken links, and combine this against the Internal tab export considering Google Analytics Sessions, Search Console Clicks and Unique Inlinks to prioritise fixes.

Open up the last two crawls to www.example.com, compare the top issues, and summarise the most important items that have changed.

Export all images over 100kb and using this file generate an HTML page that shows all of these URLs in a grid view. Show the link to each image underneath the image, a title and a short paragraph describing to a user what the purpose of the page is. Open this HTML page in a browser.

Generate a 'Redirect Chains' report and help me visualise the redirect chains - highlighting any with a final destination URL as non-indexable.

Bulk Export all non-200 response codes with inlinks as a single CSV file.

Run an internal link equity flow analysis using my existing Screaming Frog crawl named 'example'. The crawl already has ahrefs metrics integrated as columns, including URL Rating, Backlinks and Referring Domains. Load the crawl, build the internal link graph, compute weighted internal PageRank, aggregate to sections, and create an interactive visual showing the flow between them.

Export the Internal SEO element 'HTML' filter to the file all_urls.json, only export the 'Address' and 'Unique Inlinks' fields. Process this file (creating a node script if needed) to extract the top 20 URLs with the most Inlinks and save this file as top_20_inlinks. Using this file generate a bar chart of the top 20 image URLs with the most inlinks. You can use a node script to generate an HTML page that can show the bar chart

Export to the file 'co2.csv' all of the HTML URLs from the Internal SEO element. Only show the Address and CO2 (mg) field for the export. Process this file using a script to extract the top X URLs with the highest CO2 (mg) values.

Export all of the URLs from the Internal SEO Element and store in internal.csv. Read this file and show me the first X URLs and associated data.

Export the HTML URLs from the Internal SEO element to the file: internal_all.json. Export only the Address and Status Code fields.

Show me the image SEO element URLs that are missing size attributes.

API

This is how the LLM interacts with the SEO Spider. Some AI software, such as LM Studio, allows you to see the tool calls as they happen. Thinking models will show the thinking output allowing you to see the reasoning about which tool was called to achieve the prompt’s goal. Monitoring this is a good way to see if the Spider is supplying expected descriptions and error messages to the LLM.

sf_list_crawls

Retrieves a list of recent web crawl jobs, ordered chronologically with the most recent first. By default, it returns the 10 latest crawls, providing a snapshot of recent activity and status.


Param
Type
Req
Description

limit
integer
no
The number of recent crawls to return. Defaults to 10

sf_load_crawl

Loads a crawl into the SEO Spider application


Param
Type
Req
Description

crawl_id
string
yes
The crawl id

sf_export_crawl

Export the currently loaded crawl


Param
Type
Req
Description

crawl_id
string
yes
File path (relative to the allowed base directory) to export the crawl to

sf_crawl

Starts a crawl with optional config


Param
Type
Req
Description

crawl_url
string
yes
Start URL to crawl from

config_path
string
no
Optional path to configuration file

project_name
string
no
Optional path to configuration file

crawl_name
string
no
Optional crawl name for the crawl

sf_pause_crawl

Pauses a running crawl


Param
Type
Req
Description

sf_resume_crawl

Resumes a paused crawl


Param
Type
Req
Description

sf_clear_crawl

Clear a paused crawl


Param
Type
Req
Description

sf_crawl_progress

Get the progress of a running crawl


Param
Type
Req
Description

sf_generate_report

Generates a report for the requested category. Use the sf_list_available_reports tool to get a list of all available reports.


Param
Type
Req
Description

category
string
yes
Colon delimited report category. Use 'Category:Subcategory' format for nested reports

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

data_fields
array
no
The data fields to export. If empty all available data fields will be exported

export_type
string
no
Format of export. The default is NDJSON Enums: CSV, NDJSON

sf_generate_bulk_export

Generates a bulk export for the requested category. Use the sf_list_available_bulk_exports tool to get a list of all available bulk exports.


Param
Type
Req
Description

category
string
yes
Colon delimited report category. Use 'Category:Subcategory' format for nested reports

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

data_fields
array
no
The data fields to export. If empty all available data fields will be exported

export_type
string
no
Format of export. The default is NDJSON
Enums: CSV, NDJSON

sf_bulk_export_page_content

Bulk-exports page content for all crawled HTML URLs in NDJSON format


Param
Type
Req
Description

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

page_content_type
string
yes
export visible text or raw html content of page
Enums: RAW_HTML, VISIBLE_TEXT

sf_export_seo_element_urls

Export URLs and associated data for a specific SEO element name and filter. The export format is NDJSON. Fields with value null mean the information is unavailable. Do not guess or infer missing values. Call the sf_list_available_filters_for_seo_element tool to get the list of available filter names


Param
Type
Req
Description

seo_element_name
string
yes
SEO Element name Enums: JavaScript, H1, H2, Internal, External, AMP, Canonicals, Content, Custom Extraction, Custom Search, Custom JavaScript, Directives, Analytics, Search Console, Hreflang, Images, Link Metrics, Meta Description, Meta Keywords, PageSpeed, Pagination, Response Codes, Security, Sitemaps, Structured Data, Page Titles, URL, Change Detection, Links, Validation, Mobile, AI, Accessibility

filter_name
string
yes
The filter name

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

page_content_type
string
yes
export visible text or raw html content of page
Enums: RAW_HTML, VISIBLE_TEXT

segment_name
string
no
Optional segment name. If omitted, will export all segments

data_fields
array
no
The data fields to export. If empty all available data fields will be exported

start_index
integer
no
Optional start index of URLs to export. Defaults to 0

max_rows
integer
no
Optional maximum number of URLs to export. If omitted, all rows are exported

sf_export_embeddings

Generates a CSV file with the URL and embeddings


Param
Type
Req
Description

file_path
string
yes
File path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

sf_get_url_screenshot

Get the stored screenshot of the web page for the URL. If a file path is supplied will save the image to that file. If no file path is supplied will return the base64 encoded image string.


Param
Type
Req
Description

url
string
yes
The URL to get the screenshot for

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

sf_url_info

Generates a JSON report with information on the supplied URL


Param
Type
Req
Description

url
string
yes
The URL to get information on

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

sf_url_content

Get the content of a specific URL in the loaded crawl

  • If the URL is an image, generates base64 encoded image content.
  • If the URL has HTML content type, generates the text content of the URL.

Param
Type
Req
Description

url
string
yes
The URL

show_visible_content_for_html_url
boolean
yes
Optional flag to return the visible content of the HTML page. Otherwise the HTML page content is returned

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

sf_url_links

Lists all of the URL inlinks or outlinks depending on the links_direction argument.


Param
Type
Req
Description

url
string
yes
The URL to get links for

links_direction
string
yes
Allowed: inlinks, outlinks, unique_outlinks

links_category
string
yes
The category of link. Allowed: Hyperlink, JavaScript, CSS, Image, SWF, HTML Canonical, HTTP Canonical, HTML Rel PRev, HTTP Rel PRe, HTML Rel Next, HTTP Rel Next, HTTP Hreflang, HTML Hreflang, Sitemap Hreflang, HTTP Redirect, HSTS Redirect, JavaScript Redirect, Meta Refresh, Redirect, HTTP Refresh Redirect, XML Sitemap, AMPHTML, Mobile Alternate, Iframe, MISC, PDF, Video, Audio, Font

file_path
string
no
Optional file path (relative to the allowed base directory) to write the content. If omitted, returns the content as a string.

sf_open_url_in_browser

Opens the URL or absolute file path in an external browser


Param
Type
Req
Description

url
string
yes
The destination to open in the web browser. This can be a standard web address (e.g., https://google.com) or a local file path relative to the allowed base directory.

sf_list_available_reports

Lists all available reports


Param
Type
Req
Description

sf_list_available_bulk_exports

Lists all available bulk exports


Param
Type
Req
Description

sf_list_available_filters_for_seo_element

List the available filters for the supplied seo element name


Param
Type
Req
Description

seo_element_name
string
yes
SEO Element name

sf_list_available_data_fields_for_seo_element_and_filter

List the available data fields for the supplied seo element name and filter type


Param
Type
Req
Description

seo_element_name
string
yes
SEO Element name

filter_name
string
yes
Filter name

sf_run_node_js_script

Runs the node.js script with the supplied optional arguments


Param
Type
Req
Description

script_path
string
yes
Path to the Node.js script file, relative to the allowed base directory

args
array
no
Optional arguments passed to the node script. Arguments must not start with a dash (-). Scripts should treat these as untrusted input.

sf_npm_install

Executes npm install to install a specific package.


Param
Type
Req
Description

dependency
string
yes
Node dependency to install

sf_read_text_file

Read the contents of a text file.


Param
Type
Req
Description

path
string
yes
Path to the text file to read, relative to the allowed base directory

skip
integer
no
Start reading the text files after first skipping the supplied number of lines

limit
integer
no
Limit the number of lines read

sf_write_text_file

Writes UTF-8 content to a text file. Caution, will overwrite existing files without warning


Param
Type
Req
Description

path
string
yes
Path where the text file will be written, relative to the allowed base directory

content
string
no
The text content to write to file

sf_list_allowed_base_directory

Returns the allowed base directory that this server can access for reading and writing files. Subdirectories within this directory are also accessible. Use this to understand which directory and its nested paths are available before trying to access files.


Param
Type
Req
Description

sf_list_directories

Get a detailed listing of all files and directories in a specified relative path. Results clearly distinguish between files and directories with [FILE] and [DIR] prefixes. This tool is essential for understanding directory structure and finding specific files within a directory. Only works within allowed directories.


Param
Type
Req
Description

path
string
yes
Directory path to list, relative to the allowed base directory. Use '.' to list the allowed base directory itself.

sf_create_directory

Create a new directory or ensure a directory exists. Can create multiple nested directories in one operation. If the directory already exists, this operation will succeed silently. Perfect for setting up directory structures for projects or ensuring required paths exist. Only works within allowed directories.


Param
Type
Req
Description

path
string
yes
Path to the directory to create, relative to the allowed base directory

Dan Sharp is founder & Director of Screaming Frog. He has developed search strategies for a variety of clients from international brands to small and medium-sized businesses and designed and managed the build of the innovative SEO Spider software.

Comments are closed.

Back to top