klamdo-mcp 1.1.0 → 1.2.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/dist/http.js +3 -3
- package/dist/index.js +1 -1
- package/dist/tools.d.ts +30 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +38 -4
- package/dist/tools.js.map +1 -1
- package/package.json +3 -1
- package/smithery.yaml +14 -6
- package/src/http.ts +3 -3
- package/src/index.ts +1 -1
- package/src/tools.ts +38 -4
package/dist/http.js
CHANGED
|
@@ -37,7 +37,7 @@ async function readBody(req) {
|
|
|
37
37
|
});
|
|
38
38
|
}
|
|
39
39
|
function createMcpServer(apiKey) {
|
|
40
|
-
const server = new index_js_1.Server({ name: "klamdo", version: "1.1
|
|
40
|
+
const server = new index_js_1.Server({ name: "klamdo", version: "1.2.1" }, { capabilities: { tools: {}, resources: {} } });
|
|
41
41
|
(0, tools_js_1.registerHandlers)(server, () => apiKey);
|
|
42
42
|
return server;
|
|
43
43
|
}
|
|
@@ -46,7 +46,7 @@ const httpServer = (0, http_1.createServer)(async (req, res) => {
|
|
|
46
46
|
// Health check
|
|
47
47
|
if (req.method === "GET" && url.pathname === "/health") {
|
|
48
48
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
49
|
-
res.end(JSON.stringify({ ok: true, service: "klamdo-mcp", version: "1.1
|
|
49
|
+
res.end(JSON.stringify({ ok: true, service: "klamdo-mcp", version: "1.2.1" }));
|
|
50
50
|
return;
|
|
51
51
|
}
|
|
52
52
|
// CORS preflight
|
|
@@ -99,7 +99,7 @@ const httpServer = (0, http_1.createServer)(async (req, res) => {
|
|
|
99
99
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
100
100
|
res.end(JSON.stringify({
|
|
101
101
|
service: "Klamdo MCP Server",
|
|
102
|
-
version: "1.1
|
|
102
|
+
version: "1.2.1",
|
|
103
103
|
mcpEndpoint: "/mcp",
|
|
104
104
|
docs: "https://klamdo.app/answers",
|
|
105
105
|
getApiKey: "https://klamdo.app/profile"
|
package/dist/index.js
CHANGED
|
@@ -23,7 +23,7 @@ if (!API_KEY) {
|
|
|
23
23
|
process.stderr.write("[klamdo-mcp] Warning: KLAMDO_API_KEY is not set. Set it in your MCP client config.\n");
|
|
24
24
|
}
|
|
25
25
|
async function main() {
|
|
26
|
-
const server = new index_js_1.Server({ name: "klamdo", version: "1.1
|
|
26
|
+
const server = new index_js_1.Server({ name: "klamdo", version: "1.2.1" }, { capabilities: { tools: {}, resources: {} } });
|
|
27
27
|
(0, tools_js_1.registerHandlers)(server, () => API_KEY);
|
|
28
28
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
29
29
|
await server.connect(transport);
|
package/dist/tools.d.ts
CHANGED
|
@@ -8,6 +8,12 @@ export declare function klamdo<T>(path: string, apiKey: string, body?: Record<st
|
|
|
8
8
|
export declare const TOOLS: ({
|
|
9
9
|
name: string;
|
|
10
10
|
description: string;
|
|
11
|
+
annotations: {
|
|
12
|
+
readOnlyHint: boolean;
|
|
13
|
+
destructiveHint: boolean;
|
|
14
|
+
idempotentHint: boolean;
|
|
15
|
+
openWorldHint: boolean;
|
|
16
|
+
};
|
|
11
17
|
inputSchema: {
|
|
12
18
|
type: string;
|
|
13
19
|
properties: {
|
|
@@ -29,6 +35,12 @@ export declare const TOOLS: ({
|
|
|
29
35
|
} | {
|
|
30
36
|
name: string;
|
|
31
37
|
description: string;
|
|
38
|
+
annotations: {
|
|
39
|
+
readOnlyHint: boolean;
|
|
40
|
+
destructiveHint: boolean;
|
|
41
|
+
idempotentHint: boolean;
|
|
42
|
+
openWorldHint: boolean;
|
|
43
|
+
};
|
|
32
44
|
inputSchema: {
|
|
33
45
|
type: string;
|
|
34
46
|
properties: {
|
|
@@ -45,6 +57,12 @@ export declare const TOOLS: ({
|
|
|
45
57
|
} | {
|
|
46
58
|
name: string;
|
|
47
59
|
description: string;
|
|
60
|
+
annotations: {
|
|
61
|
+
readOnlyHint: boolean;
|
|
62
|
+
destructiveHint: boolean;
|
|
63
|
+
idempotentHint: boolean;
|
|
64
|
+
openWorldHint: boolean;
|
|
65
|
+
};
|
|
48
66
|
inputSchema: {
|
|
49
67
|
type: string;
|
|
50
68
|
properties: {
|
|
@@ -61,6 +79,12 @@ export declare const TOOLS: ({
|
|
|
61
79
|
} | {
|
|
62
80
|
name: string;
|
|
63
81
|
description: string;
|
|
82
|
+
annotations: {
|
|
83
|
+
readOnlyHint: boolean;
|
|
84
|
+
destructiveHint: boolean;
|
|
85
|
+
idempotentHint: boolean;
|
|
86
|
+
openWorldHint: boolean;
|
|
87
|
+
};
|
|
64
88
|
inputSchema: {
|
|
65
89
|
type: string;
|
|
66
90
|
properties: {
|
|
@@ -74,6 +98,12 @@ export declare const TOOLS: ({
|
|
|
74
98
|
} | {
|
|
75
99
|
name: string;
|
|
76
100
|
description: string;
|
|
101
|
+
annotations: {
|
|
102
|
+
readOnlyHint: boolean;
|
|
103
|
+
destructiveHint: boolean;
|
|
104
|
+
idempotentHint: boolean;
|
|
105
|
+
openWorldHint: boolean;
|
|
106
|
+
};
|
|
77
107
|
inputSchema: {
|
|
78
108
|
type: string;
|
|
79
109
|
properties: {
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,eAAO,MAAM,QAAQ,QAAsD,CAAC;AAE5E,wBAAsB,MAAM,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED,eAAO,MAAM,KAAK
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,eAAO,MAAM,QAAQ,QAAsD,CAAC;AAE5E,wBAAsB,MAAM,CAAC,CAAC,EAC5B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAoGjB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,MAAM,QAsKvE"}
|
package/dist/tools.js
CHANGED
|
@@ -32,6 +32,12 @@ exports.TOOLS = [
|
|
|
32
32
|
name: "generate_image",
|
|
33
33
|
description: "Generate a 4K identity-locked image using the user's reference photo on Klamdo. " +
|
|
34
34
|
"Returns a job ID — use check_job to poll for the result. Costs 3 credits.",
|
|
35
|
+
annotations: {
|
|
36
|
+
readOnlyHint: false,
|
|
37
|
+
destructiveHint: false,
|
|
38
|
+
idempotentHint: false,
|
|
39
|
+
openWorldHint: true
|
|
40
|
+
},
|
|
35
41
|
inputSchema: {
|
|
36
42
|
type: "object",
|
|
37
43
|
properties: {
|
|
@@ -53,6 +59,12 @@ exports.TOOLS = [
|
|
|
53
59
|
name: "generate_video",
|
|
54
60
|
description: "Generate a 5-second vertical identity-locked video from the user's reference photo on Klamdo. " +
|
|
55
61
|
"Returns a job ID — use check_job to poll. Aspect ratio locked to 9:16. Costs 6 credits.",
|
|
62
|
+
annotations: {
|
|
63
|
+
readOnlyHint: false,
|
|
64
|
+
destructiveHint: false,
|
|
65
|
+
idempotentHint: false,
|
|
66
|
+
openWorldHint: true
|
|
67
|
+
},
|
|
56
68
|
inputSchema: {
|
|
57
69
|
type: "object",
|
|
58
70
|
properties: {
|
|
@@ -67,26 +79,48 @@ exports.TOOLS = [
|
|
|
67
79
|
{
|
|
68
80
|
name: "check_job",
|
|
69
81
|
description: "Check the status of a Klamdo generation job. Returns status and download URLs when complete.",
|
|
82
|
+
annotations: {
|
|
83
|
+
readOnlyHint: true,
|
|
84
|
+
destructiveHint: false,
|
|
85
|
+
idempotentHint: true,
|
|
86
|
+
openWorldHint: true
|
|
87
|
+
},
|
|
70
88
|
inputSchema: {
|
|
71
89
|
type: "object",
|
|
72
90
|
properties: {
|
|
73
|
-
jobId: { type: "string", description: "The job ID returned from generate_image or generate_video" }
|
|
91
|
+
jobId: { type: "string", description: "The job ID returned from generate_image or generate_video." }
|
|
74
92
|
},
|
|
75
93
|
required: ["jobId"]
|
|
76
94
|
}
|
|
77
95
|
},
|
|
78
96
|
{
|
|
79
97
|
name: "get_account",
|
|
80
|
-
description: "Get current Klamdo account status: credit balance, plan, and free sample eligibility.",
|
|
98
|
+
description: "Get current Klamdo account status: credit balance, plan tier, and free sample eligibility.",
|
|
99
|
+
annotations: {
|
|
100
|
+
readOnlyHint: true,
|
|
101
|
+
destructiveHint: false,
|
|
102
|
+
idempotentHint: true,
|
|
103
|
+
openWorldHint: true
|
|
104
|
+
},
|
|
81
105
|
inputSchema: { type: "object", properties: {} }
|
|
82
106
|
},
|
|
83
107
|
{
|
|
84
108
|
name: "list_jobs",
|
|
85
|
-
description: "List recent Klamdo generation jobs for this account.",
|
|
109
|
+
description: "List recent Klamdo generation jobs for this account, ordered newest first.",
|
|
110
|
+
annotations: {
|
|
111
|
+
readOnlyHint: true,
|
|
112
|
+
destructiveHint: false,
|
|
113
|
+
idempotentHint: true,
|
|
114
|
+
openWorldHint: true
|
|
115
|
+
},
|
|
86
116
|
inputSchema: {
|
|
87
117
|
type: "object",
|
|
88
118
|
properties: {
|
|
89
|
-
limit: {
|
|
119
|
+
limit: {
|
|
120
|
+
type: "number",
|
|
121
|
+
description: "Maximum number of jobs to return. Default: 10, max: 50.",
|
|
122
|
+
default: 10
|
|
123
|
+
}
|
|
90
124
|
}
|
|
91
125
|
}
|
|
92
126
|
}
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAcH,wBA6BC;
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "klamdo-mcp",
|
|
3
|
-
"version": "1.1
|
|
3
|
+
"version": "1.2.1",
|
|
4
4
|
"description": "MCP server for Klamdo — AI content generation for coaches and creator-founders. Generate 4K images and 5-second vertical videos from a reference photo via Claude Desktop or any MCP-compatible client.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
"dev": "ts-node src/index.ts",
|
|
14
14
|
"dev:http": "ts-node src/http.ts"
|
|
15
15
|
},
|
|
16
|
+
"homepage": "https://klamdo.app",
|
|
17
|
+
"author": "Klamdo <hello@klamdo.app> (https://klamdo.app)",
|
|
16
18
|
"keywords": ["mcp", "klamdo", "ai-content", "image-generation", "video-generation", "creator-tools"],
|
|
17
19
|
"license": "MIT",
|
|
18
20
|
"dependencies": {
|
package/smithery.yaml
CHANGED
|
@@ -8,15 +8,23 @@ description: |
|
|
|
8
8
|
|
|
9
9
|
Requires a Klamdo API key — get yours free at https://klamdo.app/profile
|
|
10
10
|
|
|
11
|
-
version: "1.1
|
|
11
|
+
version: "1.2.1"
|
|
12
12
|
homepage: https://klamdo.app
|
|
13
13
|
documentationUrl: https://klamdo.app/answers
|
|
14
14
|
|
|
15
15
|
startCommand:
|
|
16
16
|
type: http
|
|
17
17
|
url: https://mcp.klamdo.app/mcp
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
18
|
+
configSchema:
|
|
19
|
+
type: object
|
|
20
|
+
properties:
|
|
21
|
+
apiKey:
|
|
22
|
+
type: string
|
|
23
|
+
title: Klamdo API Key
|
|
24
|
+
description: >
|
|
25
|
+
Your Klamdo API key. Sign up free at https://klamdo.app and copy
|
|
26
|
+
your key from the Profile page (https://klamdo.app/profile).
|
|
27
|
+
required:
|
|
28
|
+
- apiKey
|
|
29
|
+
headers:
|
|
30
|
+
Authorization: "Bearer {{config.apiKey}}"
|
package/src/http.ts
CHANGED
|
@@ -39,7 +39,7 @@ async function readBody(req: IncomingMessage): Promise<Buffer> {
|
|
|
39
39
|
|
|
40
40
|
function createMcpServer(apiKey: string): Server {
|
|
41
41
|
const server = new Server(
|
|
42
|
-
{ name: "klamdo", version: "1.1
|
|
42
|
+
{ name: "klamdo", version: "1.2.1" },
|
|
43
43
|
{ capabilities: { tools: {}, resources: {} } }
|
|
44
44
|
);
|
|
45
45
|
registerHandlers(server, () => apiKey);
|
|
@@ -52,7 +52,7 @@ const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse
|
|
|
52
52
|
// Health check
|
|
53
53
|
if (req.method === "GET" && url.pathname === "/health") {
|
|
54
54
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
55
|
-
res.end(JSON.stringify({ ok: true, service: "klamdo-mcp", version: "1.1
|
|
55
|
+
res.end(JSON.stringify({ ok: true, service: "klamdo-mcp", version: "1.2.1" }));
|
|
56
56
|
return;
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -113,7 +113,7 @@ const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse
|
|
|
113
113
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
114
114
|
res.end(JSON.stringify({
|
|
115
115
|
service: "Klamdo MCP Server",
|
|
116
|
-
version: "1.1
|
|
116
|
+
version: "1.2.1",
|
|
117
117
|
mcpEndpoint: "/mcp",
|
|
118
118
|
docs: "https://klamdo.app/answers",
|
|
119
119
|
getApiKey: "https://klamdo.app/profile"
|
package/src/index.ts
CHANGED
package/src/tools.ts
CHANGED
|
@@ -52,6 +52,12 @@ export const TOOLS = [
|
|
|
52
52
|
description:
|
|
53
53
|
"Generate a 4K identity-locked image using the user's reference photo on Klamdo. " +
|
|
54
54
|
"Returns a job ID — use check_job to poll for the result. Costs 3 credits.",
|
|
55
|
+
annotations: {
|
|
56
|
+
readOnlyHint: false,
|
|
57
|
+
destructiveHint: false,
|
|
58
|
+
idempotentHint: false,
|
|
59
|
+
openWorldHint: true
|
|
60
|
+
},
|
|
55
61
|
inputSchema: {
|
|
56
62
|
type: "object",
|
|
57
63
|
properties: {
|
|
@@ -75,6 +81,12 @@ export const TOOLS = [
|
|
|
75
81
|
description:
|
|
76
82
|
"Generate a 5-second vertical identity-locked video from the user's reference photo on Klamdo. " +
|
|
77
83
|
"Returns a job ID — use check_job to poll. Aspect ratio locked to 9:16. Costs 6 credits.",
|
|
84
|
+
annotations: {
|
|
85
|
+
readOnlyHint: false,
|
|
86
|
+
destructiveHint: false,
|
|
87
|
+
idempotentHint: false,
|
|
88
|
+
openWorldHint: true
|
|
89
|
+
},
|
|
78
90
|
inputSchema: {
|
|
79
91
|
type: "object",
|
|
80
92
|
properties: {
|
|
@@ -89,26 +101,48 @@ export const TOOLS = [
|
|
|
89
101
|
{
|
|
90
102
|
name: "check_job",
|
|
91
103
|
description: "Check the status of a Klamdo generation job. Returns status and download URLs when complete.",
|
|
104
|
+
annotations: {
|
|
105
|
+
readOnlyHint: true,
|
|
106
|
+
destructiveHint: false,
|
|
107
|
+
idempotentHint: true,
|
|
108
|
+
openWorldHint: true
|
|
109
|
+
},
|
|
92
110
|
inputSchema: {
|
|
93
111
|
type: "object",
|
|
94
112
|
properties: {
|
|
95
|
-
jobId: { type: "string", description: "The job ID returned from generate_image or generate_video" }
|
|
113
|
+
jobId: { type: "string", description: "The job ID returned from generate_image or generate_video." }
|
|
96
114
|
},
|
|
97
115
|
required: ["jobId"]
|
|
98
116
|
}
|
|
99
117
|
},
|
|
100
118
|
{
|
|
101
119
|
name: "get_account",
|
|
102
|
-
description: "Get current Klamdo account status: credit balance, plan, and free sample eligibility.",
|
|
120
|
+
description: "Get current Klamdo account status: credit balance, plan tier, and free sample eligibility.",
|
|
121
|
+
annotations: {
|
|
122
|
+
readOnlyHint: true,
|
|
123
|
+
destructiveHint: false,
|
|
124
|
+
idempotentHint: true,
|
|
125
|
+
openWorldHint: true
|
|
126
|
+
},
|
|
103
127
|
inputSchema: { type: "object", properties: {} }
|
|
104
128
|
},
|
|
105
129
|
{
|
|
106
130
|
name: "list_jobs",
|
|
107
|
-
description: "List recent Klamdo generation jobs for this account.",
|
|
131
|
+
description: "List recent Klamdo generation jobs for this account, ordered newest first.",
|
|
132
|
+
annotations: {
|
|
133
|
+
readOnlyHint: true,
|
|
134
|
+
destructiveHint: false,
|
|
135
|
+
idempotentHint: true,
|
|
136
|
+
openWorldHint: true
|
|
137
|
+
},
|
|
108
138
|
inputSchema: {
|
|
109
139
|
type: "object",
|
|
110
140
|
properties: {
|
|
111
|
-
limit: {
|
|
141
|
+
limit: {
|
|
142
|
+
type: "number",
|
|
143
|
+
description: "Maximum number of jobs to return. Default: 10, max: 50.",
|
|
144
|
+
default: 10
|
|
145
|
+
}
|
|
112
146
|
}
|
|
113
147
|
}
|
|
114
148
|
}
|