@webhooks-cc/mcp 0.3.1 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +126 -38
- package/dist/bin/mcp.js +818 -106
- package/dist/index.d.mts +7 -3
- package/dist/index.d.ts +7 -3
- package/dist/index.js +822 -106
- package/dist/index.mjs +828 -105
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
# @webhooks-cc/mcp
|
|
2
2
|
|
|
3
|
-
MCP server for [webhooks.cc](https://webhooks.cc).
|
|
3
|
+
MCP server for [webhooks.cc](https://webhooks.cc). It gives coding agents direct access to webhook testing workflows: create endpoints, send signed test webhooks, inspect captures, compare attempts, verify signatures, and read recent webhook context through MCP resources.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
It works with Claude Code, Cursor, VS Code, Codex, Windsurf, and Claude Desktop.
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
9
|
+
The server reads `WHK_API_KEY` from the environment. It also supports:
|
|
10
|
+
|
|
11
|
+
- `WHK_BASE_URL` for a custom API base URL
|
|
12
|
+
- `WHK_WEBHOOK_URL` for a custom receiver base URL
|
|
13
|
+
|
|
9
14
|
### One-click
|
|
10
15
|
|
|
11
|
-
- **Cursor**: [Add to Cursor](https://cursor.com/en/install-mcp?name=webhooks-cc&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB3ZWJob29rcy1jYy9tY3AiXSwiZW52Ijp7IldIS19BUElfS0VZIjoid2hjY18uLi4ifX0=)
|
|
12
|
-
- **VS Code**: [Add to VS Code](https://insiders.vscode.dev/redirect/mcp/install?name=webhooks-cc&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40webhooks-cc%2Fmcp%22%5D%2C%22env%22%3A%7B%22WHK_API_KEY%22%3A%22%24%7Binput%3Awhk_api_key%7D%22%7D%7D&inputs=%5B%7B%22id%22%3A%22whk_api_key%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22webhooks.cc%20API%20key%20%28get%20yours%20at%20webhooks.cc%2Faccount%29%22%2C%22password%22%3Atrue%7D%5D)
|
|
16
|
+
- **Cursor**: [Add to Cursor](https://cursor.com/en/install-mcp?name=webhooks-cc&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkB3ZWJob29rcy1jYy9tY3AiXSwiZW52Ijp7IldIS19BUElfS0VZIjoid2hjY18uLi4ifX0=)
|
|
17
|
+
- **VS Code**: [Add to VS Code](https://insiders.vscode.dev/redirect/mcp/install?name=webhooks-cc&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40webhooks-cc%2Fmcp%22%5D%2C%22env%22%3A%7B%22WHK_API_KEY%22%3A%22%24%7Binput%3Awhk_api_key%7D%22%7D%7D&inputs=%5B%7B%22id%22%3A%22whk_api_key%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22webhooks.cc%20API%20key%20%28get%20yours%20at%20webhooks.cc%2Faccount%29%22%2C%22password%22%3Atrue%7D%5D)
|
|
13
18
|
|
|
14
19
|
### CLI
|
|
15
20
|
|
|
@@ -17,15 +22,15 @@ Works with Claude Code, Cursor, VS Code, Codex, Windsurf, and Claude Desktop.
|
|
|
17
22
|
# Claude Code
|
|
18
23
|
claude mcp add -s user --transport stdio webhooks-cc -e WHK_API_KEY=whcc_... -- npx -y @webhooks-cc/mcp
|
|
19
24
|
|
|
25
|
+
# OpenAI Codex
|
|
26
|
+
codex mcp add webhooks-cc -e WHK_API_KEY=whcc_... -- npx -y @webhooks-cc/mcp
|
|
27
|
+
|
|
20
28
|
# Cursor
|
|
21
29
|
npx @webhooks-cc/mcp setup cursor --api-key whcc_...
|
|
22
30
|
|
|
23
31
|
# VS Code
|
|
24
32
|
npx @webhooks-cc/mcp setup vscode --api-key whcc_...
|
|
25
33
|
|
|
26
|
-
# OpenAI Codex
|
|
27
|
-
codex mcp add webhooks-cc -e WHK_API_KEY=whcc_... -- npx -y @webhooks-cc/mcp
|
|
28
|
-
|
|
29
34
|
# Windsurf
|
|
30
35
|
npx @webhooks-cc/mcp setup windsurf --api-key whcc_...
|
|
31
36
|
|
|
@@ -33,9 +38,7 @@ npx @webhooks-cc/mcp setup windsurf --api-key whcc_...
|
|
|
33
38
|
npx @webhooks-cc/mcp setup claude-desktop --api-key whcc_...
|
|
34
39
|
```
|
|
35
40
|
|
|
36
|
-
### Manual
|
|
37
|
-
|
|
38
|
-
For any tool that reads an MCP config file:
|
|
41
|
+
### Manual config
|
|
39
42
|
|
|
40
43
|
```json
|
|
41
44
|
{
|
|
@@ -53,47 +56,132 @@ For any tool that reads an MCP config file:
|
|
|
53
56
|
|
|
54
57
|
Get your API key at [webhooks.cc/account](https://webhooks.cc/account).
|
|
55
58
|
|
|
56
|
-
##
|
|
59
|
+
## What it exposes
|
|
57
60
|
|
|
58
|
-
The
|
|
61
|
+
The server exposes `25` tools, `3` prompts, and `3` resource surfaces.
|
|
59
62
|
|
|
60
|
-
|
|
61
|
-
| ------------------ | ----------------------------------------- |
|
|
62
|
-
| `create_endpoint` | Create a new webhook endpoint |
|
|
63
|
-
| `list_endpoints` | List all your endpoints |
|
|
64
|
-
| `get_endpoint` | Get details for an endpoint by slug |
|
|
65
|
-
| `update_endpoint` | Update an endpoint name or mock response |
|
|
66
|
-
| `delete_endpoint` | Delete an endpoint and its requests |
|
|
67
|
-
| `list_requests` | List captured requests for an endpoint |
|
|
68
|
-
| `get_request` | Get full details of a captured request |
|
|
69
|
-
| `send_webhook` | Send a test webhook to an endpoint |
|
|
70
|
-
| `wait_for_request` | Wait for an incoming request (polling) |
|
|
71
|
-
| `replay_request` | Replay a captured request to a target URL |
|
|
72
|
-
| `describe` | Describe all available SDK operations |
|
|
63
|
+
### Endpoint tools
|
|
73
64
|
|
|
74
|
-
|
|
65
|
+
- `create_endpoint`
|
|
66
|
+
- `list_endpoints`
|
|
67
|
+
- `get_endpoint`
|
|
68
|
+
- `update_endpoint`
|
|
69
|
+
- `delete_endpoint`
|
|
70
|
+
- `create_endpoints`
|
|
71
|
+
- `delete_endpoints`
|
|
72
|
+
|
|
73
|
+
### Request tools
|
|
74
|
+
|
|
75
|
+
- `list_requests`
|
|
76
|
+
- `search_requests`
|
|
77
|
+
- `count_requests`
|
|
78
|
+
- `get_request`
|
|
79
|
+
- `wait_for_request`
|
|
80
|
+
- `wait_for_requests`
|
|
81
|
+
- `replay_request`
|
|
82
|
+
- `compare_requests`
|
|
83
|
+
- `extract_from_request`
|
|
84
|
+
- `verify_signature`
|
|
85
|
+
- `clear_requests`
|
|
86
|
+
|
|
87
|
+
### Send and test tools
|
|
88
|
+
|
|
89
|
+
- `send_webhook`
|
|
90
|
+
- `send_to`
|
|
91
|
+
- `preview_webhook`
|
|
92
|
+
- `test_webhook_flow`
|
|
93
|
+
|
|
94
|
+
### Discovery and account tools
|
|
95
|
+
|
|
96
|
+
- `list_provider_templates`
|
|
97
|
+
- `get_usage`
|
|
98
|
+
- `describe`
|
|
99
|
+
|
|
100
|
+
## Prompts
|
|
101
|
+
|
|
102
|
+
The server exposes MCP prompts for common workflows:
|
|
103
|
+
|
|
104
|
+
- `debug_webhook_delivery`
|
|
105
|
+
- `setup_provider_testing`
|
|
106
|
+
- `compare_webhook_attempts`
|
|
107
|
+
|
|
108
|
+
These prompts do not execute anything on their own. They give the client a structured starting point for multi-step agent work.
|
|
109
|
+
|
|
110
|
+
## Resources
|
|
75
111
|
|
|
112
|
+
The server exposes MCP resources for recent webhook context:
|
|
113
|
+
|
|
114
|
+
- `webhooks://endpoints`
|
|
115
|
+
- `webhooks://endpoint/{slug}/recent`
|
|
116
|
+
- `webhooks://request/{id}`
|
|
117
|
+
|
|
118
|
+
These are useful when the client supports resource browsing or prompt/resource attachment.
|
|
119
|
+
|
|
120
|
+
## Provider support
|
|
121
|
+
|
|
122
|
+
Provider template and signing support includes:
|
|
123
|
+
|
|
124
|
+
- `stripe`
|
|
125
|
+
- `github`
|
|
126
|
+
- `shopify`
|
|
127
|
+
- `twilio`
|
|
128
|
+
- `slack`
|
|
129
|
+
- `paddle`
|
|
130
|
+
- `linear`
|
|
131
|
+
- `standard-webhooks`
|
|
132
|
+
|
|
133
|
+
Signature verification also supports:
|
|
134
|
+
|
|
135
|
+
- `discord`
|
|
136
|
+
|
|
137
|
+
Use `list_provider_templates` to inspect templates, default events, signature headers, and signing requirements from the agent.
|
|
138
|
+
|
|
139
|
+
## Example workflows
|
|
140
|
+
|
|
141
|
+
Typical agent flows:
|
|
142
|
+
|
|
143
|
+
- Create an ephemeral endpoint, send a provider-signed webhook, and wait for capture
|
|
144
|
+
- Search retained requests across endpoints with full-text filters
|
|
145
|
+
- Compare two webhook attempts and extract only the JSON fields you care about
|
|
146
|
+
- Verify a captured signature against a known secret
|
|
147
|
+
- Run `test_webhook_flow` to create, send, capture, verify, replay, and clean up in one tool call
|
|
148
|
+
|
|
149
|
+
## Programmatic use
|
|
150
|
+
|
|
151
|
+
The package also exports `createServer()`, `registerTools()`, `registerPrompts()`, and `registerResources()` if you want to embed the server yourself.
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
import { createServer } from "@webhooks-cc/mcp";
|
|
155
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
156
|
+
|
|
157
|
+
const server = createServer({
|
|
158
|
+
apiKey: process.env.WHK_API_KEY!,
|
|
159
|
+
baseUrl: process.env.WHK_BASE_URL,
|
|
160
|
+
webhookUrl: process.env.WHK_WEBHOOK_URL,
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
await server.connect(new StdioServerTransport());
|
|
76
164
|
```
|
|
77
|
-
You: "Create a webhook endpoint for testing Stripe"
|
|
78
|
-
Agent: Created endpoint "stripe-test" at https://go.webhooks.cc/w/abc123
|
|
79
165
|
|
|
80
|
-
|
|
81
|
-
|
|
166
|
+
## Example conversation
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
You: Create an ephemeral endpoint for GitHub webhook testing.
|
|
170
|
+
|
|
171
|
+
Agent: Created endpoint https://go.webhooks.cc/w/abc123 and marked it ephemeral.
|
|
172
|
+
|
|
173
|
+
You: Preview the signed request for a push event before sending it.
|
|
82
174
|
|
|
83
|
-
|
|
84
|
-
Agent: Sent POST to stripe-test with event payload
|
|
175
|
+
Agent: Here is the exact method, headers, and JSON body that would be sent.
|
|
85
176
|
|
|
86
|
-
You:
|
|
87
|
-
Agent: 1 request captured:
|
|
88
|
-
POST /w/abc123 — {"event": "checkout.session.completed", ...}
|
|
177
|
+
You: Send it, wait for two requests, and compare them.
|
|
89
178
|
|
|
90
|
-
|
|
91
|
-
Agent: Replayed to http://localhost:3000/webhooks — got 200 OK
|
|
179
|
+
Agent: Sent the webhook, captured two requests, and here are the header and body differences.
|
|
92
180
|
```
|
|
93
181
|
|
|
94
182
|
## Documentation
|
|
95
183
|
|
|
96
|
-
Full
|
|
184
|
+
Full docs: [webhooks.cc/docs/mcp](https://webhooks.cc/docs/mcp)
|
|
97
185
|
|
|
98
186
|
## License
|
|
99
187
|
|