@infimind/video-mcp-cli 1.0.11 → 1.0.12
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 +43 -0
- package/dist/auth/credentialWriter.js +84 -0
- package/dist/auth/exchange.js +61 -0
- package/dist/auth/installationId.js +36 -0
- package/dist/auth/login.js +77 -0
- package/dist/auth/logout.js +34 -0
- package/dist/auth/loopback.js +153 -0
- package/dist/auth/paths.js +30 -0
- package/dist/auth/pkce.js +11 -0
- package/dist/auth/profile.js +15 -0
- package/dist/auth/redact.js +63 -0
- package/dist/auth/status.js +31 -0
- package/dist/creativeTools.js +251 -0
- package/dist/index.js +139 -39
- package/dist/server.js +392 -152
- package/dist/videoRules.js +28 -10
- package/package.json +34 -7
- package/dist/index.d.ts +0 -2
- package/dist/server.d.ts +0 -11
- package/dist/videoRules.d.ts +0 -49
package/dist/videoRules.js
CHANGED
|
@@ -1,28 +1,40 @@
|
|
|
1
|
-
export const MCP_SERVER_VERSION = "1.0.
|
|
1
|
+
export const MCP_SERVER_VERSION = "1.0.12";
|
|
2
2
|
export const MCP_VIDEO_STATUS_HINT = "任务已创建后,使用 get_video_status 并传入 taskId 查询生成进度和视频链接。";
|
|
3
3
|
export const MCP_VIDEO_DRY_RUN_HINT = "dryRun 仅完成参数、权限、积分和素材规则预检,不会创建任务或扣费。";
|
|
4
4
|
export const MCP_VIDEO_ENGINES = {
|
|
5
5
|
S2: {
|
|
6
|
-
engineName: "极睿
|
|
6
|
+
engineName: "极睿SA专业版",
|
|
7
7
|
model: "sora-2",
|
|
8
8
|
defaultTaskMode: "standard",
|
|
9
9
|
taskModes: ["standard"],
|
|
10
10
|
},
|
|
11
11
|
S5: {
|
|
12
|
-
engineName: "极睿
|
|
12
|
+
engineName: "极睿SD专业版",
|
|
13
13
|
model: "doubao-seedance-2-0-260128",
|
|
14
14
|
defaultTaskMode: "allinone",
|
|
15
15
|
taskModes: ["allinone", "firstlast"],
|
|
16
16
|
},
|
|
17
17
|
S6: {
|
|
18
|
-
engineName: "极睿
|
|
18
|
+
engineName: "极睿HA专业版",
|
|
19
19
|
model: "happyhorse-1.1",
|
|
20
20
|
defaultTaskMode: "standard",
|
|
21
21
|
taskModes: ["standard", "reference", "edit"],
|
|
22
22
|
},
|
|
23
|
+
S7: {
|
|
24
|
+
engineName: "极睿H3专业版",
|
|
25
|
+
model: "MiniMax-H3",
|
|
26
|
+
defaultTaskMode: "allinone",
|
|
27
|
+
taskModes: ["allinone", "firstlast", "reference"],
|
|
28
|
+
},
|
|
29
|
+
S8: {
|
|
30
|
+
engineName: "极睿SD2.5专业版",
|
|
31
|
+
model: "doubao-seedance-2-5-260628",
|
|
32
|
+
defaultTaskMode: "allinone",
|
|
33
|
+
taskModes: ["allinone", "firstlast"],
|
|
34
|
+
},
|
|
23
35
|
};
|
|
24
36
|
export function isMcpRoute(value) {
|
|
25
|
-
return value === "S2" || value === "S5" || value === "S6";
|
|
37
|
+
return value === "S2" || value === "S5" || value === "S6" || value === "S7" || value === "S8";
|
|
26
38
|
}
|
|
27
39
|
export function getMcpEngineName(route) {
|
|
28
40
|
return isMcpRoute(route) ? MCP_VIDEO_ENGINES[route].engineName : MCP_VIDEO_ENGINES.S2.engineName;
|
|
@@ -31,7 +43,7 @@ export function getMcpTaskModel(route) {
|
|
|
31
43
|
return MCP_VIDEO_ENGINES[route].model;
|
|
32
44
|
}
|
|
33
45
|
export function getMcpDefaultTaskMode(route, isFirstLastMode) {
|
|
34
|
-
if (route === "S5" && isFirstLastMode === true) {
|
|
46
|
+
if ((route === "S5" || route === "S8") && isFirstLastMode === true) {
|
|
35
47
|
return "firstlast";
|
|
36
48
|
}
|
|
37
49
|
return MCP_VIDEO_ENGINES[route].defaultTaskMode;
|
|
@@ -40,12 +52,14 @@ export function isValidMcpTaskMode(route, taskMode) {
|
|
|
40
52
|
return MCP_VIDEO_ENGINES[route].taskModes.includes(taskMode);
|
|
41
53
|
}
|
|
42
54
|
export const MCP_VIDEO_MODELS = {
|
|
43
|
-
SA: { route: "S2", engineName: "极睿
|
|
44
|
-
SD: { route: "S5", engineName: "极睿
|
|
45
|
-
|
|
55
|
+
SA: { route: "S2", engineName: "极睿SA专业版", providerModel: "sora-2" },
|
|
56
|
+
SD: { route: "S5", engineName: "极睿SD专业版", providerModel: "doubao-seedance-2-0-260128" },
|
|
57
|
+
SD25: { route: "S8", engineName: "极睿SD2.5专业版", providerModel: "doubao-seedance-2-5-260628" },
|
|
58
|
+
HA: { route: "S6", engineName: "极睿HA专业版", providerModel: "happyhorse-1.1" },
|
|
59
|
+
H3: { route: "S7", engineName: "极睿H3专业版", providerModel: "MiniMax-H3" },
|
|
46
60
|
};
|
|
47
61
|
export function isMcpModel(value) {
|
|
48
|
-
return value === "SA" || value === "SD" || value === "HA";
|
|
62
|
+
return value === "SA" || value === "SD" || value === "SD25" || value === "HA" || value === "H3";
|
|
49
63
|
}
|
|
50
64
|
export function getMcpModelForRoute(route) {
|
|
51
65
|
if (route === "S2")
|
|
@@ -54,6 +68,10 @@ export function getMcpModelForRoute(route) {
|
|
|
54
68
|
return "SD";
|
|
55
69
|
if (route === "S6")
|
|
56
70
|
return "HA";
|
|
71
|
+
if (route === "S7")
|
|
72
|
+
return "H3";
|
|
73
|
+
if (route === "S8")
|
|
74
|
+
return "SD25";
|
|
57
75
|
return "SA"; // 默认回退
|
|
58
76
|
}
|
|
59
77
|
/**
|
package/package.json
CHANGED
|
@@ -1,14 +1,35 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infimind/video-mcp-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "MCP Server for Sora AI Video Generator
|
|
3
|
+
"version": "1.0.12",
|
|
4
|
+
"description": "MCP Server / WorkBuddy CLI for Sora AI Video Generator (1.0.12 with browser-based OAuth).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"sora-mcp": "./dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
|
-
"dist",
|
|
11
|
+
"dist/index.js",
|
|
12
|
+
"dist/server.js",
|
|
13
|
+
"dist/creativeTools.js",
|
|
14
|
+
"dist/auth/index.js",
|
|
15
|
+
"dist/auth/credentialWriter.js",
|
|
16
|
+
"dist/auth/exchange.js",
|
|
17
|
+
"dist/auth/installationId.js",
|
|
18
|
+
"dist/auth/login.js",
|
|
19
|
+
"dist/auth/logout.js",
|
|
20
|
+
"dist/auth/loopback.js",
|
|
21
|
+
"dist/auth/paths.js",
|
|
22
|
+
"dist/auth/pkce.js",
|
|
23
|
+
"dist/auth/profile.js",
|
|
24
|
+
"dist/auth/redact.js",
|
|
25
|
+
"dist/auth/status.js",
|
|
26
|
+
"dist/auth/token.js",
|
|
27
|
+
"dist/oauthWorkbuddy/transaction.js",
|
|
28
|
+
"dist/oauthWorkbuddy/redirectUri.js",
|
|
29
|
+
"dist/oauthWorkbuddy/hash.js",
|
|
30
|
+
"dist/oauthWorkbuddy/redact.js",
|
|
31
|
+
"dist/oauthWorkbuddy/client.js",
|
|
32
|
+
"dist/videoRules.js",
|
|
12
33
|
"README.md"
|
|
13
34
|
],
|
|
14
35
|
"scripts": {
|
|
@@ -17,14 +38,19 @@
|
|
|
17
38
|
"test:smoke": "node scripts/smoke-test.mjs",
|
|
18
39
|
"test:smoke:package": "MCP_SMOKE_TARGET=package node scripts/smoke-test.mjs",
|
|
19
40
|
"test:smoke:published": "MCP_SMOKE_TARGET=published node scripts/smoke-test.mjs",
|
|
20
|
-
"prepublishOnly": "npm run build && npm run test:smoke:package"
|
|
41
|
+
"prepublishOnly": "npm run build && npm run test:smoke:package",
|
|
42
|
+
"check:workbuddy": "node -e \"import(\"./dist/index.js\").catch(e=>{console.error(e);process.exit(1)})\""
|
|
21
43
|
},
|
|
22
44
|
"keywords": [
|
|
45
|
+
"claude",
|
|
46
|
+
"workbuddy",
|
|
47
|
+
"sora",
|
|
48
|
+
"oauth",
|
|
23
49
|
"mcp",
|
|
50
|
+
"pkce",
|
|
51
|
+
"browser-auth",
|
|
24
52
|
"model-context-protocol",
|
|
25
|
-
"
|
|
26
|
-
"video-generation",
|
|
27
|
-
"sora"
|
|
53
|
+
"video-generation"
|
|
28
54
|
],
|
|
29
55
|
"author": "INFIMIND",
|
|
30
56
|
"license": "MIT",
|
|
@@ -34,6 +60,7 @@
|
|
|
34
60
|
},
|
|
35
61
|
"devDependencies": {
|
|
36
62
|
"@types/node": "^20.17.10",
|
|
63
|
+
"ajv": "^8.17.1",
|
|
37
64
|
"typescript": "^5.7.2"
|
|
38
65
|
},
|
|
39
66
|
"engines": {
|
package/dist/index.d.ts
DELETED
package/dist/server.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* MCP Server Implementation for Sora AI Video Generator
|
|
3
|
-
*
|
|
4
|
-
* This server implements the Model Context Protocol to allow Claude Desktop
|
|
5
|
-
* to interact with the Sora AI Video Generator API.
|
|
6
|
-
*/
|
|
7
|
-
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
-
/**
|
|
9
|
-
* Create and configure the MCP Server
|
|
10
|
-
*/
|
|
11
|
-
export declare function createServer(token: string, apiBaseUrl: string): Server;
|
package/dist/videoRules.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
export type McpRoute = "S2" | "S5" | "S6";
|
|
2
|
-
export type McpTaskMode = "allinone" | "firstlast" | "standard" | "reference" | "edit";
|
|
3
|
-
export declare const MCP_SERVER_VERSION = "1.0.10";
|
|
4
|
-
export declare const MCP_VIDEO_STATUS_HINT = "\u4EFB\u52A1\u5DF2\u521B\u5EFA\u540E\uFF0C\u4F7F\u7528 get_video_status \u5E76\u4F20\u5165 taskId \u67E5\u8BE2\u751F\u6210\u8FDB\u5EA6\u548C\u89C6\u9891\u94FE\u63A5\u3002";
|
|
5
|
-
export declare const MCP_VIDEO_DRY_RUN_HINT = "dryRun \u4EC5\u5B8C\u6210\u53C2\u6570\u3001\u6743\u9650\u3001\u79EF\u5206\u548C\u7D20\u6750\u89C4\u5219\u9884\u68C0\uFF0C\u4E0D\u4F1A\u521B\u5EFA\u4EFB\u52A1\u6216\u6263\u8D39\u3002";
|
|
6
|
-
export declare const MCP_VIDEO_ENGINES: Record<McpRoute, {
|
|
7
|
-
engineName: string;
|
|
8
|
-
model: string;
|
|
9
|
-
defaultTaskMode: McpTaskMode;
|
|
10
|
-
taskModes: McpTaskMode[];
|
|
11
|
-
}>;
|
|
12
|
-
export declare function isMcpRoute(value: string): value is McpRoute;
|
|
13
|
-
export declare function getMcpEngineName(route: string): string;
|
|
14
|
-
export declare function getMcpTaskModel(route: McpRoute): string;
|
|
15
|
-
export declare function getMcpDefaultTaskMode(route: McpRoute, isFirstLastMode?: boolean): McpTaskMode;
|
|
16
|
-
export declare function isValidMcpTaskMode(route: McpRoute, taskMode: string): taskMode is McpTaskMode;
|
|
17
|
-
/**
|
|
18
|
-
* 面向 MCP 客户端的引擎短码:
|
|
19
|
-
* SA = S2(极睿Sa专业版,Sora 2 模型,自动 S2→S4 兜底)
|
|
20
|
-
* SD = S5(极睿Sd专业版,Seedance 2.0)
|
|
21
|
-
* HA = S6(极睿Ha专业版,HappyHorse 1.1)
|
|
22
|
-
*/
|
|
23
|
-
export type McpModel = "SA" | "SD" | "HA";
|
|
24
|
-
export declare const MCP_VIDEO_MODELS: Record<McpModel, {
|
|
25
|
-
route: McpRoute;
|
|
26
|
-
engineName: string;
|
|
27
|
-
providerModel: string;
|
|
28
|
-
}>;
|
|
29
|
-
export declare function isMcpModel(value: unknown): value is McpModel;
|
|
30
|
-
export declare function getMcpModelForRoute(route: McpRoute): McpModel;
|
|
31
|
-
/**
|
|
32
|
-
* 把客户端传入的 model / route 值解析成内部 route。
|
|
33
|
-
* - 如果 model 有效,直接用对应的内部 route。
|
|
34
|
-
* - 否则如果 route 是有效 McpRoute,返回该 route。
|
|
35
|
-
* - 否则返回 "SA"(与现有默认行为保持一致)。
|
|
36
|
-
*
|
|
37
|
-
* 第二返回值 true 表示 route 走的是 deprecated alias(仅使用 route 而非 model)。
|
|
38
|
-
*/
|
|
39
|
-
export declare function resolveMcpEngine(args: {
|
|
40
|
-
model?: unknown;
|
|
41
|
-
route?: unknown;
|
|
42
|
-
}): {
|
|
43
|
-
route: McpRoute;
|
|
44
|
-
model: McpModel;
|
|
45
|
-
engineName: string;
|
|
46
|
-
providerModel: string;
|
|
47
|
-
usedRouteAlias: boolean;
|
|
48
|
-
};
|
|
49
|
-
export declare function getMcpVideoStatusHint(dryRun?: boolean): string;
|