@socialneuron/mcp-server 1.5.2 → 1.6.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/CHANGELOG.md +39 -0
- package/README.md +62 -13
- package/dist/http.js +1015 -13
- package/dist/index.js +11 -18
- package/package.json +3 -1
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var MCP_VERSION;
|
|
|
14
14
|
var init_version = __esm({
|
|
15
15
|
"src/lib/version.ts"() {
|
|
16
16
|
"use strict";
|
|
17
|
-
MCP_VERSION = "1.
|
|
17
|
+
MCP_VERSION = "1.6.0";
|
|
18
18
|
}
|
|
19
19
|
});
|
|
20
20
|
|
|
@@ -350,7 +350,6 @@ __export(supabase_exports, {
|
|
|
350
350
|
CLOUD_SUPABASE_URL: () => CLOUD_SUPABASE_URL,
|
|
351
351
|
getAuthMode: () => getAuthMode,
|
|
352
352
|
getAuthenticatedApiKey: () => getAuthenticatedApiKey,
|
|
353
|
-
getAuthenticatedEmail: () => getAuthenticatedEmail,
|
|
354
353
|
getAuthenticatedExpiresAt: () => getAuthenticatedExpiresAt,
|
|
355
354
|
getAuthenticatedScopes: () => getAuthenticatedScopes,
|
|
356
355
|
getDefaultProjectId: () => getDefaultProjectId,
|
|
@@ -438,7 +437,6 @@ async function initializeAuth() {
|
|
|
438
437
|
_authMode = "api-key";
|
|
439
438
|
authenticatedUserId = result.userId;
|
|
440
439
|
authenticatedScopes = result.scopes && result.scopes.length > 0 ? result.scopes : ["mcp:read"];
|
|
441
|
-
authenticatedEmail = result.email || null;
|
|
442
440
|
authenticatedExpiresAt = result.expiresAt || null;
|
|
443
441
|
console.error(
|
|
444
442
|
"[MCP] Authenticated via API key (prefix: " + apiKey.substring(0, 6) + "..." + apiKey.slice(-4) + ")"
|
|
@@ -494,9 +492,6 @@ function getMcpRunId() {
|
|
|
494
492
|
function getAuthenticatedScopes() {
|
|
495
493
|
return authenticatedScopes;
|
|
496
494
|
}
|
|
497
|
-
function getAuthenticatedEmail() {
|
|
498
|
-
return authenticatedEmail;
|
|
499
|
-
}
|
|
500
495
|
function getAuthenticatedExpiresAt() {
|
|
501
496
|
return authenticatedExpiresAt;
|
|
502
497
|
}
|
|
@@ -535,7 +530,7 @@ async function logMcpToolInvocation(args) {
|
|
|
535
530
|
captureToolEvent(args).catch(() => {
|
|
536
531
|
});
|
|
537
532
|
}
|
|
538
|
-
var SUPABASE_URL, SUPABASE_SERVICE_KEY, client2, _authMode, authenticatedUserId, authenticatedScopes,
|
|
533
|
+
var SUPABASE_URL, SUPABASE_SERVICE_KEY, client2, _authMode, authenticatedUserId, authenticatedScopes, authenticatedExpiresAt, authenticatedApiKey, MCP_RUN_ID, CLOUD_SUPABASE_URL, CLOUD_SUPABASE_ANON_KEY, projectIdCache;
|
|
539
534
|
var init_supabase = __esm({
|
|
540
535
|
"src/lib/supabase.ts"() {
|
|
541
536
|
"use strict";
|
|
@@ -547,7 +542,6 @@ var init_supabase = __esm({
|
|
|
547
542
|
_authMode = "service-role";
|
|
548
543
|
authenticatedUserId = null;
|
|
549
544
|
authenticatedScopes = [];
|
|
550
|
-
authenticatedEmail = null;
|
|
551
545
|
authenticatedExpiresAt = null;
|
|
552
546
|
authenticatedApiKey = null;
|
|
553
547
|
MCP_RUN_ID = randomUUID();
|
|
@@ -2369,7 +2363,6 @@ async function handleInfo(args, asJson) {
|
|
|
2369
2363
|
const result = await validateApiKey2(apiKey);
|
|
2370
2364
|
if (result.valid) {
|
|
2371
2365
|
info.auth = {
|
|
2372
|
-
email: result.email || null,
|
|
2373
2366
|
scopes: result.scopes || [],
|
|
2374
2367
|
expiresAt: result.expiresAt || null
|
|
2375
2368
|
};
|
|
@@ -2401,7 +2394,7 @@ async function handleInfo(args, asJson) {
|
|
|
2401
2394
|
console.error("Auth: not configured");
|
|
2402
2395
|
} else if (info.auth) {
|
|
2403
2396
|
const auth = info.auth;
|
|
2404
|
-
console.error(
|
|
2397
|
+
console.error("Auth: authenticated");
|
|
2405
2398
|
console.error(`Scopes: ${auth.scopes.length > 0 ? auth.scopes.join(", ") : "none"}`);
|
|
2406
2399
|
if (auth.expiresAt) {
|
|
2407
2400
|
console.error(`Expires: ${auth.expiresAt}`);
|
|
@@ -3280,7 +3273,7 @@ async function runLoginPaste() {
|
|
|
3280
3273
|
await saveSupabaseUrl(getDefaultSupabaseUrl2());
|
|
3281
3274
|
console.error("");
|
|
3282
3275
|
console.error(" API key saved securely.");
|
|
3283
|
-
console.error(` User: ${result.
|
|
3276
|
+
console.error(` User: ${result.userId || "unknown"}`);
|
|
3284
3277
|
console.error(` Scopes: ${result.scopes?.join(", ") || "mcp:full"}`);
|
|
3285
3278
|
if (result.expiresAt) {
|
|
3286
3279
|
const daysLeft = Math.ceil(
|
|
@@ -3429,7 +3422,6 @@ async function runWhoami(options) {
|
|
|
3429
3422
|
if (asJson) {
|
|
3430
3423
|
const payload = {
|
|
3431
3424
|
ok: true,
|
|
3432
|
-
email: result.email || null,
|
|
3433
3425
|
userId: result.userId,
|
|
3434
3426
|
keyPrefix: apiKey.substring(0, 12) + "...",
|
|
3435
3427
|
scopes: result.scopes || ["mcp:full"],
|
|
@@ -3439,7 +3431,6 @@ async function runWhoami(options) {
|
|
|
3439
3431
|
process.stdout.write(JSON.stringify(payload, null, 2) + "\n");
|
|
3440
3432
|
} else {
|
|
3441
3433
|
console.error("");
|
|
3442
|
-
console.error(` Email: ${result.email || "(not available)"}`);
|
|
3443
3434
|
console.error(` User ID: ${result.userId}`);
|
|
3444
3435
|
console.error(` Key: ${apiKey.substring(0, 12)}...`);
|
|
3445
3436
|
console.error(` Scopes: ${result.scopes?.join(", ") || "mcp:full"}`);
|
|
@@ -3482,7 +3473,7 @@ async function runHealthCheck(options) {
|
|
|
3482
3473
|
checks.push({
|
|
3483
3474
|
name: "Key Valid",
|
|
3484
3475
|
ok: true,
|
|
3485
|
-
detail: `User: ${result.
|
|
3476
|
+
detail: `User: ${result.userId}`
|
|
3486
3477
|
});
|
|
3487
3478
|
checks.push({
|
|
3488
3479
|
name: "Scopes",
|
|
@@ -3595,7 +3586,7 @@ async function runRepl() {
|
|
|
3595
3586
|
Social Neuron CLI v${MCP_VERSION} \u2014 Interactive Mode
|
|
3596
3587
|
`);
|
|
3597
3588
|
process.stderr.write("Type a command, .help for help, or .exit to quit.\n\n");
|
|
3598
|
-
let
|
|
3589
|
+
let authUserId = null;
|
|
3599
3590
|
try {
|
|
3600
3591
|
const { loadApiKey: loadApiKey2 } = await Promise.resolve().then(() => (init_credentials(), credentials_exports));
|
|
3601
3592
|
const { validateApiKey: validateApiKey2 } = await Promise.resolve().then(() => (init_api_keys(), api_keys_exports));
|
|
@@ -3603,8 +3594,8 @@ Social Neuron CLI v${MCP_VERSION} \u2014 Interactive Mode
|
|
|
3603
3594
|
if (key) {
|
|
3604
3595
|
const result = await validateApiKey2(key);
|
|
3605
3596
|
if (result.valid) {
|
|
3606
|
-
|
|
3607
|
-
process.stderr.write(` Authenticated
|
|
3597
|
+
authUserId = result.userId || null;
|
|
3598
|
+
process.stderr.write(` Authenticated (user: ${authUserId || "unknown"})
|
|
3608
3599
|
|
|
3609
3600
|
`);
|
|
3610
3601
|
}
|
|
@@ -3638,7 +3629,7 @@ Social Neuron CLI v${MCP_VERSION} \u2014 Interactive Mode
|
|
|
3638
3629
|
".exit",
|
|
3639
3630
|
".clear"
|
|
3640
3631
|
];
|
|
3641
|
-
const promptStr =
|
|
3632
|
+
const promptStr = authUserId ? `sn[${authUserId.substring(0, 8)}]> ` : "sn> ";
|
|
3642
3633
|
const rl = createInterface2({
|
|
3643
3634
|
input: process.stdin,
|
|
3644
3635
|
output: process.stderr,
|
|
@@ -3829,6 +3820,8 @@ import { z } from "zod";
|
|
|
3829
3820
|
var CATEGORY_CONFIGS = {
|
|
3830
3821
|
posting: { maxTokens: 30, refillRate: 30 / 60 },
|
|
3831
3822
|
// 30 req/min
|
|
3823
|
+
generation: { maxTokens: 20, refillRate: 20 / 60 },
|
|
3824
|
+
// 20 req/min — AI content generation (mcp:write)
|
|
3832
3825
|
screenshot: { maxTokens: 10, refillRate: 10 / 60 },
|
|
3833
3826
|
// 10 req/min
|
|
3834
3827
|
read: { maxTokens: 60, refillRate: 60 / 60 }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@socialneuron/mcp-server",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.1",
|
|
4
4
|
"description": "MCP server for Social Neuron - AI content creation platform",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"type": "git",
|
|
23
23
|
"url": "git+https://github.com/socialneuron/mcp-server.git"
|
|
24
24
|
},
|
|
25
|
+
"source": "./src/index.ts",
|
|
25
26
|
"exports": {
|
|
26
27
|
".": "./dist/index.js",
|
|
27
28
|
"./http": "./dist/http.js"
|
|
@@ -43,6 +44,7 @@
|
|
|
43
44
|
"tiktok",
|
|
44
45
|
"instagram"
|
|
45
46
|
],
|
|
47
|
+
"mcpName": "com.socialneuron/mcp-server",
|
|
46
48
|
"publishConfig": {
|
|
47
49
|
"access": "public"
|
|
48
50
|
},
|