microcms-mcp-server 0.3.0
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 +368 -0
- package/bin/microcms-mcp-server.js +9 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +105 -0
- package/dist/cli.js.map +1 -0
- package/dist/client.d.ts +42 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +58 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +27 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +118 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/create-content.d.ts +7 -0
- package/dist/tools/create-content.d.ts.map +1 -0
- package/dist/tools/create-content.js +40 -0
- package/dist/tools/create-content.js.map +1 -0
- package/dist/tools/delete-content.d.ts +7 -0
- package/dist/tools/delete-content.d.ts.map +1 -0
- package/dist/tools/delete-content.js +28 -0
- package/dist/tools/delete-content.js.map +1 -0
- package/dist/tools/get-content.d.ts +5 -0
- package/dist/tools/get-content.d.ts.map +1 -0
- package/dist/tools/get-content.js +48 -0
- package/dist/tools/get-content.js.map +1 -0
- package/dist/tools/get-list.d.ts +5 -0
- package/dist/tools/get-list.d.ts.map +1 -0
- package/dist/tools/get-list.js +80 -0
- package/dist/tools/get-list.js.map +1 -0
- package/dist/tools/get-media.d.ts +5 -0
- package/dist/tools/get-media.d.ts.map +1 -0
- package/dist/tools/get-media.js +51 -0
- package/dist/tools/get-media.js.map +1 -0
- package/dist/tools/patch-content.d.ts +7 -0
- package/dist/tools/patch-content.d.ts.map +1 -0
- package/dist/tools/patch-content.js +41 -0
- package/dist/tools/patch-content.js.map +1 -0
- package/dist/tools/update-content.d.ts +7 -0
- package/dist/tools/update-content.d.ts.map +1 -0
- package/dist/tools/update-content.js +41 -0
- package/dist/tools/update-content.js.map +1 -0
- package/dist/tools/upload-media.d.ts +7 -0
- package/dist/tools/upload-media.d.ts.map +1 -0
- package/dist/tools/upload-media.js +70 -0
- package/dist/tools/upload-media.js.map +1 -0
- package/dist/types.d.ts +74 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/mcp-config-sample.json +13 -0
- package/package.json +68 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { microCMSManagementClient } from '../client.js';
|
|
2
|
+
export const uploadMediaTool = {
|
|
3
|
+
name: 'microcms_upload_media',
|
|
4
|
+
description: 'Upload media files to microCMS using JS SDK (Management API). Supports two methods: 1) Upload file data (base64) with filename and mimeType, 2) Upload from external URL. Returns microCMS asset URL. Requires media upload permissions. Available on Team, Business, Advanced, and Enterprise plans.',
|
|
5
|
+
inputSchema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
fileData: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: 'Base64 encoded file data (for direct file upload)',
|
|
11
|
+
},
|
|
12
|
+
fileName: {
|
|
13
|
+
type: 'string',
|
|
14
|
+
description: 'File name with extension (e.g., "image.jpg", "document.pdf") - required when using fileData',
|
|
15
|
+
},
|
|
16
|
+
mimeType: {
|
|
17
|
+
type: 'string',
|
|
18
|
+
description: 'MIME type of the file (e.g., "image/jpeg", "application/pdf") - required when using fileData',
|
|
19
|
+
},
|
|
20
|
+
externalUrl: {
|
|
21
|
+
type: 'string',
|
|
22
|
+
description: 'External URL of the file to upload (alternative to fileData)',
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
anyOf: [
|
|
26
|
+
{
|
|
27
|
+
required: ['fileData', 'fileName', 'mimeType']
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
required: ['externalUrl']
|
|
31
|
+
}
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
export async function handleUploadMedia(params) {
|
|
36
|
+
const { fileData, fileName, mimeType, externalUrl } = params;
|
|
37
|
+
try {
|
|
38
|
+
// Method 1: Upload from external URL
|
|
39
|
+
if (externalUrl) {
|
|
40
|
+
const result = await microCMSManagementClient.uploadMedia({
|
|
41
|
+
data: externalUrl,
|
|
42
|
+
});
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
// Method 2: Upload file data
|
|
46
|
+
if (fileData && fileName && mimeType) {
|
|
47
|
+
// Convert base64 to buffer
|
|
48
|
+
const buffer = Buffer.from(fileData, 'base64');
|
|
49
|
+
// Check file size (5MB limit)
|
|
50
|
+
if (buffer.length > 5 * 1024 * 1024) {
|
|
51
|
+
throw new Error('File size exceeds 5MB limit');
|
|
52
|
+
}
|
|
53
|
+
// Create Blob from buffer (for Node.js environment)
|
|
54
|
+
const data = new Blob([buffer], { type: mimeType });
|
|
55
|
+
const result = await microCMSManagementClient.uploadMedia({
|
|
56
|
+
data,
|
|
57
|
+
name: fileName,
|
|
58
|
+
});
|
|
59
|
+
return result;
|
|
60
|
+
}
|
|
61
|
+
throw new Error('Either externalUrl or (fileData + fileName + mimeType) must be provided');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error instanceof Error) {
|
|
65
|
+
throw new Error(`Media upload failed: ${error.message}`);
|
|
66
|
+
}
|
|
67
|
+
throw new Error('Media upload failed: Unknown error');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=upload-media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upload-media.js","sourceRoot":"","sources":["../../src/tools/upload-media.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAGxD,MAAM,CAAC,MAAM,eAAe,GAAS;IACnC,IAAI,EAAE,uBAAuB;IAC7B,WAAW,EAAE,uSAAuS;IACpT,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,mDAAmD;aACjE;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,6FAA6F;aAC3G;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8FAA8F;aAC5G;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8DAA8D;aAC5E;SACF;QACD,KAAK,EAAE;YACL;gBACE,QAAQ,EAAE,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;aAC/C;YACD;gBACE,QAAQ,EAAE,CAAC,aAAa,CAAC;aAC1B;SACF;KACF;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA2B;IACjE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE7D,IAAI,CAAC;QACH,qCAAqC;QACrC,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC;gBACxD,IAAI,EAAE,WAAW;aAClB,CAAC,CAAC;YACH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,6BAA6B;QAC7B,IAAI,QAAQ,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACrC,2BAA2B;YAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAE/C,8BAA8B;YAC9B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;YACjD,CAAC;YAED,oDAAoD;YACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC;gBACxD,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export interface MicroCMSListOptions {
|
|
2
|
+
draftKey?: string;
|
|
3
|
+
limit?: number;
|
|
4
|
+
offset?: number;
|
|
5
|
+
orders?: string;
|
|
6
|
+
q?: string;
|
|
7
|
+
fields?: string;
|
|
8
|
+
ids?: string;
|
|
9
|
+
filters?: string;
|
|
10
|
+
depth?: 1 | 2 | 3;
|
|
11
|
+
}
|
|
12
|
+
export interface MicroCMSGetOptions {
|
|
13
|
+
draftKey?: string;
|
|
14
|
+
fields?: string;
|
|
15
|
+
depth?: 1 | 2 | 3;
|
|
16
|
+
}
|
|
17
|
+
export interface MicroCMSCreateOptions {
|
|
18
|
+
isDraft?: boolean;
|
|
19
|
+
contentId?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface MicroCMSUpdateOptions {
|
|
22
|
+
isDraft?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface MicroCMSContent {
|
|
25
|
+
id: string;
|
|
26
|
+
createdAt: string;
|
|
27
|
+
updatedAt: string;
|
|
28
|
+
publishedAt?: string;
|
|
29
|
+
revisedAt?: string;
|
|
30
|
+
[key: string]: any;
|
|
31
|
+
}
|
|
32
|
+
export interface MicroCMSListResponse<T = MicroCMSContent> {
|
|
33
|
+
contents: T[];
|
|
34
|
+
totalCount: number;
|
|
35
|
+
offset: number;
|
|
36
|
+
limit: number;
|
|
37
|
+
}
|
|
38
|
+
export interface MicroCMSErrorResponse {
|
|
39
|
+
message: string;
|
|
40
|
+
details?: Array<{
|
|
41
|
+
field: string;
|
|
42
|
+
message: string;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export interface ToolParameters {
|
|
46
|
+
endpoint: string;
|
|
47
|
+
contentId?: string;
|
|
48
|
+
content?: Record<string, any>;
|
|
49
|
+
draftKey?: string;
|
|
50
|
+
limit?: number;
|
|
51
|
+
offset?: number;
|
|
52
|
+
orders?: string;
|
|
53
|
+
q?: string;
|
|
54
|
+
fields?: string;
|
|
55
|
+
ids?: string;
|
|
56
|
+
filters?: string;
|
|
57
|
+
depth?: 1 | 2 | 3;
|
|
58
|
+
isDraft?: boolean;
|
|
59
|
+
imageOnly?: boolean;
|
|
60
|
+
fileName?: string;
|
|
61
|
+
token?: string;
|
|
62
|
+
fileData?: string;
|
|
63
|
+
mimeType?: string;
|
|
64
|
+
}
|
|
65
|
+
export interface MediaToolParameters {
|
|
66
|
+
limit?: number;
|
|
67
|
+
imageOnly?: boolean;
|
|
68
|
+
fileName?: string;
|
|
69
|
+
token?: string;
|
|
70
|
+
fileData?: string;
|
|
71
|
+
mimeType?: string;
|
|
72
|
+
externalUrl?: string;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB,CAAC,CAAC,GAAG,eAAe;IACvD,QAAQ,EAAE,CAAC,EAAE,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,KAAK,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB"}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/package.json
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "microcms-mcp-server",
|
|
3
|
+
"version": "0.3.0",
|
|
4
|
+
"description": "microCMS MCP Server - A Model Context Protocol server for microCMS API",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"microcms-mcp-server": "bin/microcms-mcp-server.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist/",
|
|
12
|
+
"bin/",
|
|
13
|
+
"README.md",
|
|
14
|
+
"LICENSE",
|
|
15
|
+
"mcp-config-sample.json"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsc",
|
|
19
|
+
"start": "node dist/index.js",
|
|
20
|
+
"start:args": "node dist/index.js --service-id your-service-id --api-key your-api-key",
|
|
21
|
+
"dev": "tsc --watch & node --watch dist/index.js",
|
|
22
|
+
"lint": "eslint src/**/*.ts",
|
|
23
|
+
"format": "prettier --write src/**/*.ts",
|
|
24
|
+
"prepublishOnly": "npm run build",
|
|
25
|
+
"test": "echo \"No tests specified\" && exit 0"
|
|
26
|
+
},
|
|
27
|
+
"keywords": [
|
|
28
|
+
"mcp",
|
|
29
|
+
"microcms",
|
|
30
|
+
"model-context-protocol",
|
|
31
|
+
"ai",
|
|
32
|
+
"claude",
|
|
33
|
+
"cms",
|
|
34
|
+
"headless-cms",
|
|
35
|
+
"cli"
|
|
36
|
+
],
|
|
37
|
+
"author": {
|
|
38
|
+
"name": "himaratsu",
|
|
39
|
+
"url": "https://github.com/himaratsu"
|
|
40
|
+
},
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "git+https://github.com/himaratsu/microcms-mcp-server.git"
|
|
44
|
+
},
|
|
45
|
+
"bugs": {
|
|
46
|
+
"url": "https://github.com/himaratsu/microcms-mcp-server/issues"
|
|
47
|
+
},
|
|
48
|
+
"homepage": "https://github.com/himaratsu/microcms-mcp-server#readme",
|
|
49
|
+
"license": "MIT",
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
52
|
+
"microcms-js-sdk": "^3.1.2"
|
|
53
|
+
},
|
|
54
|
+
"devDependencies": {
|
|
55
|
+
"@types/node": "^20.0.0",
|
|
56
|
+
"@typescript-eslint/eslint-plugin": "^6.0.0",
|
|
57
|
+
"@typescript-eslint/parser": "^6.0.0",
|
|
58
|
+
"eslint": "^8.0.0",
|
|
59
|
+
"prettier": "^3.0.0",
|
|
60
|
+
"typescript": "^5.0.0"
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=18.0.0"
|
|
64
|
+
},
|
|
65
|
+
"publishConfig": {
|
|
66
|
+
"access": "public"
|
|
67
|
+
}
|
|
68
|
+
}
|