@bragfast/mcp-server 0.1.0 → 0.1.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 +91 -0
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/lib/api-client.js +1 -1
- package/dist/lib/api-client.js.map +1 -1
- package/dist/lib/auth.js +1 -1
- package/dist/lib/auth.js.map +1 -1
- package/manifest.json +2 -2
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# @bragfast/mcp-server
|
|
2
|
+
|
|
3
|
+
MCP server for [Bragfast](https://brag.fast) — generate branded release announcement images and videos from Claude.
|
|
4
|
+
|
|
5
|
+
## Quick Start
|
|
6
|
+
|
|
7
|
+
### Claude Code
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
claude mcp add bragfast -- npx -y @bragfast/mcp-server
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
### Claude Desktop
|
|
14
|
+
|
|
15
|
+
Add to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"mcpServers": {
|
|
20
|
+
"bragfast": {
|
|
21
|
+
"command": "npx",
|
|
22
|
+
"args": ["-y", "@bragfast/mcp-server"],
|
|
23
|
+
"env": {
|
|
24
|
+
"BRAGFAST_API_KEY": "your-api-key-here"
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Cursor / Windsurf / other MCP clients
|
|
32
|
+
|
|
33
|
+
Use the same stdio config — `npx -y @bragfast/mcp-server` with `BRAGFAST_API_KEY` set.
|
|
34
|
+
|
|
35
|
+
## Authentication
|
|
36
|
+
|
|
37
|
+
Get an API key at [brag.fast/dashboard/account](https://brag.fast/dashboard/account).
|
|
38
|
+
|
|
39
|
+
**Option 1: Environment variable**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
export BRAGFAST_API_KEY=your-api-key
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**Option 2: Login command**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
npx @bragfast/mcp-server login <your-api-key>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Stores the key in `~/.bragfast/credentials.json`.
|
|
52
|
+
|
|
53
|
+
## Tools
|
|
54
|
+
|
|
55
|
+
| Tool | Description |
|
|
56
|
+
|------|-------------|
|
|
57
|
+
| `bragfast_generate_release_images` | Generate branded release images. Returns a `cook_id` to poll. |
|
|
58
|
+
| `bragfast_generate_release_video` | Generate a branded release video. Returns a `cook_id` to poll. |
|
|
59
|
+
| `bragfast_list_brands` | List your brands (colors, logos, fonts). |
|
|
60
|
+
| `bragfast_list_templates` | List available templates with full config and object IDs. |
|
|
61
|
+
| `bragfast_check_account` | Check credits remaining and plan. |
|
|
62
|
+
| `bragfast_get_render_status` | Poll a `cook_id` for completion. Returns image/video URLs when done. |
|
|
63
|
+
|
|
64
|
+
## Example
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
You: Generate release images for my app v2.3.0 with the new dashboard feature
|
|
68
|
+
|
|
69
|
+
Claude: [calls bragfast_list_brands → picks your brand]
|
|
70
|
+
[calls bragfast_list_templates → picks standard-browser]
|
|
71
|
+
[calls bragfast_generate_release_images → gets cook_id]
|
|
72
|
+
[calls bragfast_get_render_status → returns image URLs]
|
|
73
|
+
|
|
74
|
+
Here are your release images:
|
|
75
|
+
- Landscape: https://brag.fast/...
|
|
76
|
+
- Square: https://brag.fast/...
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Development
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
git clone https://github.com/rob-vb/bragfast-mcp.git
|
|
83
|
+
cd bragfast-mcp
|
|
84
|
+
npm install
|
|
85
|
+
npm test # 35 tests
|
|
86
|
+
npm run build # compile to dist/
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## License
|
|
90
|
+
|
|
91
|
+
MIT
|
package/dist/cli.js
CHANGED
|
@@ -3,7 +3,7 @@ import { writeCredentials, deleteCredentials } from "./lib/credentials.js";
|
|
|
3
3
|
const [command] = process.argv.slice(2);
|
|
4
4
|
async function login() {
|
|
5
5
|
// For v1, just print instructions. Browser-based login is v1.1.
|
|
6
|
-
console.log("To authenticate, create an API key at: https://
|
|
6
|
+
console.log("To authenticate, create an API key at: https://brag.fast/dashboard/account");
|
|
7
7
|
console.log("");
|
|
8
8
|
console.log("Then either:");
|
|
9
9
|
console.log(" 1. Set BRAGFAST_API_KEY environment variable");
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAExC,KAAK,UAAU,KAAK;IAClB,gEAAgE;IAChE,OAAO,CAAC,GAAG,CACT,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAExC,KAAK,UAAU,KAAK;IAClB,gEAAgE;IAChE,OAAO,CAAC,GAAG,CACT,4EAA4E,CAC7E,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,gBAAgB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM;IACnB,MAAM,iBAAiB,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,OAAO;YACV,MAAM,KAAK,EAAE,CAAC;YACd,MAAM;QACR,KAAK,QAAQ;YACX,MAAM,MAAM,EAAE,CAAC;YACf,MAAM;QACR;YACE,oGAAoG;YACpG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;YAC3B,MAAM;IACV,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/lib/api-client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { resolveApiKey } from "./auth.js";
|
|
2
2
|
import { deleteCredentials } from "./credentials.js";
|
|
3
|
-
const DEFAULT_BASE_URL = "https://
|
|
3
|
+
const DEFAULT_BASE_URL = "https://brag.fast/api/v1";
|
|
4
4
|
async function handleResponse(res) {
|
|
5
5
|
if (res.ok) {
|
|
6
6
|
return res.json();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/lib/api-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;AAEpD,KAAK,UAAU,cAAc,CAAI,GAAa;IAC5C,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;QACX,OAAO,GAAG,CAAC,IAAI,EAAgB,CAAC;IAClC,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,iBAAiB,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;IACxF,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,SAAS,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,8BAA8B,UAAU,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;QACtD,OAAO,GAAG,IAAI,CAAC,KAAK,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,QAAQ,GAAG,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,OAAO,iBAAiB;IACpB,OAAO,CAAS;IAExB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,gBAAgB,CAAC;IAC7E,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,IAAY;QACvB,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBAC1C,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,cAAc,CAAI,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAa;QACvC,MAAM,MAAM,GAAG,MAAM,aAAa,EAAE,CAAC;QACrC,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBAC1C,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;oBACjC,cAAc,EAAE,kBAAkB;iBACnC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,CAAC;QACD,OAAO,cAAc,CAAI,GAAG,CAAC,CAAC;IAChC,CAAC;CACF"}
|
package/dist/lib/auth.js
CHANGED
|
@@ -8,6 +8,6 @@ export async function resolveApiKey() {
|
|
|
8
8
|
if (stored?.api_key) {
|
|
9
9
|
return stored.api_key;
|
|
10
10
|
}
|
|
11
|
-
throw new Error("Not authenticated. Run: npx @bragfast/mcp-server login\nOr set BRAGFAST_API_KEY env var.\nCreate a key at: https://
|
|
11
|
+
throw new Error("Not authenticated. Run: npx @bragfast/mcp-server login\nOr set BRAGFAST_API_KEY env var.\nCreate a key at: https://brag.fast/dashboard/account");
|
|
12
12
|
}
|
|
13
13
|
//# sourceMappingURL=auth.js.map
|
package/dist/lib/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/lib/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAC5C,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC;IACvC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,IAAI,KAAK,CACb,gJAAgJ,CACjJ,CAAC;AACJ,CAAC"}
|
package/manifest.json
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
"description": "Generate branded release announcement images and videos",
|
|
5
5
|
"version": "0.1.0",
|
|
6
6
|
"author": "Bragfast",
|
|
7
|
-
"homepage": "https://
|
|
7
|
+
"homepage": "https://brag.fast",
|
|
8
8
|
"is_official": true,
|
|
9
9
|
"tools": [
|
|
10
10
|
{
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"env": [
|
|
41
41
|
{
|
|
42
42
|
"name": "BRAGFAST_API_KEY",
|
|
43
|
-
"description": "Your Bragfast API key. Get one at https://
|
|
43
|
+
"description": "Your Bragfast API key. Get one at https://brag.fast/dashboard/account",
|
|
44
44
|
"required": false
|
|
45
45
|
}
|
|
46
46
|
]
|