@hayodev/crystallize-mcp 0.1.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/LICENSE +21 -0
- package/README.md +304 -0
- package/build/src/audit.d.ts +23 -0
- package/build/src/audit.d.ts.map +1 -0
- package/build/src/audit.js +38 -0
- package/build/src/audit.js.map +1 -0
- package/build/src/bin/crystallize-mcp.d.ts +12 -0
- package/build/src/bin/crystallize-mcp.d.ts.map +1 -0
- package/build/src/bin/crystallize-mcp.js +45 -0
- package/build/src/bin/crystallize-mcp.js.map +1 -0
- package/build/src/bin/setup.d.ts +12 -0
- package/build/src/bin/setup.d.ts.map +1 -0
- package/build/src/bin/setup.js +171 -0
- package/build/src/bin/setup.js.map +1 -0
- package/build/src/client.d.ts +28 -0
- package/build/src/client.d.ts.map +1 -0
- package/build/src/client.js +124 -0
- package/build/src/client.js.map +1 -0
- package/build/src/credentials.d.ts +25 -0
- package/build/src/credentials.d.ts.map +1 -0
- package/build/src/credentials.js +104 -0
- package/build/src/credentials.js.map +1 -0
- package/build/src/errors.d.ts +12 -0
- package/build/src/errors.d.ts.map +1 -0
- package/build/src/errors.js +66 -0
- package/build/src/errors.js.map +1 -0
- package/build/src/index.d.ts +12 -0
- package/build/src/index.d.ts.map +1 -0
- package/build/src/index.js +83 -0
- package/build/src/index.js.map +1 -0
- package/build/src/pii.d.ts +20 -0
- package/build/src/pii.d.ts.map +1 -0
- package/build/src/pii.js +85 -0
- package/build/src/pii.js.map +1 -0
- package/build/src/tools/catalogue.d.ts +7 -0
- package/build/src/tools/catalogue.d.ts.map +1 -0
- package/build/src/tools/catalogue.js +329 -0
- package/build/src/tools/catalogue.js.map +1 -0
- package/build/src/tools/customers.d.ts +7 -0
- package/build/src/tools/customers.d.ts.map +1 -0
- package/build/src/tools/customers.js +278 -0
- package/build/src/tools/customers.js.map +1 -0
- package/build/src/tools/discovery.d.ts +10 -0
- package/build/src/tools/discovery.d.ts.map +1 -0
- package/build/src/tools/discovery.js +285 -0
- package/build/src/tools/discovery.js.map +1 -0
- package/build/src/tools/orders.d.ts +7 -0
- package/build/src/tools/orders.d.ts.map +1 -0
- package/build/src/tools/orders.js +250 -0
- package/build/src/tools/orders.js.map +1 -0
- package/build/src/tools/shapes.d.ts +7 -0
- package/build/src/tools/shapes.d.ts.map +1 -0
- package/build/src/tools/shapes.js +194 -0
- package/build/src/tools/shapes.js.map +1 -0
- package/build/src/types.d.ts +43 -0
- package/build/src/types.d.ts.map +1 -0
- package/build/src/types.js +5 -0
- package/build/src/types.js.map +1 -0
- package/package.json +75 -0
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shape & tenant tools — inspect shapes, components, and tenant configuration.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export function shapeTools(client) {
|
|
6
|
+
return [
|
|
7
|
+
{
|
|
8
|
+
name: 'list_shapes',
|
|
9
|
+
description: 'List all shapes defined in the tenant. Returns shape names, identifiers, types, and component counts with deep links to the Crystallize UI.',
|
|
10
|
+
schema: {},
|
|
11
|
+
handler: async () => {
|
|
12
|
+
const query = `
|
|
13
|
+
query ListShapes($tenantId: ID!) {
|
|
14
|
+
shape {
|
|
15
|
+
getMany(tenantId: $tenantId) {
|
|
16
|
+
identifier
|
|
17
|
+
name
|
|
18
|
+
type
|
|
19
|
+
components {
|
|
20
|
+
id
|
|
21
|
+
name
|
|
22
|
+
type
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
`;
|
|
28
|
+
const data = await client.api.pimApi(query, {
|
|
29
|
+
tenantId: client.config.tenantId,
|
|
30
|
+
});
|
|
31
|
+
const shapes = data.shape
|
|
32
|
+
.getMany;
|
|
33
|
+
if (!shapes?.length) {
|
|
34
|
+
return {
|
|
35
|
+
content: [
|
|
36
|
+
{ type: 'text', text: 'No shapes found in this tenant.' },
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const lines = [
|
|
41
|
+
`${shapes.length} shape(s) in tenant "${client.config.tenantIdentifier}":\n`,
|
|
42
|
+
];
|
|
43
|
+
for (const shape of shapes) {
|
|
44
|
+
lines.push(`${shape.name} (${shape.identifier}) [${shape.type}]`);
|
|
45
|
+
lines.push(` Components: ${shape.components?.length ?? 0}`);
|
|
46
|
+
if (shape.components?.length) {
|
|
47
|
+
const componentList = shape.components
|
|
48
|
+
.map(c => `${c.id} (${c.type})`)
|
|
49
|
+
.join(', ');
|
|
50
|
+
lines.push(` ${componentList}`);
|
|
51
|
+
}
|
|
52
|
+
lines.push(` Link: ${client.shapeLink(shape.identifier)}`);
|
|
53
|
+
lines.push('');
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'get_shape',
|
|
62
|
+
description: 'Get the full component definition for a shape. Shows all components with their types, descriptions, and configuration. Useful for understanding what data a shape expects.',
|
|
63
|
+
schema: {
|
|
64
|
+
identifier: z
|
|
65
|
+
.string()
|
|
66
|
+
.describe('Shape identifier, e.g. "product" or "blog-post"'),
|
|
67
|
+
},
|
|
68
|
+
handler: async (params) => {
|
|
69
|
+
const { identifier } = params;
|
|
70
|
+
const query = `
|
|
71
|
+
query GetShape($identifier: String!, $tenantId: ID!) {
|
|
72
|
+
shape {
|
|
73
|
+
get(identifier: $identifier, tenantId: $tenantId) {
|
|
74
|
+
identifier
|
|
75
|
+
name
|
|
76
|
+
type
|
|
77
|
+
components {
|
|
78
|
+
id
|
|
79
|
+
name
|
|
80
|
+
type
|
|
81
|
+
description
|
|
82
|
+
config {
|
|
83
|
+
... on ComponentConfig {
|
|
84
|
+
min
|
|
85
|
+
max
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
variantComponents {
|
|
90
|
+
id
|
|
91
|
+
name
|
|
92
|
+
type
|
|
93
|
+
description
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
`;
|
|
99
|
+
const data = await client.api.pimApi(query, {
|
|
100
|
+
identifier,
|
|
101
|
+
tenantId: client.config.tenantId,
|
|
102
|
+
});
|
|
103
|
+
const shape = data.shape
|
|
104
|
+
.get;
|
|
105
|
+
if (!shape) {
|
|
106
|
+
return {
|
|
107
|
+
content: [
|
|
108
|
+
{
|
|
109
|
+
type: 'text',
|
|
110
|
+
text: `Shape "${identifier}" not found. Use list_shapes to see available shapes.`,
|
|
111
|
+
},
|
|
112
|
+
],
|
|
113
|
+
isError: true,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const lines = [
|
|
117
|
+
`${shape.name} (${shape.identifier}) [${shape.type}]`,
|
|
118
|
+
`Link: ${client.shapeLink(shape.identifier)}`,
|
|
119
|
+
'',
|
|
120
|
+
];
|
|
121
|
+
if (shape.components?.length) {
|
|
122
|
+
lines.push(`Item Components (${shape.components.length}):`);
|
|
123
|
+
for (const comp of shape.components) {
|
|
124
|
+
lines.push(` ${comp.id} — ${comp.name} [${comp.type}]`);
|
|
125
|
+
if (comp.description) {
|
|
126
|
+
lines.push(` ${comp.description}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
lines.push('');
|
|
130
|
+
}
|
|
131
|
+
if (shape.variantComponents?.length) {
|
|
132
|
+
lines.push(`Variant Components (${shape.variantComponents.length}):`);
|
|
133
|
+
for (const comp of shape.variantComponents) {
|
|
134
|
+
lines.push(` ${comp.id} — ${comp.name} [${comp.type}]`);
|
|
135
|
+
if (comp.description) {
|
|
136
|
+
lines.push(` ${comp.description}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
142
|
+
};
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
name: 'get_tenant_info',
|
|
147
|
+
description: 'Get tenant configuration including name, identifier, available languages, and default language.',
|
|
148
|
+
schema: {},
|
|
149
|
+
handler: async () => {
|
|
150
|
+
const query = `
|
|
151
|
+
query GetTenant($identifier: String!) {
|
|
152
|
+
tenant {
|
|
153
|
+
get(identifier: $identifier) {
|
|
154
|
+
id
|
|
155
|
+
identifier
|
|
156
|
+
name
|
|
157
|
+
defaults {
|
|
158
|
+
language
|
|
159
|
+
currency
|
|
160
|
+
}
|
|
161
|
+
availableLanguages {
|
|
162
|
+
code
|
|
163
|
+
name
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
`;
|
|
169
|
+
const data = await client.api.pimApi(query, {
|
|
170
|
+
identifier: client.config.tenantIdentifier,
|
|
171
|
+
});
|
|
172
|
+
const tenant = data.tenant.get;
|
|
173
|
+
const lines = [
|
|
174
|
+
`${tenant.name}`,
|
|
175
|
+
` Identifier: ${tenant.identifier}`,
|
|
176
|
+
` ID: ${tenant.id}`,
|
|
177
|
+
` Default language: ${tenant.defaults?.language ?? 'en'}`,
|
|
178
|
+
` Default currency: ${tenant.defaults?.currency ?? 'n/a'}`,
|
|
179
|
+
` UI: https://app.crystallize.com/${tenant.identifier}`,
|
|
180
|
+
];
|
|
181
|
+
if (tenant.availableLanguages?.length) {
|
|
182
|
+
const langs = tenant.availableLanguages
|
|
183
|
+
.map(l => `${l.name} (${l.code})`)
|
|
184
|
+
.join(', ');
|
|
185
|
+
lines.push(` Languages: ${langs}`);
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
content: [{ type: 'text', text: lines.join('\n') }],
|
|
189
|
+
};
|
|
190
|
+
},
|
|
191
|
+
},
|
|
192
|
+
];
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=shapes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shapes.js","sourceRoot":"","sources":["../../../src/tools/shapes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for crystallize-mcp.
|
|
3
|
+
*/
|
|
4
|
+
import type { z, ZodRawShape } from 'zod';
|
|
5
|
+
/** Access mode controls which tools are registered. */
|
|
6
|
+
export type AccessMode = 'read' | 'write' | 'admin';
|
|
7
|
+
/** MCP tool result content block. */
|
|
8
|
+
export interface TextContent {
|
|
9
|
+
type: 'text';
|
|
10
|
+
text: string;
|
|
11
|
+
}
|
|
12
|
+
/** MCP tool result — uses index signature to satisfy MCP SDK. */
|
|
13
|
+
export interface ToolResult {
|
|
14
|
+
[key: string]: unknown;
|
|
15
|
+
content: TextContent[];
|
|
16
|
+
isError?: boolean;
|
|
17
|
+
}
|
|
18
|
+
/** A complete tool definition — schema, handler, and metadata. */
|
|
19
|
+
export interface ToolDefinition<T extends ZodRawShape = ZodRawShape> {
|
|
20
|
+
name: string;
|
|
21
|
+
description: string;
|
|
22
|
+
schema: T;
|
|
23
|
+
/** Minimum access mode required to use this tool. Defaults to 'read'. */
|
|
24
|
+
mode?: AccessMode;
|
|
25
|
+
handler: (params: z.objectOutputType<T, z.ZodTypeAny>) => Promise<ToolResult>;
|
|
26
|
+
}
|
|
27
|
+
/** PII masking mode for customer/order data. */
|
|
28
|
+
export type PiiMode = 'full' | 'masked' | 'none';
|
|
29
|
+
/** Crystallize environment configuration. */
|
|
30
|
+
export interface CrystallizeConfig {
|
|
31
|
+
tenantIdentifier: string;
|
|
32
|
+
tenantId?: string;
|
|
33
|
+
accessTokenId?: string;
|
|
34
|
+
accessTokenSecret?: string;
|
|
35
|
+
staticAuthToken?: string;
|
|
36
|
+
accessMode: AccessMode;
|
|
37
|
+
defaultLanguage?: string;
|
|
38
|
+
piiMode?: PiiMode;
|
|
39
|
+
auditLog?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Error categories for actionable error messages. */
|
|
42
|
+
export type ErrorCategory = 'auth' | 'not_found' | 'rate_limit' | 'permission' | 'validation' | 'unknown';
|
|
43
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAE1C,uDAAuD;AACvD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD,qCAAqC;AACrC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,iEAAiE;AACjE,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,kEAAkE;AAClE,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,CAAC,CAAC;IACV,yEAAyE;IACzE,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/E;AAED,gDAAgD;AAChD,MAAM,MAAM,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,6CAA6C;AAC7C,MAAM,WAAW,iBAAiB;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,sDAAsD;AACtD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,WAAW,GACX,YAAY,GACZ,YAAY,GACZ,YAAY,GACZ,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
package/package.json
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hayodev/crystallize-mcp",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Crystallize MCP — headless commerce tools for AI agents. Browse catalogue, search products, inspect shapes, manage orders via Model Context Protocol.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "build/src/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"crystallize-mcp": "build/src/bin/crystallize-mcp.js"
|
|
9
|
+
},
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/HayoDev/crystallize-mcp.git"
|
|
13
|
+
},
|
|
14
|
+
"homepage": "https://github.com/HayoDev/crystallize-mcp#readme",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/HayoDev/crystallize-mcp/issues"
|
|
17
|
+
},
|
|
18
|
+
"publishConfig": {
|
|
19
|
+
"access": "public"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"build/src",
|
|
23
|
+
"LICENSE",
|
|
24
|
+
"!*.tsbuildinfo"
|
|
25
|
+
],
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsc",
|
|
28
|
+
"clean": "rm -rf build",
|
|
29
|
+
"start": "node build/src/bin/crystallize-mcp.js",
|
|
30
|
+
"dev": "npm run build && npm start",
|
|
31
|
+
"typecheck": "tsc --noEmit",
|
|
32
|
+
"lint": "oxlint",
|
|
33
|
+
"lint:fix": "oxlint --fix",
|
|
34
|
+
"format": "oxlint --fix && oxfmt --write .",
|
|
35
|
+
"check-format": "oxlint && oxfmt --check .",
|
|
36
|
+
"test": "npm run build && node --test build/tests/**/*.test.js",
|
|
37
|
+
"test:no-build": "node --test build/tests/**/*.test.js",
|
|
38
|
+
"prepare": "sh scripts/install-hooks.sh"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [
|
|
41
|
+
"mcp",
|
|
42
|
+
"mcp-server",
|
|
43
|
+
"crystallize",
|
|
44
|
+
"headless-commerce",
|
|
45
|
+
"ecommerce",
|
|
46
|
+
"pim",
|
|
47
|
+
"catalogue",
|
|
48
|
+
"graphql",
|
|
49
|
+
"model-context-protocol",
|
|
50
|
+
"ai-agents",
|
|
51
|
+
"ai-coding",
|
|
52
|
+
"claude",
|
|
53
|
+
"cursor",
|
|
54
|
+
"copilot"
|
|
55
|
+
],
|
|
56
|
+
"engines": {
|
|
57
|
+
"node": ">=18.0.0"
|
|
58
|
+
},
|
|
59
|
+
"author": "HayoDev",
|
|
60
|
+
"license": "MIT",
|
|
61
|
+
"dependencies": {
|
|
62
|
+
"@crystallize/js-api-client": "^4.0.0",
|
|
63
|
+
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
64
|
+
"zod": "^3.23.0"
|
|
65
|
+
},
|
|
66
|
+
"optionalDependencies": {
|
|
67
|
+
"@napi-rs/keyring": "^1.2.0"
|
|
68
|
+
},
|
|
69
|
+
"devDependencies": {
|
|
70
|
+
"@types/node": "^22.10.0",
|
|
71
|
+
"oxfmt": "^0.42.0",
|
|
72
|
+
"oxlint": "^1.58.0",
|
|
73
|
+
"typescript": "^5.7.0"
|
|
74
|
+
}
|
|
75
|
+
}
|