Skip to main content
Glama
server.ts4.58 kB
import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js'; import { getListTool, handleGetList } from './tools/get-list.js'; import { getContentTool, handleGetContent } from './tools/get-content.js'; import { createContentPublishedTool, handleCreateContentPublished } from './tools/create-content-published.js'; import { createContentDraftTool, handleCreateContentDraft } from './tools/create-content-draft.js'; import { updateContentPublishedTool, handleUpdateContentPublished } from './tools/update-content-published.js'; import { updateContentDraftTool, handleUpdateContentDraft } from './tools/update-content-draft.js'; import { patchContentTool, handlePatchContent } from './tools/patch-content.js'; import { deleteContentTool, handleDeleteContent } from './tools/delete-content.js'; import { getMediaTool, handleGetMedia } from './tools/get-media.js'; import { uploadMediaTool, handleUploadMedia } from './tools/upload-media.js'; import { getApiInfoTool, handleGetApiInfo } from './tools/get-api-info.js'; import { getApiListTool, handleGetApiList } from './tools/get-apis-list.js'; import type { ToolParameters, MediaToolParameters } from './types.js'; const server = new Server( { name: 'microcms-mcp-server', version: '1.0.0', description: 'A Model Context Protocol server for microCMS API', }, { capabilities: { tools: {}, }, } ); server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ getListTool, getContentTool, createContentPublishedTool, createContentDraftTool, updateContentPublishedTool, updateContentDraftTool, patchContentTool, deleteContentTool, getMediaTool, uploadMediaTool, getApiInfoTool, getApiListTool, ], }; }); server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; const params = args as unknown as ToolParameters; try { let result; switch (name) { case 'microcms_get_list': result = await handleGetList(params); break; case 'microcms_get_content': result = await handleGetContent(params); break; case 'microcms_create_content_published': result = await handleCreateContentPublished(params); break; case 'microcms_create_content_draft': result = await handleCreateContentDraft(params); break; case 'microcms_update_content_published': result = await handleUpdateContentPublished(params); break; case 'microcms_update_content_draft': result = await handleUpdateContentDraft(params); break; case 'microcms_patch_content': result = await handlePatchContent(params); break; case 'microcms_delete_content': result = await handleDeleteContent(params); break; case 'microcms_get_media': result = await handleGetMedia(params as unknown as MediaToolParameters); break; case 'microcms_upload_media': result = await handleUploadMedia(params as unknown as MediaToolParameters); break; case 'microcms_get_api_info': result = await handleGetApiInfo(params); break; case 'microcms_get_api_list': result = await handleGetApiList(params); break; default: throw new Error(`Unknown tool: ${name}`); } return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return { content: [ { type: 'text', text: `Error: ${errorMessage}`, }, ], isError: true, }; } }); export async function startServer() { try { // Validate configuration early to provide better error messages const { parseConfig } = await import('./config.js'); parseConfig(); const transport = new StdioServerTransport(); await server.connect(transport); // console.error('microCMS MCP Server running on stdio'); } catch (error) { if (error instanceof Error && error.message.includes('microCMS credentials')) { console.error('Configuration Error:', error.message); process.exit(1); } throw error; } }

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