Skip to main content
Glama

microcms_upload_media

Upload media files to microCMS via JS SDK. Supports direct uploads with base64 data, filename, and mimeType, or imports from an external URL. Returns the microCMS asset link for integration. Requires media upload permissions.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
externalUrlNoExternal URL of the file to upload (alternative to fileData)
fileDataNoBase64 encoded file data (for direct file upload)
fileNameNoFile name with extension (e.g., "image.jpg", "document.pdf") - required when using fileData
mimeTypeNoMIME type of the file (e.g., "image/jpeg", "application/pdf") - required when using fileData

Implementation Reference

  • The handler function that implements the tool logic: uploads media to microCMS using the management client, handling both base64-encoded file data (with size check) and external URLs.
    export async function handleUploadMedia(params: MediaToolParameters) { const { fileData, fileName, mimeType, externalUrl } = params; try { // Method 1: Upload from external URL if (externalUrl) { const result = await microCMSManagementClient.uploadMedia({ data: externalUrl, }); return result; } // Method 2: Upload file data if (fileData && fileName && mimeType) { // Convert base64 to buffer const buffer = Buffer.from(fileData, 'base64'); // Check file size (5MB limit) if (buffer.length > 5 * 1024 * 1024) { throw new Error('File size exceeds 5MB limit'); } // Create Blob from buffer (for Node.js environment) const data = new Blob([buffer], { type: mimeType }); const result = await microCMSManagementClient.uploadMedia({ data, name: fileName, }); return result; } throw new Error('Either externalUrl or (fileData + fileName + mimeType) must be provided'); } catch (error) { if (error instanceof Error) { throw new Error(`Media upload failed: ${error.message}`); } throw new Error('Media upload failed: Unknown error'); } }
  • The tool definition including name, description, and input schema for the microcms_upload_media tool.
    export const uploadMediaTool: Tool = { name: 'microcms_upload_media', 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.', inputSchema: { type: 'object', properties: { fileData: { type: 'string', description: 'Base64 encoded file data (for direct file upload)', }, fileName: { type: 'string', description: 'File name with extension (e.g., "image.jpg", "document.pdf") - required when using fileData', }, mimeType: { type: 'string', description: 'MIME type of the file (e.g., "image/jpeg", "application/pdf") - required when using fileData', }, externalUrl: { type: 'string', description: 'External URL of the file to upload (alternative to fileData)', }, }, }, };
  • src/server.ts:41-64 (registration)
    Registers the uploadMediaTool in the list of available tools returned by ListToolsRequest.
    server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ getListTool, getListMetaTool, getContentTool, getContentMetaTool, createContentPublishedTool, createContentDraftTool, updateContentPublishedTool, updateContentDraftTool, patchContentTool, patchContentStatusTool, patchContentCreatedByTool, deleteContentTool, getMediaTool, uploadMediaTool, deleteMediaTool, getApiInfoTool, getApiListTool, getMemberTool, ], }; });
  • src/server.ts:112-115 (registration)
    Registers the handler for 'microcms_upload_media' tool call in the server's CallToolRequest switch statement.
    break; case 'microcms_upload_media': result = await handleUploadMedia(params as unknown as MediaToolParameters); break;
  • src/server.ts:20-21 (registration)
    Imports the uploadMediaTool and handleUploadMedia from the tool file.
    import { getMediaTool, handleGetMedia } from './tools/get-media.js'; import { uploadMediaTool, handleUploadMedia } from './tools/upload-media.js';

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/microcmsio/microcms-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server