Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The usual fix is to make sure Burp Suite is running with the official MCP extension loaded and enabled, then make the MCP client use the same host and port that Burp is actually listening on. PortSwigger documents http://127.0.0.1:9876 as the default endpoint. If you use the packaged stdio proxy instead, the client must be able to execute Java and the proxy JAR through absolute paths.

Work through the checks below in order. They separate process-spawn errors, endpoint refusal, handshake failures and client configuration mistakes instead of changing several variables at once.

Fix the attachment failure in the right order

  1. Start Burp Suite. The MCP server is provided by the Burp extension, so a client cannot attach while Burp is closed.
  2. Open Burp’s Extensions area. Confirm that the PortSwigger MCP extension is loaded and that Burp shows no extension error.
  3. Open the extension’s MCP tab. Enable the server and note the configured host and port. Use the displayed values rather than assuming the default if you changed them.
  4. Probe the endpoint locally. From the same computer, connect to the configured loopback URL. A refusal means the extension is not listening, the port is wrong, or another local process or firewall is interfering.
  5. Check the client transport. For SSE, use the exact URL shown by Burp. For stdio, verify the executable command and every argument, including the --sse-url value.
  6. Restart the MCP client completely. Quit the desktop application, not just the conversation or configuration view, and launch it again after edits.

After reconnecting, verify that the Burp tools are visible before testing a request. If the server still disappears, use the error-specific branches below.

What “Could not attach” actually means

The message is a client-side summary, not a diagnosis. The failure normally falls into one of four categories:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • The process cannot be spawned. The client cannot find Java, the proxy JAR or another command in its configured path.
  • The process exits before MCP initialization. A Java exception, missing dependency or startup error closes the transport before the handshake completes.
  • The client targets the wrong endpoint. The host or port in the client does not match Burp’s current MCP setting.
  • The Burp extension is disabled or not listening. Burp may be open while the extension remains unloaded or its MCP server is turned off.

Logs often show a sequence such as Failed to spawn process: No such file or directory, followed by transport closure and disconnection. In that case, changing the URL will not help until the command runs successfully outside the client.

Verify Burp and the official extension

Confirm the extension is loaded

In Burp, open the Extensions area and select the PortSwigger MCP extension. A load error, Java exception or missing dependency must be fixed before any AI client can connect. The extension must remain loaded while the client is in use.

Enable the MCP server and record its address

In the extension’s MCP tab, enable the server and copy the host and port shown in its advanced settings. The official implementation uses a local SSE server and documents http://127.0.0.1:9876 by default. A changed port is valid, but every client must use the changed value.

Probe the endpoint before debugging the client

Testing the listener directly tells you whether the problem is inside Burp or inside the MCP client. Run this on the same machine as Burp, replacing the URL only if the extension displays a different one:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -i --max-time 5 http://127.0.0.1:9876

An immediate Connection refused indicates that nothing is accepting connections at that address. Start or enable the extension, correct the port, and check for a local process conflict or firewall rule. An SSE endpoint may keep the connection open or return a protocol-specific status; the important distinction is whether a listener can be reached at all.

Do not mix settings from a third-party Burp MCP implementation with PortSwigger’s extension. One independent implementation uses a different default port, 9877, and its probe and configuration must be followed separately.

Choose the correct MCP transport

Transport How it starts Main failure surface What to verify
SSE The client connects directly to Burp’s local HTTP/SSE URL. Wrong host or port, disabled listener, refusal or local connectivity problem. Burp’s displayed URL and a successful local probe.
Packaged stdio proxy The client spawns a local Java process, which proxies to Burp’s SSE URL. Missing executable, incorrect JAR path, bad arguments or early process exit. Absolute Java and JAR paths, a valid --sse-url, and a command that runs in a terminal.

Configure an SSE connection

Use the client’s documented SSE field and enter the exact URL from Burp. Client schemas differ, so treat the following as a shape to adapt rather than a universal key name:

{
  "mcpServers": {
    "burp": {
      "url": "http://127.0.0.1:9876"
    }
  }
}

Save the file, validate that it is legal JSON, and fully restart the client. If Burp is configured for another port, change the URL in the same edit; do not leave one client pointing at 9876 while Burp listens elsewhere.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configure the packaged stdio proxy

The official repository documents a packaged proxy that accepts the Burp SSE URL through --sse-url. Use absolute paths for both Java and the proxy JAR. For example, if your installed files are in /opt/burp-mcp:

{
  "mcpServers": {
    "burp": {
      "command": "/usr/bin/java",
      "args": [
        "-jar",
        "/opt/burp-mcp/burp-mcp-proxy.jar",
        "--sse-url",
        "http://127.0.0.1:9876"
      ]
    }
  }
}

Replace those example paths with the real locations on your machine. Relative paths, shell aliases and commands that work only in an interactive terminal frequently fail in desktop clients because they inherit a narrower environment.

Run the stdio command outside the MCP client

Manual execution isolates path and runtime problems. With Burp running and its MCP server enabled, execute the same command shown in the client configuration:

/usr/bin/java -jar /opt/burp-mcp/burp-mcp-proxy.jar --sse-url http://127.0.0.1:9876
  • If the shell reports that Java or the JAR cannot be found, correct the path or install the missing runtime before reopening the client.
  • If Java starts and then exits, read the terminal’s stderr output and Burp’s extension output for the exception or dependency failure.
  • If the command stays running, stop it and let the MCP client launch it; the successful manual start proves that the executable and arguments are viable.

Do not add a shell wrapper unless the client specifically requires one. A wrapper introduces another quoting and path layer that can hide the original error.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Read both layers of logs

MCP client log

Look for the first event in the sequence, not only the final “disconnected” line. Spawn errors identify command and path problems; handshake or timeout messages indicate that a process started but did not complete MCP initialization; transport-close messages often mean that the process exited unexpectedly.

Per-server and Burp output

Open the per-server log if the client provides one, then inspect Burp’s extension output. Java exceptions, dependency failures and extension startup errors appear there even when the client reports only a generic attachment failure. Keep the endpoint, command, arguments and the first stack trace together when troubleshooting.

Use this decision tree

Observed message or symptom Likely cause Next action
Failed to spawn process or No such file or directory The configured executable or JAR is missing or unreachable. Use absolute paths, confirm Java is installed, and run the exact command manually.
Connection refused at 127.0.0.1:9876 Burp is not listening there, the extension is disabled, the port changed, or a local conflict exists. Enable the MCP server, copy its actual port, probe it locally and check for a conflicting process or firewall.
Server starts, then disconnects The spawned process exits during initialization or the extension throws an exception. Inspect stderr and Burp extension output, fix the first error, then restart the client.
Tools do not appear after editing JSON Invalid JSON, stale client state or a different installed command is being launched. Validate the file, compare it with the terminal command and completely restart the client.
Only one MCP client fails That application’s environment or path resolution differs from your terminal. Use absolute paths and compare the failing client’s configured command with a direct invocation.

Common edge cases

Burp uses a non-default port

The documented 9876 value is a default, not a requirement. If you changed the advanced setting, update the SSE URL in every client and in the stdio proxy’s --sse-url argument. Probe the new address before restarting clients.

A port is occupied by another process

A listener on the expected port is not proof that it is Burp. If the probe returns an unexpected service or Burp cannot bind the port, identify the conflicting local process, stop it when appropriate, or select an available port in the extension and update the client.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Configuration looks correct but nothing changed

Desktop clients may cache server processes. Quit the application completely, verify that no old client process remains, and relaunch it. Recheck the JSON after every edit; one missing comma or quote can prevent the server definition from loading.

Burp was upgraded or the extension was reloaded

Compatibility problems can appear after an upgrade. Confirm that the extension loads without an error, update Burp when compatibility is in doubt, enable the MCP server again if the extension reset its settings, and then perform a clean client restart.

Final verification checklist

  • Burp Suite is running.
  • The official MCP extension is loaded without an error.
  • The MCP server is enabled in the extension’s MCP tab.
  • The client URL matches Burp’s current host and port.
  • Any stdio command uses executable absolute paths and the correct --sse-url.
  • The command succeeds when run manually.
  • The MCP client was fully quit and relaunched.
  • The Burp tools appear before you attempt an operation.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your immediate goal is to capture a clean image of a web page while documenting or testing a Burp workflow, ScreenshotNeo provides a direct website screenshot API instead of requiring a local browser automation setup. A single GET request returns PNG, JPEG or WebP, and the service can also produce PDFs.

Use the API documentation at https://screenshotneo.com/docs/ for all parameters. This cURL request is runnable as written after replacing the access key:

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

Python equivalent:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

Node.js equivalent:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Before capture, ScreenshotNeo can accept cookie or consent banners and remove more than 60 known consent platforms, newsletter popups and chat widgets; each step can be disabled. Bot checks, CAPTCHAs, blank pages, timeouts, failed loads and cache hits are not billed, and response headers identify the page verdict and whether the request was billed. Its MCP server offers take_screenshot, get_page_info and capture_pdf tools for Claude, Cursor and other MCP clients.

Plan Included shots per month Price
Free 1,000 No card required
Starter 3,000 $5
Growth 15,000 $15
Pro 60,000 $39
Scale 250,000 $99
Business 1,000,000 $249

Yearly billing gives two months free, and every feature is included on every plan. Create a free ScreenshotNeo account to get 1,000 screenshots a month with no card.

Frequently Asked Questions

How can I report this failure so someone else can reproduce it?

Include Burp’s configured host and port, whether the extension is enabled, the exact client transport, the complete command and arguments (with secrets removed), the local probe result, and the first error from both the client and Burp logs.

Is a successful HTTP probe enough to prove MCP is healthy?

No. It proves that something is reachable at the address. The client must still complete the MCP initialization handshake and expose the expected tools; a process that exits immediately can leave the endpoint reachable briefly while attachment still fails.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can I use the SSE URL and stdio proxy at the same time?

Yes, they are separate connection paths to the same Burp server. Configure each client deliberately and avoid troubleshooting one path with the executable assumptions of the other.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.