Back to Articles

Connecting Burp Suite to Claude: PortSwigger's MCP Server Extension Explained

[ View on GitHub ]

Connecting Burp Suite to Claude: PortSwigger’s MCP Server Extension Explained

Hook

What if you could connect Claude to your Burp Suite security testing workflow through a standardized protocol? PortSwigger’s MCP server extension enables this integration by implementing the Model Context Protocol directly within Burp Suite.

Context

Security professionals using Burp Suite for web application security testing now have a way to integrate it with AI assistants through the Model Context Protocol (MCP). PortSwigger developed an MCP server extension that runs directly within Burp Suite, allowing MCP clients to interact with Burp’s capabilities programmatically.

The challenge was bridging two fundamentally different architectures—Burp’s persistent desktop application model and Claude Desktop’s stdio-based MCP client expectations. Claude Desktop only supports stdio-based MCP servers (programs it can spawn and communicate with through standard input/output), while Burp Suite is a long-running desktop application better suited to exposing an HTTP-based endpoint.

Technical Insight

The extension’s architecture solves a fundamental incompatibility problem through a dual-server design. The primary component is a Kotlin-based Burp extension that registers with Burp’s plugin system and launches an SSE (Server-Sent Events) MCP server on localhost:9876 by default. The secondary component is a packaged stdio proxy server that acts as a protocol translator—when Claude Desktop spawns the proxy, it communicates via stdio as expected, while the proxy forwards requests to Burp’s SSE server over HTTP.

Tool definitions leverage Kotlin’s type system for compile-time safety. According to the README, tools are defined as serializable data classes with required parameters. The tool name is auto-derived from the parameters class name, and tools can return strings or richer PromptMessageContents to provide data back to the LLM. Here’s the pattern described in the README:

// Tools are defined as serializable data classes
// Tool name is auto-derived from the parameter class name
data class ExampleToolParams(
    val requiredParam: String,
    val optionalParam: String? = null
) : Serializable

// Extend Paginated interface for auto-pagination support
data class PaginatedToolParams(
    val page: Int = 0,
    val pageSize: Int = 50
) : Serializable, Paginated

This approach means adding new MCP tools requires defining the parameter class with appropriate annotations and implementing the logic using Burp’s API—the framework handles serialization, validation, and protocol translation.

The extension includes an installer that can configure Claude Desktop automatically. Rather than requiring manual JSON editing, the installer extracts the stdio proxy server from the extension’s resources and writes configuration to Claude Desktop’s config file (on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json). The installer configures Claude to use the Java executable packaged with Burp to run the proxy JAR, pointing it at the Burp MCP server URL.

Pagination support through the Paginated interface addresses constraints when working with large datasets. Tools that extend this interface automatically expose page and pageSize parameters, allowing clients to request results incrementally rather than overwhelming token limits with thousands of findings at once.

The configuration UI in Burp’s MCP tab provides runtime control. The Enabled checkbox toggles the MCP server on/off. The Enable tools that can edit your config checkbox gates access to tools that can modify Burp’s configuration files—an explicit opt-in that balances flexibility with safety concerns about AI systems modifying security tool configurations.

Gotcha

The extension has system PATH requirements that create installation friction. Both java and jar commands must be executable from PATH for the Gradle build process. The README requires users to verify this with java --version and jar --version, which pushes complexity onto users that some other Burp extensions avoid.

The README focuses exclusively on Claude Desktop configuration and provides Claude-specific installation instructions. While the SSE server endpoint could potentially work with other MCP clients that support Server-Sent Events, the documentation doesn’t cover this scenario. Users wanting to connect other MCP clients would need to experiment with the SSE endpoint (available at http://127.0.0.1:9876 or http://127.0.0.1:9876/sse depending on client) or manually configure the stdio proxy.

The security implications of configuration editing tools deserve consideration. When the Enable tools that can edit your config option is enabled, connected MCP clients can modify Burp’s configuration files. While this is an explicit opt-in, the README doesn’t document which specific tools are gated by this setting or provide guidance on appropriate use cases versus risk scenarios. Users must evaluate whether granting configuration editing capabilities aligns with their security policies.

Verdict

Use this extension if you’re working with Burp Suite and want to integrate it with MCP clients, particularly Claude Desktop for which setup is documented. The bundled proxy server and installer reduce setup complexity. The extension is most valuable if you regularly work with Burp Suite data and would benefit from programmatic access through the MCP protocol. Consider carefully whether to enable configuration editing tools, as this grants the connected MCP client ability to modify Burp’s configuration files. If you’re using MCP clients other than Claude Desktop, be prepared to configure the connection manually using either the SSE endpoint or the stdio proxy, as the documentation focuses on Claude Desktop setup.

// QUOTABLE

What if you could connect Claude to your Burp Suite security testing workflow through a standardized protocol? PortSwigger's MCP server extension enables this integration by implementing the Model ...

[ Tweet This ]
// ADD TO YOUR README
[![Featured on Starlog](https://starlog.is/api/badge/developer-tools/portswigger-mcp-server.svg)](https://starlog.is/api/badge-click/developer-tools/portswigger-mcp-server)