# Pipehero — MCP server + skill [**Pipehero**](https://pipehero.app) tunnels your `localhost` to a public URL and captures every webhook, so you can **inspect, replay, and debug** them — including from your AI agent via MCP. > This repo is auto-published from Pipehero's source. It holds the public MCP manifest > and the agent skill. Issues/PRs welcome. - 🌐 Website: https://pipehero.app - 📚 Docs: https://pipehero.app/docs ## Connect the MCP server Let an agent (Claude Code, Cursor, Copilot, Windsurf, Zed, …) list your tunnels, read captured webhooks, and replay them to localhost. ### Remote — recommended (no install, OAuth) ```bash claude mcp add --transport http pipehero https://mcp.pipehero.app/mcp ``` Your client opens the browser to sign in and approve — no token to paste. For CI/headless, pass a token from https://pipehero.app/dashboard/settings: ```bash claude mcp add --transport http pipehero https://mcp.pipehero.app/mcp \ --header "Authorization: Bearer " ``` ### Local — via the CLI ```bash curl -fsSL https://pipehero.app/install | sh pipehero login claude mcp add pipehero -- pipehero mcp ``` Any MCP client works — add it to `.cursor/mcp.json`, `claude_desktop_config.json`, etc.: ```json { "mcpServers": { "pipehero": { "command": "pipehero", "args": ["mcp"] } } } ``` ## Tools | Tool | What it does | |---|---| | `list_tunnels` | Your tunnels and whether each is online. | | `list_requests(subdomain)` | Recent captured webhooks for a tunnel. | | `get_request(subdomain, id)` | Full request + response (headers + body). | | `replay_request(subdomain, id)` | Replay a webhook to your localhost. | | `start_tunnel(name, port)` | Expose a local port on a public URL (local MCP only). | | `stop_tunnel(name)` | Stop a tunnel started with `start_tunnel` (local MCP only). | | `list_api_collections`, `get_api_collection(collection_id)` | Your saved API docs: folders, endpoints, environments (remote MCP, and local from 0.1.14). | | `get_api_endpoint(collection_id, method + path)` | One endpoint in full, with its version and response examples. | | `upsert_api_endpoint(collection_id, method, path, …)` | Create or update an endpoint by route, so docs follow your code. | | `add_api_example(collection_id, method + path, name, status, …)` | Save a response example. | | `delete_api_endpoint(collection_id, method + path)` | Remove an endpoint whose route is gone. | | `import_api_spec(format, content)` / `export_api_collection(collection_id)` | OpenAPI, Postman and curl, both ways. | | `run_api_endpoint(collection_id, method + path, environment)` | Send it and read the real response. | | `save_captured_request(collection_id, tunnel, request_id)` | Turn a real captured request into docs, without credentials. | | `check_api_drift(collection_id, tunnel)` | Compare the docs with real traffic (Pro/Team). | | `list_api_monitors(collection_id)` | Which endpoints are monitored and which are failing, with the last error (Pro/Team). | | `list_api_proposals` | What happened to your proposed changes, on workspaces that review AI changes. | | `get_api_share_link(collection_id, method + path)` | The endpoint's shareable link: a read-only page with its docs, examples and latest run. | | `share_api_endpoint(collection_id, method + path, …)` | Create that link (workspace-only by default), open it to anyone with the link, or invite people by email. | | `share_api_collection(collection_id, …)` | The same for a whole collection: every endpoint, read-only, never its environments. | Because your agent has both the captured webhook and your codebase, it can explain *why* a handler failed — then fix it and replay to confirm. ## Skill Install the skill so your agent knows *when and how* to use Pipehero: ```bash pipehero skill install ``` or copy [`SKILL.md`](./SKILL.md) into `~/.claude/skills/pipehero/SKILL.md`. ## License MIT