@mario.andreschak/mcp-flujo 3.45.0 → 3.45.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/client.d.ts +2 -1
- package/dist/client.js +30 -1
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -1
- package/dist/index.js.map +1 -1
- package/dist/skills.d.ts +61 -0
- package/dist/skills.js +246 -0
- package/dist/skills.js.map +1 -0
- package/package.json +3 -2
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
export type FlujoOperation = 'listTools' | 'callTool' | 'listResources' | 'listResourceTemplates' | 'readResource';
|
|
1
|
+
export type FlujoOperation = 'listTools' | 'callTool' | 'listResources' | 'listResourceTemplates' | 'readResource' | 'listSkills' | 'getSkill';
|
|
2
2
|
type FlujoPayload = {
|
|
3
3
|
name?: string;
|
|
4
4
|
args?: Record<string, unknown>;
|
|
5
5
|
uri?: string;
|
|
6
6
|
cursor?: string;
|
|
7
|
+
skillUri?: string;
|
|
7
8
|
};
|
|
8
9
|
export declare function flujoBaseUrl(env?: NodeJS.ProcessEnv): string;
|
|
9
10
|
export declare function flujoWorkspace(env?: NodeJS.ProcessEnv): string;
|
package/dist/client.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { McpGetSkillResultSchema, McpListSkillsResultSchema, } from './skills.js';
|
|
1
2
|
const AUTHORING_TOOLS = new Set([
|
|
2
3
|
'list_flow_building_blocks',
|
|
3
4
|
'get_flow_authoring_guide',
|
|
@@ -12,6 +13,8 @@ const AUTHORING_TOOLS = new Set([
|
|
|
12
13
|
'find_best_mcp_server',
|
|
13
14
|
'install_mcp_server',
|
|
14
15
|
'install_best_mcp_server',
|
|
16
|
+
'read_persona_composition',
|
|
17
|
+
'update_persona_composition',
|
|
15
18
|
]);
|
|
16
19
|
const FLOW_TOOLS = new Set([
|
|
17
20
|
'propose_ui_action',
|
|
@@ -51,7 +54,16 @@ const STATE_TOOLS = new Set([
|
|
|
51
54
|
]);
|
|
52
55
|
export function flujoBaseUrl(env = process.env) {
|
|
53
56
|
const configured = env.FLUJO_BASE_URL?.trim();
|
|
54
|
-
|
|
57
|
+
const result = (configured || 'http://127.0.0.1:4200').replace(/\/+$/, '');
|
|
58
|
+
if (env.FLUJO_WORKER_MODE === '1') {
|
|
59
|
+
const url = new URL(result);
|
|
60
|
+
if (!['http:', 'https:'].includes(url.protocol)
|
|
61
|
+
|| !['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)
|
|
62
|
+
|| url.username || url.password) {
|
|
63
|
+
throw new Error('The worker FLUJO MCP client requires a loopback FLUJO_BASE_URL.');
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
55
67
|
}
|
|
56
68
|
export function flujoWorkspace(env = process.env) {
|
|
57
69
|
const configured = env.FLUJO_WORKSPACE?.trim();
|
|
@@ -84,6 +96,9 @@ async function requestJson(path, init = {}, timeoutMs = 30_000) {
|
|
|
84
96
|
headers: {
|
|
85
97
|
accept: 'application/json',
|
|
86
98
|
'x-flujo-workspace': flujoWorkspace(),
|
|
99
|
+
...(process.env.FLUJO_WORKER_MODE === '1' && process.env.FLUJO_SNAPSHOT_CONTROL_TOKEN
|
|
100
|
+
? { authorization: `Bearer ${process.env.FLUJO_SNAPSHOT_CONTROL_TOKEN}` }
|
|
101
|
+
: {}),
|
|
87
102
|
...(init.body ? { 'content-type': 'application/json' } : {}),
|
|
88
103
|
...init.headers,
|
|
89
104
|
},
|
|
@@ -141,6 +156,20 @@ export async function flujoRequest(operation, payload = {}) {
|
|
|
141
156
|
body: JSON.stringify({ uri: payload.uri }),
|
|
142
157
|
});
|
|
143
158
|
}
|
|
159
|
+
if (operation === 'listSkills') {
|
|
160
|
+
const result = await requestJson('/api/mcp/flujo/skills');
|
|
161
|
+
return McpListSkillsResultSchema.parse(result);
|
|
162
|
+
}
|
|
163
|
+
if (operation === 'getSkill') {
|
|
164
|
+
const uri = payload.skillUri?.trim();
|
|
165
|
+
if (!uri)
|
|
166
|
+
throw new Error('A standalone MCP Skill URI is required.');
|
|
167
|
+
const result = await requestJson('/api/mcp/flujo/skills', {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
body: JSON.stringify({ uri }),
|
|
170
|
+
});
|
|
171
|
+
return McpGetSkillResultSchema.parse(result);
|
|
172
|
+
}
|
|
144
173
|
const name = payload.name?.trim() ?? '';
|
|
145
174
|
if (!name)
|
|
146
175
|
throw new Error('A FLUJO tool name is required.');
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -3,8 +3,18 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
|
3
3
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
4
4
|
import { CallToolRequestSchema, ListResourceTemplatesRequestSchema, ListResourcesRequestSchema, ListToolsRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
5
5
|
import { flujoRequest } from './client.js';
|
|
6
|
+
import { MCP_SKILLS_EXTENSION_ID, McpGetSkillRequestSchema, McpListSkillsRequestSchema, } from './skills.js';
|
|
6
7
|
export * from './client.js';
|
|
7
|
-
|
|
8
|
+
export * from './skills.js';
|
|
9
|
+
const server = new Server({ name: '@mario.andreschak/mcp-flujo', version: '0.1.0' }, {
|
|
10
|
+
capabilities: {
|
|
11
|
+
tools: {},
|
|
12
|
+
resources: {},
|
|
13
|
+
extensions: {
|
|
14
|
+
[MCP_SKILLS_EXTENSION_ID]: {},
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
});
|
|
8
18
|
server.setRequestHandler(ListToolsRequestSchema, async () => flujoRequest('listTools'));
|
|
9
19
|
server.setRequestHandler(CallToolRequestSchema, async (request) => flujoRequest('callTool', {
|
|
10
20
|
name: request.params.name,
|
|
@@ -13,6 +23,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => flujoRequest(
|
|
|
13
23
|
server.setRequestHandler(ListResourcesRequestSchema, async (request) => flujoRequest('listResources', { cursor: request.params?.cursor }));
|
|
14
24
|
server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => flujoRequest('listResourceTemplates'));
|
|
15
25
|
server.setRequestHandler(ReadResourceRequestSchema, async (request) => flujoRequest('readResource', { uri: request.params.uri }));
|
|
26
|
+
server.setRequestHandler(McpListSkillsRequestSchema, async () => flujoRequest('listSkills'));
|
|
27
|
+
server.setRequestHandler(McpGetSkillRequestSchema, async (request) => flujoRequest('getSkill', {
|
|
28
|
+
skillUri: request.params.uri,
|
|
29
|
+
}));
|
|
16
30
|
const transport = new StdioServerTransport();
|
|
17
31
|
let closing = false;
|
|
18
32
|
async function shutdown() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAM1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,kCAAkC,EAClC,0BAA0B,EAC1B,sBAAsB,EACtB,yBAAyB,GAM1B,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAG3B,MAAM,aAAa,CAAC;AAErB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAE5B,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB,EAAE,IAAI,EAAE,6BAA6B,EAAE,OAAO,EAAE,OAAO,EAAE,EACzD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;QACT,SAAS,EAAE,EAAE;QACb,UAAU,EAAE;YACV,CAAC,uBAAuB,CAAC,EAAE,EAAE;SAC9B;KACF;CACF,CACF,CAAC;AAEF,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY,CAAkB,WAAW,CAAC,CAAC,CAAC;AACzG,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CAChE,YAAY,CAAiB,UAAU,EAAE;IACvC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI;IACzB,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE;CACrC,CAAC,CACH,CAAC;AACF,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACrE,YAAY,CAAsB,eAAe,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CACvF,CAAC;AACF,MAAM,CAAC,iBAAiB,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE,CACtE,YAAY,CAA8B,uBAAuB,CAAC,CACnE,CAAC;AACF,MAAM,CAAC,iBAAiB,CAAC,yBAAyB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACpE,YAAY,CAAqB,cAAc,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAC9E,CAAC;AACF,MAAM,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE,CAC9D,YAAY,CAA6B,YAAY,CAAC,CACvD,CAAC;AACF,MAAM,CAAC,iBAAiB,CAAC,wBAAwB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,CACnE,YAAY,CAA2B,UAAU,EAAE;IACjD,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG;CAC7B,CAAC,CACH,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,IAAI,OAAO,GAAG,KAAK,CAAC;AACpB,KAAK,UAAU,QAAQ;IACrB,IAAI,OAAO;QAAE,OAAO;IACpB,OAAO,GAAG,IAAI,CAAC;IACf,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AACD,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAC9C,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAC/C,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK,QAAQ,EAAE,CAAC,CAAC;AAE9C,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvI,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
/**
|
|
3
|
+
* Experimental MCP Skills wire contract used by the standalone FLUJO server.
|
|
4
|
+
* Frozen to the same SEP revision and validation limits as the host adapter.
|
|
5
|
+
*/
|
|
6
|
+
export declare const MCP_SKILLS_EXTENSION_ID = "io.modelcontextprotocol/skills";
|
|
7
|
+
export declare const MCP_SKILLS_SUPPORTED_REVISION = "SEP-2640@a3e147ca2710f68214247aecc729731ee1ae8d03";
|
|
8
|
+
export declare const MCP_SKILLS_MAX_RESOURCES = 512;
|
|
9
|
+
export declare const MCP_SKILLS_MAX_TOTAL_BYTES: number;
|
|
10
|
+
export type StandaloneSkillDigest = `sha256:${string}`;
|
|
11
|
+
export interface StandaloneSkillFrontmatter {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
}
|
|
16
|
+
export interface StandaloneSkillResource {
|
|
17
|
+
uri: string;
|
|
18
|
+
digest: StandaloneSkillDigest;
|
|
19
|
+
size: number;
|
|
20
|
+
}
|
|
21
|
+
export interface StandaloneSkillEntry {
|
|
22
|
+
uri: string;
|
|
23
|
+
frontmatter: StandaloneSkillFrontmatter;
|
|
24
|
+
resources: StandaloneSkillResource[] | 'dynamic';
|
|
25
|
+
}
|
|
26
|
+
export interface StandaloneListSkillsResult {
|
|
27
|
+
[key: string]: unknown;
|
|
28
|
+
resultType: 'complete';
|
|
29
|
+
skills: StandaloneSkillEntry[];
|
|
30
|
+
nextCursor?: string;
|
|
31
|
+
ttlMs?: number;
|
|
32
|
+
cacheScope?: 'public' | 'private';
|
|
33
|
+
}
|
|
34
|
+
export interface StandaloneGetSkillResult {
|
|
35
|
+
[key: string]: unknown;
|
|
36
|
+
resultType: 'complete';
|
|
37
|
+
skill: StandaloneSkillEntry;
|
|
38
|
+
ttlMs?: number;
|
|
39
|
+
cacheScope?: 'public' | 'private';
|
|
40
|
+
}
|
|
41
|
+
export declare class StandaloneSkillsValidationError extends Error {
|
|
42
|
+
constructor(message: string);
|
|
43
|
+
}
|
|
44
|
+
export declare function validateStandaloneSkillEntry(value: unknown): StandaloneSkillEntry;
|
|
45
|
+
export declare function validateStandaloneListSkillsResult(value: unknown): StandaloneListSkillsResult;
|
|
46
|
+
export declare function validateStandaloneGetSkillResult(value: unknown): StandaloneGetSkillResult;
|
|
47
|
+
/** Draft request schemas frozen to the Skills protocol implemented by FLUJO. */
|
|
48
|
+
export declare const McpListSkillsRequestSchema: z.ZodObject<{
|
|
49
|
+
method: z.ZodLiteral<"skills/list">;
|
|
50
|
+
params: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
52
|
+
}, z.core.$strip>>;
|
|
53
|
+
}, z.core.$strip>;
|
|
54
|
+
export declare const McpGetSkillRequestSchema: z.ZodObject<{
|
|
55
|
+
method: z.ZodLiteral<"skills/get">;
|
|
56
|
+
params: z.ZodObject<{
|
|
57
|
+
uri: z.ZodString;
|
|
58
|
+
}, z.core.$strip>;
|
|
59
|
+
}, z.core.$strip>;
|
|
60
|
+
export declare const McpListSkillsResultSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<StandaloneListSkillsResult, unknown>>;
|
|
61
|
+
export declare const McpGetSkillResultSchema: z.ZodPipe<z.ZodUnknown, z.ZodTransform<StandaloneGetSkillResult, unknown>>;
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
import { z } from 'zod/v4';
|
|
2
|
+
/**
|
|
3
|
+
* Experimental MCP Skills wire contract used by the standalone FLUJO server.
|
|
4
|
+
* Frozen to the same SEP revision and validation limits as the host adapter.
|
|
5
|
+
*/
|
|
6
|
+
export const MCP_SKILLS_EXTENSION_ID = 'io.modelcontextprotocol/skills';
|
|
7
|
+
export const MCP_SKILLS_SUPPORTED_REVISION = 'SEP-2640@a3e147ca2710f68214247aecc729731ee1ae8d03';
|
|
8
|
+
export const MCP_SKILLS_MAX_RESOURCES = 512;
|
|
9
|
+
export const MCP_SKILLS_MAX_TOTAL_BYTES = 16 * 1024 * 1024;
|
|
10
|
+
const SKILL_NAME_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/;
|
|
11
|
+
const SHA256_PATTERN = /^sha256:[0-9a-f]{64}$/;
|
|
12
|
+
export class StandaloneSkillsValidationError extends Error {
|
|
13
|
+
constructor(message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'StandaloneSkillsValidationError';
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function fail(message) {
|
|
19
|
+
throw new StandaloneSkillsValidationError(message);
|
|
20
|
+
}
|
|
21
|
+
function asRecord(value, label) {
|
|
22
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) {
|
|
23
|
+
fail(`${label} must be an object`);
|
|
24
|
+
}
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
function validateUriSegments(uri, label) {
|
|
28
|
+
const segments = uri.pathname.split('/');
|
|
29
|
+
for (let index = 0; index < segments.length; index += 1) {
|
|
30
|
+
const segment = segments[index];
|
|
31
|
+
if (index === 0 && segment === '')
|
|
32
|
+
continue;
|
|
33
|
+
if (!segment)
|
|
34
|
+
fail(`${label} contains an empty path segment`);
|
|
35
|
+
let decoded;
|
|
36
|
+
try {
|
|
37
|
+
decoded = decodeURIComponent(segment);
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
fail(`${label} contains invalid percent encoding`);
|
|
41
|
+
}
|
|
42
|
+
if (decoded === '.' ||
|
|
43
|
+
decoded === '..' ||
|
|
44
|
+
decoded.includes('/') ||
|
|
45
|
+
decoded.includes('\\')) {
|
|
46
|
+
fail(`${label} contains an unsafe path segment`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function normalizeResourceUri(input) {
|
|
51
|
+
if (typeof input !== 'string' || !input) {
|
|
52
|
+
fail('resource URI must be a non-empty string');
|
|
53
|
+
}
|
|
54
|
+
if (input.includes('\\'))
|
|
55
|
+
fail('resource URI must use forward slashes');
|
|
56
|
+
let parsed;
|
|
57
|
+
try {
|
|
58
|
+
parsed = new URL(input);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
fail('resource URI must be an absolute URI');
|
|
62
|
+
}
|
|
63
|
+
if (!parsed.protocol ||
|
|
64
|
+
parsed.username ||
|
|
65
|
+
parsed.password ||
|
|
66
|
+
parsed.port ||
|
|
67
|
+
parsed.search ||
|
|
68
|
+
parsed.hash) {
|
|
69
|
+
fail('resource URI must have no credentials, port, query, or fragment');
|
|
70
|
+
}
|
|
71
|
+
validateUriSegments(parsed, 'resource URI');
|
|
72
|
+
return parsed.href;
|
|
73
|
+
}
|
|
74
|
+
function validateSkillName(value) {
|
|
75
|
+
if (typeof value !== 'string' ||
|
|
76
|
+
value.length < 1 ||
|
|
77
|
+
value.length > 64 ||
|
|
78
|
+
!SKILL_NAME_PATTERN.test(value)) {
|
|
79
|
+
fail('skill name must be 1-64 lowercase alphanumeric or hyphen characters without leading, trailing, or consecutive hyphens');
|
|
80
|
+
}
|
|
81
|
+
return value;
|
|
82
|
+
}
|
|
83
|
+
function parseSkillUri(input) {
|
|
84
|
+
const normalizedUri = normalizeResourceUri(input);
|
|
85
|
+
const parsed = new URL(normalizedUri);
|
|
86
|
+
const pathSegments = parsed.pathname.split('/').filter(Boolean);
|
|
87
|
+
if (pathSegments[pathSegments.length - 1] !== 'SKILL.md') {
|
|
88
|
+
fail('skill URI must identify a top-level SKILL.md');
|
|
89
|
+
}
|
|
90
|
+
const parentSegments = pathSegments.slice(0, -1);
|
|
91
|
+
const encodedName = parentSegments.length
|
|
92
|
+
? parentSegments[parentSegments.length - 1]
|
|
93
|
+
: parsed.hostname;
|
|
94
|
+
let name;
|
|
95
|
+
try {
|
|
96
|
+
name = decodeURIComponent(encodedName);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
fail('skill URI contains an invalid name');
|
|
100
|
+
}
|
|
101
|
+
validateSkillName(name);
|
|
102
|
+
return {
|
|
103
|
+
normalizedUri,
|
|
104
|
+
rootUri: normalizedUri.slice(0, -'/SKILL.md'.length),
|
|
105
|
+
name,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function validateDigest(value) {
|
|
109
|
+
if (typeof value !== 'string' || !SHA256_PATTERN.test(value)) {
|
|
110
|
+
fail('skill resource digest must be sha256 followed by 64 lowercase hex characters');
|
|
111
|
+
}
|
|
112
|
+
return value;
|
|
113
|
+
}
|
|
114
|
+
function validateCacheFields(value) {
|
|
115
|
+
const result = {};
|
|
116
|
+
if (value.ttlMs !== undefined) {
|
|
117
|
+
if (typeof value.ttlMs !== 'number' ||
|
|
118
|
+
!Number.isInteger(value.ttlMs) ||
|
|
119
|
+
value.ttlMs < 0) {
|
|
120
|
+
fail('ttlMs must be a non-negative integer');
|
|
121
|
+
}
|
|
122
|
+
result.ttlMs = value.ttlMs;
|
|
123
|
+
}
|
|
124
|
+
if (value.cacheScope !== undefined) {
|
|
125
|
+
if (value.cacheScope !== 'public' && value.cacheScope !== 'private') {
|
|
126
|
+
fail('cacheScope must be "public" or "private"');
|
|
127
|
+
}
|
|
128
|
+
result.cacheScope = value.cacheScope;
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
export function validateStandaloneSkillEntry(value) {
|
|
133
|
+
const entry = asRecord(value, 'skill entry');
|
|
134
|
+
const parsedUri = parseSkillUri(entry.uri);
|
|
135
|
+
const rawFrontmatter = asRecord(entry.frontmatter, 'skill frontmatter');
|
|
136
|
+
const name = validateSkillName(rawFrontmatter.name);
|
|
137
|
+
if (name !== parsedUri.name) {
|
|
138
|
+
fail('skill frontmatter name must match the final skill path segment');
|
|
139
|
+
}
|
|
140
|
+
if (typeof rawFrontmatter.description !== 'string' ||
|
|
141
|
+
rawFrontmatter.description.length < 1 ||
|
|
142
|
+
rawFrontmatter.description.length > 1024) {
|
|
143
|
+
fail('skill description must be a non-empty string of at most 1024 characters');
|
|
144
|
+
}
|
|
145
|
+
const frontmatter = {
|
|
146
|
+
...rawFrontmatter,
|
|
147
|
+
name,
|
|
148
|
+
description: rawFrontmatter.description,
|
|
149
|
+
};
|
|
150
|
+
if (entry.resources === 'dynamic') {
|
|
151
|
+
return { uri: parsedUri.normalizedUri, frontmatter, resources: 'dynamic' };
|
|
152
|
+
}
|
|
153
|
+
if (!Array.isArray(entry.resources)) {
|
|
154
|
+
fail('skill resources must be a complete array or "dynamic"');
|
|
155
|
+
}
|
|
156
|
+
if (entry.resources.length < 1 ||
|
|
157
|
+
entry.resources.length > MCP_SKILLS_MAX_RESOURCES) {
|
|
158
|
+
fail(`skill resources must contain 1-${MCP_SKILLS_MAX_RESOURCES} entries`);
|
|
159
|
+
}
|
|
160
|
+
const seen = new Set();
|
|
161
|
+
let totalBytes = 0;
|
|
162
|
+
let hasManifest = false;
|
|
163
|
+
const resources = entry.resources.map((rawResource, index) => {
|
|
164
|
+
const resource = asRecord(rawResource, `skill resource ${index}`);
|
|
165
|
+
const uri = normalizeResourceUri(resource.uri);
|
|
166
|
+
if (uri !== parsedUri.normalizedUri &&
|
|
167
|
+
!uri.startsWith(`${parsedUri.rootUri}/`)) {
|
|
168
|
+
fail('skill resource URI must be contained within the skill root');
|
|
169
|
+
}
|
|
170
|
+
if (seen.has(uri))
|
|
171
|
+
fail('skill resource URIs must be unique');
|
|
172
|
+
seen.add(uri);
|
|
173
|
+
if (typeof resource.size !== 'number' ||
|
|
174
|
+
!Number.isSafeInteger(resource.size) ||
|
|
175
|
+
resource.size < 0) {
|
|
176
|
+
fail('skill resource size must be a non-negative safe integer');
|
|
177
|
+
}
|
|
178
|
+
const digest = validateDigest(resource.digest);
|
|
179
|
+
totalBytes += resource.size;
|
|
180
|
+
if (totalBytes > MCP_SKILLS_MAX_TOTAL_BYTES) {
|
|
181
|
+
fail(`skill resources exceed the ${MCP_SKILLS_MAX_TOTAL_BYTES}-byte limit`);
|
|
182
|
+
}
|
|
183
|
+
if (uri === parsedUri.normalizedUri)
|
|
184
|
+
hasManifest = true;
|
|
185
|
+
return { uri, digest, size: resource.size };
|
|
186
|
+
});
|
|
187
|
+
if (!hasManifest) {
|
|
188
|
+
fail('skill resources must include the top-level SKILL.md');
|
|
189
|
+
}
|
|
190
|
+
return { uri: parsedUri.normalizedUri, frontmatter, resources };
|
|
191
|
+
}
|
|
192
|
+
export function validateStandaloneListSkillsResult(value) {
|
|
193
|
+
const result = asRecord(value, 'skills/list result');
|
|
194
|
+
if (result.resultType !== 'complete') {
|
|
195
|
+
fail('skills/list resultType must be "complete"');
|
|
196
|
+
}
|
|
197
|
+
if (!Array.isArray(result.skills)) {
|
|
198
|
+
fail('skills/list skills must be an array');
|
|
199
|
+
}
|
|
200
|
+
if (result.nextCursor !== undefined &&
|
|
201
|
+
typeof result.nextCursor !== 'string') {
|
|
202
|
+
fail('skills/list nextCursor must be a string');
|
|
203
|
+
}
|
|
204
|
+
const skills = result.skills.map(validateStandaloneSkillEntry);
|
|
205
|
+
const seen = new Set();
|
|
206
|
+
for (const skill of skills) {
|
|
207
|
+
if (seen.has(skill.uri))
|
|
208
|
+
fail('skills/list skill URIs must be unique');
|
|
209
|
+
seen.add(skill.uri);
|
|
210
|
+
}
|
|
211
|
+
return {
|
|
212
|
+
resultType: 'complete',
|
|
213
|
+
skills,
|
|
214
|
+
...(result.nextCursor === undefined
|
|
215
|
+
? {}
|
|
216
|
+
: { nextCursor: result.nextCursor }),
|
|
217
|
+
...validateCacheFields(result),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
export function validateStandaloneGetSkillResult(value) {
|
|
221
|
+
const result = asRecord(value, 'skills/get result');
|
|
222
|
+
if (result.resultType !== 'complete') {
|
|
223
|
+
fail('skills/get resultType must be "complete"');
|
|
224
|
+
}
|
|
225
|
+
return {
|
|
226
|
+
resultType: 'complete',
|
|
227
|
+
skill: validateStandaloneSkillEntry(result.skill),
|
|
228
|
+
...validateCacheFields(result),
|
|
229
|
+
};
|
|
230
|
+
}
|
|
231
|
+
/** Draft request schemas frozen to the Skills protocol implemented by FLUJO. */
|
|
232
|
+
export const McpListSkillsRequestSchema = z.object({
|
|
233
|
+
method: z.literal('skills/list'),
|
|
234
|
+
params: z.object({ cursor: z.string().optional() }).optional(),
|
|
235
|
+
});
|
|
236
|
+
export const McpGetSkillRequestSchema = z.object({
|
|
237
|
+
method: z.literal('skills/get'),
|
|
238
|
+
params: z.object({ uri: z.string().min(1) }),
|
|
239
|
+
});
|
|
240
|
+
export const McpListSkillsResultSchema = z
|
|
241
|
+
.unknown()
|
|
242
|
+
.transform(validateStandaloneListSkillsResult);
|
|
243
|
+
export const McpGetSkillResultSchema = z
|
|
244
|
+
.unknown()
|
|
245
|
+
.transform(validateStandaloneGetSkillResult);
|
|
246
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mario.andreschak/mcp-flujo",
|
|
3
|
-
"version": "3.45.
|
|
3
|
+
"version": "3.45.1",
|
|
4
4
|
"description": "FLUJO's standalone application MCP server",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -20,7 +20,8 @@
|
|
|
20
20
|
"node": ">=20"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@modelcontextprotocol/sdk": "^1.30.0"
|
|
23
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
24
|
+
"zod": "^4.4.3"
|
|
24
25
|
},
|
|
25
26
|
"devDependencies": {
|
|
26
27
|
"@types/node": "^22.20.1",
|