@koderlabs/inbox-mcp 0.1.1 → 0.1.2

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.
Files changed (2) hide show
  1. package/README.md +79 -63
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,51 +1,19 @@
1
1
  # @koderlabs/inbox-mcp
2
2
 
3
- MCP server for InstantInbox (inbox.koderlabs.net). Lets AI dev agents create
4
- disposable inboxes and read received emails so any app's email-driven flow
5
- (signup verification, password reset, magic link, OTP) can be tested end-to-end.
3
+ MCP server for [InstantInbox](https://inbox.koderlabs.net) disposable email inboxes for end-to-end testing.
6
4
 
7
- ## Quick facts
5
+ Lets AI coding agents (Claude Desktop, Claude Code, Cursor, etc.) create temporary email addresses on demand and read messages received at them. Useful for testing any email-driven flow: signup verification, password reset, magic links, OTP codes, transactional notifications.
8
6
 
9
- | | |
10
- |---|---|
11
- | Port | 10405 |
12
- | Transports | Streamable HTTP (`/mcp`) + stdio (`instantinbox-mcp`) |
13
- | Auth | Bearer token: user JWT or `sk_live_*` / `sk_test_*` key |
14
- | Scopes | `inbox:read`, `inbox:write`, `email:read`, `email:write` |
7
+ ## Install
15
8
 
16
- ## Tools (10)
9
+ No global install needed. MCP clients launch it via `npx`.
17
10
 
18
- | Tool | Scope | Purpose |
19
- |---|---|---|
20
- | `whoami` | (none) | Confirm token + show granted scopes |
21
- | `list_inboxes` | `inbox:read` | List the caller's inboxes |
22
- | `create_inbox` | `inbox:write` | Create a new disposable inbox; returns the email address |
23
- | `get_inbox` | `inbox:read` | Look up an inbox by id or address |
24
- | `delete_inbox` | `inbox:write` | Permanently delete an inbox |
25
- | `list_emails` | `email:read`, `inbox:read` | List emails in an inbox (headers only) |
26
- | `get_email` | `email:read` | Fetch a single email's full body |
27
- | `wait_for_email` | `email:read`, `inbox:read` | Long-poll until a matching email arrives (or timeout) |
28
- | `delete_email` | `email:write` | Delete one email |
29
- | `mark_email_read` | `email:write` | Mark read / unread |
30
-
31
- `wait_for_email` is the killer tool — most email tests are
32
- `trigger → wait → extract link/code → click`.
11
+ ## Configure
33
12
 
34
- ## Environment variables
13
+ ### Claude Desktop
35
14
 
36
- | Var | Default | Notes |
37
- |---|---|---|
38
- | `PORT` | `10405` | HTTP transport |
39
- | `API_BASE_URL` | `http://localhost:10402/api/v1` | HTTP transport — points at local API (self-host) |
40
- | `INBOX_API_BASE_URL` | `https://inbox.koderlabs.net/api/v1` | stdio transport — defaults to hosted instance |
41
- | `INBOX_API_KEY` | — | stdio: required Bearer token |
42
- | `MCP_ALLOWED_ORIGINS` | empty | CSV; required for browser-hosted clients |
43
- | `MCP_RATE_LIMIT_RPM` | `120` | Per-token request budget per minute |
44
- | `MCP_MAX_BODY_BYTES` | `1048576` | POST /mcp body cap |
45
- | `MCP_INTROSPECT_KEY` | — | Future OAuth introspection key (not yet required) |
46
- | `MCP_PUBLIC_URL` | `https://inbox.koderlabs.net/mcp` | OAuth discovery |
47
-
48
- ## Claude Desktop configuration
15
+ `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
16
+ `%APPDATA%\Claude\claude_desktop_config.json` (Windows)
49
17
 
50
18
  ```json
51
19
  {
@@ -54,7 +22,6 @@ disposable inboxes and read received emails so any app's email-driven flow
54
22
  "command": "npx",
55
23
  "args": ["-y", "@koderlabs/inbox-mcp"],
56
24
  "env": {
57
- "INBOX_API_BASE_URL": "https://inbox.koderlabs.net/api/v1",
58
25
  "INBOX_API_KEY": "<your token>"
59
26
  }
60
27
  }
@@ -62,30 +29,79 @@ disposable inboxes and read received emails so any app's email-driven flow
62
29
  }
63
30
  ```
64
31
 
65
- ## Example agent workflow
32
+ ### Claude Code
66
33
 
67
- ```
68
- 1. create_inbox → returns ab12cd@inbox.koderlabs.net (id u_abc)
69
- 2. (agent triggers signup with that address in the app under test)
70
- 3. wait_for_email → inboxId=u_abc, subjectContains="verify", timeoutSec=60
71
- 4. (parse verification link from returned body)
72
- 5. (agent visits link to complete signup)
73
- 6. delete_inbox → cleanup
74
- ```
34
+ Add to `.mcp.json` in your project root, same shape as above.
75
35
 
76
- ## Local dev
36
+ ### Cursor
77
37
 
78
- ```bash
79
- pnpm --filter @koderlabs/inbox-mcp build
80
- PORT=10405 INBOX_API_KEY=<token> pnpm --filter @koderlabs/inbox-mcp start
81
- ```
38
+ **Settings → MCP Servers → Add Server**
39
+ - Command: `npx`
40
+ - Args: `-y @koderlabs/inbox-mcp`
41
+ - Env: `INBOX_API_KEY=<your token>`
42
+
43
+ ### Getting a token
44
+
45
+ 1. Sign up at [inbox.koderlabs.net](https://inbox.koderlabs.net)
46
+ 2. Generate an API key from **Settings → API Keys**, or use your session JWT
47
+
48
+ Restart your MCP client after editing config.
49
+
50
+ ## Tools
51
+
52
+ | Tool | Purpose |
53
+ |---|---|
54
+ | `whoami` | Show identity + granted scopes |
55
+ | `list_inboxes` | List your inboxes |
56
+ | `create_inbox` | Create a disposable inbox. Returns full email address (e.g. `ab12cd@inbox.koderlabs.net`) |
57
+ | `get_inbox` | Look up by id or address |
58
+ | `delete_inbox` | Permanently delete an inbox |
59
+ | `list_emails` | List emails in an inbox (headers only) |
60
+ | `get_email` | Fetch a single email's full body (text + html + headers) |
61
+ | `wait_for_email` | Long-poll until a matching email arrives (up to 120s). Filter by `subjectContains`, `fromContains`. |
62
+ | `delete_email` | Delete one email |
63
+ | `mark_email_read` | Mark email read / unread |
64
+
65
+ `wait_for_email` is the workhorse — most email tests are `trigger → wait → extract → click`.
66
+
67
+ ## Example agent prompts
68
+
69
+ > Create a disposable inbox, sign up at https://example.com using that address, then read the verification email and click the link.
70
+
71
+ > Test the password-reset flow on staging: create an inbox, request reset, wait for the email, extract the reset token, and confirm reset works with a new password.
72
+
73
+ > Spin up 5 disposable inboxes and trigger our newsletter signup with each — verify the welcome email arrives within 30 seconds.
74
+
75
+ ## Environment variables
76
+
77
+ | Variable | Default | Purpose |
78
+ |---|---|---|
79
+ | `INBOX_API_KEY` | — | **Required.** Bearer token for the InstantInbox API |
80
+ | `INBOX_API_BASE_URL` | `https://inbox.koderlabs.net/api/v1` | API base — override only if self-hosting |
81
+
82
+ ## Scopes
83
+
84
+ Tokens carry scopes; tools require specific ones:
85
+
86
+ | Scope | Grants |
87
+ |---|---|
88
+ | `inbox:read` | View inboxes |
89
+ | `inbox:write` | Create / delete inboxes |
90
+ | `email:read` | Read emails |
91
+ | `email:write` | Delete / mark emails |
92
+
93
+ The server returns a clear error if a tool is called without the required scope.
94
+
95
+ ## Self-hosting
96
+
97
+ Besides stdio, this package also ships a Streamable-HTTP transport for self-hosted deployments. See [the repo](https://github.com/jawaidgadiwala/inbox) for source, docker compose, and configuration details.
98
+
99
+ ## Links
100
+
101
+ - **Service:** [inbox.koderlabs.net](https://inbox.koderlabs.net)
102
+ - **Source:** [github.com/jawaidgadiwala/inbox](https://github.com/jawaidgadiwala/inbox)
103
+ - **Issues:** [github.com/jawaidgadiwala/inbox/issues](https://github.com/jawaidgadiwala/inbox/issues)
82
104
 
83
- ## Deviations from InstantTasks MCP
105
+ ## License
84
106
 
85
- - No audit-shipping middleware (`withAudit`) — InstantInbox API has no
86
- `/audit/mcp` endpoint yet. Add later if needed.
87
- - Auth currently delegates to `GET /auth/me` and grants all four scopes
88
- on success; the inbox API has no per-key scoping today. Swap to real
89
- introspection once the API has it.
90
- - OAuth flow is a stub — it tries `POST /oauth/introspect` and fails
91
- cleanly if absent.
107
+ MIT
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koderlabs/inbox-mcp",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "license": "MIT",
5
5
  "description": "InstantInbox MCP server — disposable email inboxes for AI agent E2E testing. Streamable HTTP + stdio transports.",
6
6
  "keywords": [