creator-mcp 1.0.0 → 1.0.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.
- package/README.md +255 -0
- package/dist/auth.d.ts +1 -1
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +7 -23
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +15 -7
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +79 -24
- package/dist/client.js.map +1 -1
- package/dist/index.js +6 -5
- package/dist/index.js.map +1 -1
- package/dist/tools/pitch.js.map +1 -1
- package/package.json +1 -1
package/README.md
ADDED
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Creator OS MCP
|
|
2
|
+
|
|
3
|
+
MCP server for Creator OS. Connect your Creator OS cloud workspace to MCP-compatible clients and let them work with your content pipeline, brand deals, analytics, AI tools, billing, social integrations, pitch pack, and support data.
|
|
4
|
+
|
|
5
|
+
The package is published as [`creator-mcp`](https://www.npmjs.com/package/creator-mcp) and runs as a local `stdio` MCP server.
|
|
6
|
+
|
|
7
|
+
## What it includes
|
|
8
|
+
|
|
9
|
+
- 54 tools across pipeline, deals, AI, analytics, billing, pitch, social, support, and admin workflows
|
|
10
|
+
- 5 read-only resources for profile, pipeline, deals, analytics, and subscription context
|
|
11
|
+
- 4 reusable prompts for strategy, negotiations, analytics review, and idea brainstorming
|
|
12
|
+
- Token-only setup for end users via `CREATOR_OS_TOKEN`
|
|
13
|
+
- Backward compatibility with Supabase JWTs
|
|
14
|
+
- Built for the hosted Creator OS product
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
- Node.js 18+
|
|
19
|
+
- An active Creator OS account
|
|
20
|
+
- A valid Creator OS MCP token generated from your dashboard
|
|
21
|
+
|
|
22
|
+
## Install
|
|
23
|
+
|
|
24
|
+
You usually do not install this package globally. Most MCP clients can run it directly with `npx`.
|
|
25
|
+
|
|
26
|
+
### Claude Code
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
claude mcp add creator-os --scope user --env CREATOR_OS_TOKEN=YOUR_TOKEN -- npx -y creator-mcp@latest
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Claude Desktop
|
|
33
|
+
|
|
34
|
+
```json
|
|
35
|
+
{
|
|
36
|
+
"mcpServers": {
|
|
37
|
+
"creator-os": {
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "creator-mcp@latest"],
|
|
40
|
+
"env": {
|
|
41
|
+
"CREATOR_OS_TOKEN": "YOUR_TOKEN"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Cursor
|
|
49
|
+
|
|
50
|
+
```json
|
|
51
|
+
{
|
|
52
|
+
"mcpServers": {
|
|
53
|
+
"creator-os": {
|
|
54
|
+
"command": "npx",
|
|
55
|
+
"args": ["-y", "creator-mcp@latest"],
|
|
56
|
+
"env": {
|
|
57
|
+
"CREATOR_OS_TOKEN": "YOUR_TOKEN"
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Generic local MCP config
|
|
65
|
+
|
|
66
|
+
If your client supports local `stdio` servers, use:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"command": "npx",
|
|
71
|
+
"args": ["-y", "creator-mcp@latest"],
|
|
72
|
+
"env": {
|
|
73
|
+
"CREATOR_OS_TOKEN": "YOUR_TOKEN"
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Authentication
|
|
79
|
+
|
|
80
|
+
Set `CREATOR_OS_TOKEN` to one of the following:
|
|
81
|
+
|
|
82
|
+
- `mcp_...` token generated by Creator OS
|
|
83
|
+
- Supabase access token JWT for backward compatibility
|
|
84
|
+
|
|
85
|
+
For commercial cloud usage, end users only need:
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
CREATOR_OS_TOKEN=YOUR_TOKEN
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### How to generate a token
|
|
92
|
+
|
|
93
|
+
1. Log in to Creator OS
|
|
94
|
+
2. Open `Settings`
|
|
95
|
+
3. Open the `MCP` section
|
|
96
|
+
4. Generate a new MCP token
|
|
97
|
+
5. Copy the `mcp_...` token into your MCP client config
|
|
98
|
+
|
|
99
|
+
The recommended setup is always a Creator OS MCP token. Supabase JWT support exists only for backward compatibility.
|
|
100
|
+
|
|
101
|
+
### Internal development only
|
|
102
|
+
|
|
103
|
+
This package is intended to connect to the hosted Creator OS product. The environment variables below are internal/development overrides and are not part of the normal customer setup:
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
CREATOR_OS_SUPABASE_URL=https://your-project.supabase.co
|
|
107
|
+
CREATOR_OS_SUPABASE_PUBLISHABLE_KEY=your_publishable_key
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Tool catalog
|
|
111
|
+
|
|
112
|
+
### Pipeline and content
|
|
113
|
+
|
|
114
|
+
- `list_pipeline_videos`
|
|
115
|
+
- `get_pipeline_video`
|
|
116
|
+
- `update_pipeline_video`
|
|
117
|
+
- `capture_to_pipeline`
|
|
118
|
+
- `list_saved_ideas`
|
|
119
|
+
- `save_idea`
|
|
120
|
+
- `generate_video_idea`
|
|
121
|
+
- `generate_thumbnail`
|
|
122
|
+
- `send_thumbnail_reference`
|
|
123
|
+
|
|
124
|
+
### Deals and sponsorships
|
|
125
|
+
|
|
126
|
+
- `list_deals`
|
|
127
|
+
- `get_deal`
|
|
128
|
+
- `create_deal`
|
|
129
|
+
- `update_deal`
|
|
130
|
+
- `export_deals_to_sheets`
|
|
131
|
+
- `generate_coupon_message`
|
|
132
|
+
- `list_coupons`
|
|
133
|
+
- `send_coupon`
|
|
134
|
+
- `submit_brand_proposal`
|
|
135
|
+
|
|
136
|
+
### AI
|
|
137
|
+
|
|
138
|
+
- `get_ai_suggestions`
|
|
139
|
+
- `ai_chat`
|
|
140
|
+
- `save_ai_key`
|
|
141
|
+
- `test_ai_key`
|
|
142
|
+
- `delete_ai_key`
|
|
143
|
+
|
|
144
|
+
### Analytics
|
|
145
|
+
|
|
146
|
+
- `get_youtube_analytics`
|
|
147
|
+
- `fetch_youtube_data`
|
|
148
|
+
- `fetch_youtube_channel`
|
|
149
|
+
- `get_video_analytics_snapshots`
|
|
150
|
+
|
|
151
|
+
### Billing
|
|
152
|
+
|
|
153
|
+
- `check_subscription`
|
|
154
|
+
- `get_credits_balance`
|
|
155
|
+
- `create_checkout`
|
|
156
|
+
- `get_customer_portal`
|
|
157
|
+
- `check_extension_usage`
|
|
158
|
+
|
|
159
|
+
### Pitch pack
|
|
160
|
+
|
|
161
|
+
- `get_pitch_config`
|
|
162
|
+
- `update_pitch_config`
|
|
163
|
+
- `list_pitch_deliverables`
|
|
164
|
+
- `get_pitch_views`
|
|
165
|
+
- `generate_pitch_share_token`
|
|
166
|
+
- `get_public_showcase`
|
|
167
|
+
|
|
168
|
+
### Social and integrations
|
|
169
|
+
|
|
170
|
+
- `list_integrations`
|
|
171
|
+
- `list_creator_platforms`
|
|
172
|
+
- `sync_instagram`
|
|
173
|
+
- `sync_twitch`
|
|
174
|
+
- `sync_notion`
|
|
175
|
+
- `verify_creator_oauth`
|
|
176
|
+
- `list_instagram_media`
|
|
177
|
+
|
|
178
|
+
### Support
|
|
179
|
+
|
|
180
|
+
- `list_tickets`
|
|
181
|
+
- `get_ticket`
|
|
182
|
+
- `create_ticket`
|
|
183
|
+
- `reply_to_ticket`
|
|
184
|
+
- `list_conversations`
|
|
185
|
+
- `get_conversation_messages`
|
|
186
|
+
|
|
187
|
+
### Admin
|
|
188
|
+
|
|
189
|
+
- `admin_get_overview`
|
|
190
|
+
- `admin_stealth_clean`
|
|
191
|
+
- `admin_virus_scan`
|
|
192
|
+
|
|
193
|
+
## Resources
|
|
194
|
+
|
|
195
|
+
- `creator-profile`
|
|
196
|
+
- `pipeline-status`
|
|
197
|
+
- `deals-overview`
|
|
198
|
+
- `analytics-dashboard`
|
|
199
|
+
- `subscription-status`
|
|
200
|
+
|
|
201
|
+
## Prompts
|
|
202
|
+
|
|
203
|
+
- `content-strategy`
|
|
204
|
+
- `deal-negotiation`
|
|
205
|
+
- `analytics-review`
|
|
206
|
+
- `video-idea-brainstorm`
|
|
207
|
+
|
|
208
|
+
## Typical use cases
|
|
209
|
+
|
|
210
|
+
- Plan upcoming YouTube videos from your current pipeline
|
|
211
|
+
- Review deal status and sponsorship revenue
|
|
212
|
+
- Generate thumbnails and video ideas
|
|
213
|
+
- Inspect recent analytics snapshots and identify trends
|
|
214
|
+
- Sync Instagram, Twitch, or Notion integrations
|
|
215
|
+
- Review billing, credits, and pitch pack performance
|
|
216
|
+
- Create and manage support tickets without leaving the MCP client
|
|
217
|
+
|
|
218
|
+
## Security model
|
|
219
|
+
|
|
220
|
+
- End users only need `CREATOR_OS_TOKEN`
|
|
221
|
+
- MCP API tokens are exchanged server-side for a short-lived Supabase session
|
|
222
|
+
- The package supports Supabase JWTs for backward compatibility
|
|
223
|
+
- Creator OS is delivered as a hosted cloud product
|
|
224
|
+
- Internal override variables exist for development only and should not be part of customer-facing setup
|
|
225
|
+
|
|
226
|
+
## Local development
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
cd mcp
|
|
230
|
+
npm install
|
|
231
|
+
npm run dev
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Build and typecheck:
|
|
235
|
+
|
|
236
|
+
```bash
|
|
237
|
+
npm run build
|
|
238
|
+
npm run typecheck
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
Run the built server:
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
npm run start
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
## Notes
|
|
248
|
+
|
|
249
|
+
- Some tools depend on connected platform integrations in Creator OS
|
|
250
|
+
- Admin tools require an admin-capable token
|
|
251
|
+
- YouTube analytics tools require the relevant YouTube integration to be connected
|
|
252
|
+
|
|
253
|
+
## License
|
|
254
|
+
|
|
255
|
+
MIT
|
package/dist/auth.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Authentication module for Creator OS MCP server.
|
|
3
3
|
*
|
|
4
4
|
* Supports two authentication methods:
|
|
5
|
-
* 1. MCP API Token (mcp_...):
|
|
5
|
+
* 1. MCP API Token (mcp_...): exchanged on the backend for a short-lived Supabase session
|
|
6
6
|
* 2. Supabase JWT: validated via Supabase Auth API (backward compatible)
|
|
7
7
|
*/
|
|
8
8
|
import type { AuthContext } from "./types.js";
|
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA0D9C;;;GAGG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC,CAezD"}
|
package/dist/auth.js
CHANGED
|
@@ -2,36 +2,20 @@
|
|
|
2
2
|
* Authentication module for Creator OS MCP server.
|
|
3
3
|
*
|
|
4
4
|
* Supports two authentication methods:
|
|
5
|
-
* 1. MCP API Token (mcp_...):
|
|
5
|
+
* 1. MCP API Token (mcp_...): exchanged on the backend for a short-lived Supabase session
|
|
6
6
|
* 2. Supabase JWT: validated via Supabase Auth API (backward compatible)
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
9
|
-
import { createAdminClient, createUserClient } from "./client.js";
|
|
8
|
+
import { createUserClient, exchangeMcpToken } from "./client.js";
|
|
10
9
|
const MCP_TOKEN_PREFIX = "mcp_";
|
|
11
10
|
/**
|
|
12
|
-
*
|
|
13
|
-
*/
|
|
14
|
-
function hashToken(rawToken) {
|
|
15
|
-
return createHash("sha256").update(rawToken).digest("hex");
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Validate an MCP API token (mcp_...) against the mcp_tokens table.
|
|
11
|
+
* Exchange an MCP API token (mcp_...) for a short-lived Supabase session.
|
|
19
12
|
*/
|
|
20
13
|
async function authenticateWithMcpToken(token) {
|
|
21
|
-
const
|
|
22
|
-
const admin = createAdminClient();
|
|
23
|
-
const { data, error } = await admin.rpc("validate_mcp_token", {
|
|
24
|
-
p_token_hash: tokenHash,
|
|
25
|
-
});
|
|
26
|
-
if (error || !data || data.length === 0) {
|
|
27
|
-
throw new Error("Invalid MCP API token — authentication failed. " +
|
|
28
|
-
"Ensure your token has not been revoked.");
|
|
29
|
-
}
|
|
30
|
-
const row = data[0];
|
|
14
|
+
const session = await exchangeMcpToken(token);
|
|
31
15
|
return {
|
|
32
|
-
userId:
|
|
33
|
-
email:
|
|
34
|
-
token,
|
|
16
|
+
userId: session.userId,
|
|
17
|
+
email: session.email,
|
|
18
|
+
token: session.accessToken,
|
|
35
19
|
};
|
|
36
20
|
}
|
|
37
21
|
/**
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjE,MAAM,gBAAgB,GAAG,MAAM,CAAC;AAEhC;;GAEG;AACH,KAAK,UAAU,wBAAwB,CACrC,KAAa;IAEb,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAE9C,OAAO;QACL,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,KAAK,EAAE,OAAO,CAAC,WAAW;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAEvC,2DAA2D;IAC3D,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,GAC9C,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAEjC,IAAI,CAAC,YAAY,IAAI,WAAW,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;QACtC,OAAO;YACL,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;YACzB,KAAK;SACN,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,EACd,KAAK,GACN,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAErC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CACb,kDAAkD;YAChD,uDAAuD,CAC1D,CAAC;IACJ,CAAC;IAED,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,EAAE;QACf,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,IAAI;QACzB,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAE3C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,iDAAiD;YAC/C,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACvC,OAAO,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACpC,CAAC"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,23 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Supabase client factory for MCP server.
|
|
3
|
-
*
|
|
3
|
+
* Resolves the Supabase runtime config internally and creates authenticated clients.
|
|
4
4
|
*/
|
|
5
5
|
import { type SupabaseClient } from "@supabase/supabase-js";
|
|
6
|
-
|
|
6
|
+
interface RuntimeConfig {
|
|
7
7
|
supabaseUrl: string;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
supabasePublishableKey: string;
|
|
9
|
+
}
|
|
10
|
+
interface ExchangedSession {
|
|
11
|
+
accessToken: string;
|
|
12
|
+
expiresAt: number;
|
|
13
|
+
userId: string;
|
|
14
|
+
email: string | null;
|
|
15
|
+
}
|
|
16
|
+
export declare function getRuntimeConfig(): RuntimeConfig;
|
|
11
17
|
/**
|
|
12
18
|
* Create a Supabase client authenticated with the user's Bearer token.
|
|
13
19
|
*/
|
|
14
20
|
export declare function createUserClient(token: string): SupabaseClient;
|
|
15
21
|
/**
|
|
16
|
-
*
|
|
22
|
+
* Exchange an MCP API token for a short-lived Supabase access token.
|
|
23
|
+
* This keeps service-role validation on the backend instead of the user's machine.
|
|
17
24
|
*/
|
|
18
|
-
export declare function
|
|
25
|
+
export declare function exchangeMcpToken(token: string): Promise<ExchangedSession>;
|
|
19
26
|
/**
|
|
20
27
|
* Invoke a Supabase Edge Function using the user's token.
|
|
21
28
|
*/
|
|
22
29
|
export declare function invokeEdgeFunction<T = unknown>(token: string, functionName: string, body?: Record<string, unknown>): Promise<T>;
|
|
30
|
+
export {};
|
|
23
31
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAgB1E,UAAU,aAAa;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,UAAU,gBAAgB;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAYD,wBAAgB,gBAAgB,IAAI,aAAa,CAchD;AAaD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAU9D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,gBAAgB,CAAC,CAmE3B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAClD,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAWZ"}
|
package/dist/client.js
CHANGED
|
@@ -1,44 +1,99 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Supabase client factory for MCP server.
|
|
3
|
-
*
|
|
3
|
+
* Resolves the Supabase runtime config internally and creates authenticated clients.
|
|
4
4
|
*/
|
|
5
5
|
import { createClient } from "@supabase/supabase-js";
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
const DEFAULT_SUPABASE_URL = "https://mgbirpvtzkroijvkaryr.supabase.co";
|
|
7
|
+
const DEFAULT_SUPABASE_PUBLISHABLE_KEY = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Im1nYmlycHZ0emtyb2lqdmthcnlyIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NzI5MjUzMDUsImV4cCI6MjA4ODUwMTMwNX0.Tqt31_o9NmG21ZG23UDHTQpJr60GKILYiRgQtrhOuWk";
|
|
8
|
+
const MCP_AUTH_EXCHANGE_FUNCTION = "mcp-auth-exchange";
|
|
9
|
+
const SESSION_REFRESH_SKEW_SECONDS = 60;
|
|
10
|
+
let _runtimeConfig;
|
|
11
|
+
const exchangedSessionCache = new Map();
|
|
12
|
+
export function getRuntimeConfig() {
|
|
13
|
+
if (_runtimeConfig) {
|
|
14
|
+
return _runtimeConfig;
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
supabaseUrl: _supabaseUrl,
|
|
20
|
-
supabaseAnonKey: _supabaseAnonKey,
|
|
21
|
-
supabaseServiceKey: _supabaseServiceKey,
|
|
16
|
+
_runtimeConfig = {
|
|
17
|
+
supabaseUrl: process.env.CREATOR_OS_SUPABASE_URL?.trim() || DEFAULT_SUPABASE_URL,
|
|
18
|
+
supabasePublishableKey: process.env.CREATOR_OS_SUPABASE_PUBLISHABLE_KEY?.trim() ||
|
|
19
|
+
DEFAULT_SUPABASE_PUBLISHABLE_KEY,
|
|
22
20
|
};
|
|
21
|
+
return _runtimeConfig;
|
|
22
|
+
}
|
|
23
|
+
function createBaseClient() {
|
|
24
|
+
const { supabaseUrl, supabasePublishableKey } = getRuntimeConfig();
|
|
25
|
+
return createClient(supabaseUrl, supabasePublishableKey, {
|
|
26
|
+
auth: {
|
|
27
|
+
persistSession: false,
|
|
28
|
+
autoRefreshToken: false,
|
|
29
|
+
detectSessionInUrl: false,
|
|
30
|
+
},
|
|
31
|
+
});
|
|
23
32
|
}
|
|
24
33
|
/**
|
|
25
34
|
* Create a Supabase client authenticated with the user's Bearer token.
|
|
26
35
|
*/
|
|
27
36
|
export function createUserClient(token) {
|
|
28
|
-
const { supabaseUrl,
|
|
29
|
-
return createClient(supabaseUrl,
|
|
37
|
+
const { supabaseUrl, supabasePublishableKey } = getRuntimeConfig();
|
|
38
|
+
return createClient(supabaseUrl, supabasePublishableKey, {
|
|
30
39
|
global: { headers: { Authorization: `Bearer ${token}` } },
|
|
40
|
+
auth: {
|
|
41
|
+
persistSession: false,
|
|
42
|
+
autoRefreshToken: false,
|
|
43
|
+
detectSessionInUrl: false,
|
|
44
|
+
},
|
|
31
45
|
});
|
|
32
46
|
}
|
|
33
47
|
/**
|
|
34
|
-
*
|
|
48
|
+
* Exchange an MCP API token for a short-lived Supabase access token.
|
|
49
|
+
* This keeps service-role validation on the backend instead of the user's machine.
|
|
35
50
|
*/
|
|
36
|
-
export function
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
51
|
+
export async function exchangeMcpToken(token) {
|
|
52
|
+
const cached = exchangedSessionCache.get(token);
|
|
53
|
+
const now = Math.floor(Date.now() / 1000);
|
|
54
|
+
if (cached &&
|
|
55
|
+
cached.expiresAt - SESSION_REFRESH_SKEW_SECONDS > now) {
|
|
56
|
+
return cached;
|
|
57
|
+
}
|
|
58
|
+
const { supabaseUrl, supabasePublishableKey } = getRuntimeConfig();
|
|
59
|
+
const response = await fetch(`${supabaseUrl}/functions/v1/${MCP_AUTH_EXCHANGE_FUNCTION}`, {
|
|
60
|
+
method: "POST",
|
|
61
|
+
headers: {
|
|
62
|
+
Authorization: `Bearer ${token}`,
|
|
63
|
+
apikey: supabasePublishableKey,
|
|
64
|
+
"Content-Type": "application/json",
|
|
65
|
+
},
|
|
66
|
+
body: "{}",
|
|
67
|
+
});
|
|
68
|
+
const payload = (await response.json().catch(() => null));
|
|
69
|
+
if (!response.ok) {
|
|
70
|
+
const message = payload && "error" in payload && payload.error
|
|
71
|
+
? payload.error
|
|
72
|
+
: "Failed to exchange MCP token";
|
|
73
|
+
throw new Error(message);
|
|
40
74
|
}
|
|
41
|
-
|
|
75
|
+
if (!payload ||
|
|
76
|
+
!("token_hash" in payload) ||
|
|
77
|
+
!payload.token_hash ||
|
|
78
|
+
!payload.verification_type) {
|
|
79
|
+
throw new Error("MCP auth exchange returned an invalid response");
|
|
80
|
+
}
|
|
81
|
+
const client = createBaseClient();
|
|
82
|
+
const { data, error } = await client.auth.verifyOtp({
|
|
83
|
+
token_hash: payload.token_hash,
|
|
84
|
+
type: payload.verification_type,
|
|
85
|
+
});
|
|
86
|
+
if (error || !data.session?.access_token || !data.user?.id) {
|
|
87
|
+
throw new Error(error?.message ?? "Failed to establish a Supabase session for MCP");
|
|
88
|
+
}
|
|
89
|
+
const session = {
|
|
90
|
+
accessToken: data.session.access_token,
|
|
91
|
+
expiresAt: data.session.expires_at ?? now + 3600,
|
|
92
|
+
userId: data.user.id,
|
|
93
|
+
email: data.user.email ?? payload.email,
|
|
94
|
+
};
|
|
95
|
+
exchangedSessionCache.set(token, session);
|
|
96
|
+
return session;
|
|
42
97
|
}
|
|
43
98
|
/**
|
|
44
99
|
* Invoke a Supabase Edge Function using the user's token.
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAuB,MAAM,uBAAuB,CAAC;AAE1E,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ import { registerResources } from "./resources.js";
|
|
|
23
23
|
import { registerPrompts } from "./prompts.js";
|
|
24
24
|
const server = new McpServer({
|
|
25
25
|
name: "creator-os-mcp",
|
|
26
|
-
version: "1.0.
|
|
26
|
+
version: "1.0.2",
|
|
27
27
|
}, {
|
|
28
28
|
instructions: [
|
|
29
29
|
"Creator OS MCP Server — a comprehensive toolkit for YouTube creators.",
|
|
@@ -38,10 +38,11 @@ const server = new McpServer({
|
|
|
38
38
|
" 2. Supabase JWT — your Supabase access token (backward compatible)",
|
|
39
39
|
"",
|
|
40
40
|
"Environment variables needed:",
|
|
41
|
-
" CREATOR_OS_TOKEN
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
-
"
|
|
41
|
+
" CREATOR_OS_TOKEN — MCP API token or Supabase JWT (required)",
|
|
42
|
+
"",
|
|
43
|
+
"Creator OS is a hosted cloud product.",
|
|
44
|
+
"Use an MCP token generated in Creator OS for normal customer setup.",
|
|
45
|
+
"Supabase override variables are internal development hooks and are not required by end users.",
|
|
45
46
|
].join("\n"),
|
|
46
47
|
capabilities: {
|
|
47
48
|
logging: {},
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,uEAAuE;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,6EAA6E;QAC7E,uBAAuB;QACvB,EAAE;QACF,iEAAiE;QACjE,2BAA2B;QAC3B,qFAAqF;QACrF,sEAAsE;QACtE,EAAE;QACF,+BAA+B;QAC/B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AAEjF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,MAAM,GAAG,IAAI,SAAS,CAC1B;IACE,IAAI,EAAE,gBAAgB;IACtB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,uEAAuE;QACvE,sEAAsE;QACtE,yEAAyE;QACzE,6EAA6E;QAC7E,uBAAuB;QACvB,EAAE;QACF,iEAAiE;QACjE,2BAA2B;QAC3B,qFAAqF;QACrF,sEAAsE;QACtE,EAAE;QACF,+BAA+B;QAC/B,kFAAkF;QAClF,EAAE;QACF,uCAAuC;QACvC,qEAAqE;QACrE,+FAA+F;KAChG,CAAC,IAAI,CAAC,IAAI,CAAC;IACZ,YAAY,EAAE;QACZ,OAAO,EAAE,EAAE;KACZ;CACF,CACF,CAAC;AAEF,sEAAsE;AACtE,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAC9B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,eAAe,CAAC,MAAM,CAAC,CAAC;AACxB,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC/B,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAC5B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAC7B,kBAAkB,CAAC,MAAM,CAAC,CAAC;AAC3B,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAC1B,eAAe,CAAC,MAAM,CAAC,CAAC;AAExB,sEAAsE;AACtE,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAEhC,sEAAsE;AACtE,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;IAC1B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC;AAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAC/B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC"}
|
package/dist/tools/pitch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pitch.js","sourceRoot":"","sources":["../../src/tools/pitch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"pitch.js","sourceRoot":"","sources":["../../src/tools/pitch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED