powhttp-mcp

MCP server enabling agents to debug HTTP requests better

powhttp-mcp


See it in action

Using /generate_scraper to build a BMW car listing monitor:

https://github.com/user-attachments/assets/be098e9d-d700-491c-ae7f-5afb12732728


Features

  • HTTP Traffic Analysis - Search, inspect, and analyze captured HTTP requests/responses
  • Anti-Bot Detection - Compare browser vs program traffic to identify detection vectors
  • Fingerprinting - Generate TLS (JA3/JA4) and HTTP/2 fingerprints
  • API Mapping - Cluster and catalog API endpoints from captured traffic
  • Flow Tracing - Trace related requests (redirects, dependent calls)
  • Schema Validation - Validate response bodies against Go structs, Zod, or JSON Schema
  • Scraper Generation - Generate PoC Go scrapers from captured traffic

Schema validation in action - correcting data structures for edge cases:

https://github.com/user-attachments/assets/1156c537-70ab-4179-ad4a-c148988ac503


Installation

Install via go install:

go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@latest

Or install a specific version:

go install github.com/usestring/powhttp-mcp/cmd/powhttp-mcp@v1.0.0

Usage

Connecting to Cursor

Add to your .cursor/mcp.json:

{
  "mcpServers": {
    "powhttp": {
      "command": "powhttp-mcp",
      "env": {
        "POWHTTP_BASE_URL": "http://localhost:7777"
      }
    }
  }
}

Connecting to Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "powhttp": {
      "command": "powhttp-mcp",
      "env": {
        "POWHTTP_BASE_URL": "http://localhost:7777"
      }
    }
  }
}

The generated scraper running successfully:

https://github.com/user-attachments/assets/52b30cbf-7c66-40b1-a3fe-9c12d37ece11


MCP Tools

powhttp-mcp provides 12 tools for HTTP traffic analysis:

ToolDescription
powhttp_sessions_listList all sessions with entry counts
powhttp_session_activeGet the currently active session
powhttp_search_entriesSearch entries with filters and free text
powhttp_get_entryGet full details of a specific entry
powhttp_get_tlsGet TLS handshake events for a connection
powhttp_get_http2_streamGet HTTP/2 frame details for a stream
powhttp_fingerprintGenerate HTTP, TLS, and HTTP/2 fingerprints
powhttp_diff_entriesCompare two entries to find detection differences
powhttp_extract_endpointsCluster entries into endpoint groups
powhttp_describe_endpointGenerate detailed endpoint description
powhttp_trace_flowTrace related requests around a seed entry
powhttp_validate_schemaValidate entry bodies against a schema

See internal/mcp/README.md for detailed tool documentation.


Environment Variables

VariableDescriptionDefault
POWHTTP_BASE_URLWhere to find the powhttp API serverhttp://localhost:7777
POWHTTP_PROXY_URLProxy URL used by prompts when generating scrapers and debugginghttp://127.0.0.1:8890
LOG_LEVELHow verbose the logs are: debug, info, warn, errorinfo
LOG_FILEFile to write logs to (empty = print to console)"" (console)
VariableDescriptionDefault
HTTP_CLIENT_TIMEOUT_MSHow long to wait for API responses (milliseconds)10000 (10s)
FETCH_WORKERSHow many entries to fetch in parallel16
ENTRY_CACHE_MAX_ITEMSHow many entries to keep in memory cache512
REFRESH_INTERVAL_MSHow often to check for new entries (milliseconds)2000 (2s)
REFRESH_TIMEOUT_MSMax time for index refresh operation (milliseconds)15000 (15s)
FRESHNESS_THRESHOLD_MSConsider data stale after this many milliseconds500 (0.5s)
VariableDescriptionDefault
TOOL_MAX_BYTES_DEFAULTMax response body size tools return (bytes)2000000 (2MB)
RESOURCE_MAX_BODY_BYTESMax body size for MCP resources (bytes)65536 (64KB)
TLS_MAX_EVENTS_DEFAULTMax TLS handshake events to return200
H2_MAX_EVENTS_DEFAULTMax HTTP/2 frames to return200
BOOTSTRAP_TAIL_LIMITMax entries to load when starting up20000
VariableDescriptionDefault
LOG_MAX_SIZE_MBRotate log when it reaches this size (MB)10
LOG_MAX_BACKUPSKeep this many old log files5
LOG_MAX_AGE_DAYSDelete log files older than this (days)28
LOG_COMPRESSCompress old log files (true/false)true

Development

Prerequisites

  • Go 1.24.5 or later
  • Running powhttp instance

Building

go build ./cmd/powhttp-mcp

Testing

go test ./...

Feature Requests & Bug Reports

Have a feature suggestion or found a bug? We'd love to hear from you!

  • Feature Requests: Open an issue with the enhancement label
  • Bug Reports: Please include steps to reproduce, your environment details, and relevant logs

Contributing

We use squash merges for all pull requests. When creating a PR, ensure the PR title follows Conventional Commits format, as it will become the commit message:

Triggers release:

  • feat: - minor version bump
  • fix: - patch version bump
  • perf: - patch version bump
  • revert: - patch version bump
  • feat!: or BREAKING CHANGE: - major version bump

No release:

  • docs:, chore:, refactor:, test:, style:, build:, ci:

Versioning is automated via release-please.


License

This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.


Acknowledgments

About StringString ( better website coming soon :) ) extracts structured data from any website at scale. We handle all the code and maintenance.

This project was built during an internal hackathon focused on developer experience tooling. Special thanks to:

  • Kashif Ghafoor — For his contributions during the hackathon
  • Florian — Creator of powhttp for implementing the API from a suggestion and being responsive to feedback

Related Projects

Related Servers