Skip to main content
Glama
index.ts4.32 kB
#!/usr/bin/env node import "dotenv/config" import { Configuration } from './api' import { createRecraftApi } from "./RecraftApi" import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js" import { generateImageHandler, generateImageTool } from "./tools/GenerateImage" import { imageToImageHandler, imageToImageTool } from "./tools/ImageToImage" import { Server } from "@modelcontextprotocol/sdk/server/index.js" import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js" import { RecraftServer } from "./RecraftServer" import path from "path" import os from "os" import { createStyleHandler, createStyleTool } from "./tools/CreateStyle" import { vectorizeImageHandler, vectorizeImageTool } from "./tools/VectorizeImage" import { removeBackgroundHandler, removeBackgroundTool } from "./tools/RemoveBackground" import { replaceBackgroundHandler, replaceBackgroundTool } from "./tools/ReplaceBackground" import { crispUpscaleHandler, crispUpscaleTool } from "./tools/CrispUpscale" import { creativeUpscaleHandler, creativeUpscaleTool } from "./tools/CreativeUpscale" import { getUserHandler, getUserTool } from "./tools/GetUser" const server = new Server( { name: 'mcp-recraft-server', version: '1.6.5', // x-release-please-version }, { capabilities: { tools: {}, } }, ) const remoteResultsStorage = process.env.RECRAFT_REMOTE_RESULTS_STORAGE === "1" || process.env.RECRAFT_REMOTE_RESULTS_STORAGE === "true" let homeDir: string try { homeDir = os.homedir() } catch (error) { try { homeDir = os.tmpdir() } catch (error) { homeDir = "" } } if (process.env.IMAGE_STORAGE_DIRECTORY) { process.env.IMAGE_STORAGE_DIRECTORY = (process.env.IMAGE_STORAGE_DIRECTORY ?? '').replace("${HOME}", homeDir) } if (!remoteResultsStorage && !process.env.IMAGE_STORAGE_DIRECTORY) { process.env.IMAGE_STORAGE_DIRECTORY = path.join(homeDir, ".mcp-recraft-server") } const apiConfig = new Configuration({ basePath: process.env.RECRAFT_API_URL, accessToken: process.env.RECRAFT_API_KEY, headers: { 'X-Client-Type': 'mcp-recraft-server', } }) const api = createRecraftApi(apiConfig) const recraftServer = new RecraftServer( api, remoteResultsStorage ? undefined : process.env.IMAGE_STORAGE_DIRECTORY ) server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ generateImageTool, createStyleTool, vectorizeImageTool, imageToImageTool, removeBackgroundTool, replaceBackgroundTool, crispUpscaleTool, creativeUpscaleTool, getUserTool, ], } }) server.setRequestHandler(CallToolRequestSchema, async (request) => { try { recraftServer.initializeIfNeeded() } catch (error) { return { content: [ { type: 'text', text: `Error initializing Recraft server: ${error}` } ], isError: true } } const {params: {name: tool, arguments: args}} = request switch (tool) { case generateImageTool.name: return await generateImageHandler(recraftServer, args ?? {}) case createStyleTool.name: return await createStyleHandler(recraftServer, args ?? {}) case vectorizeImageTool.name: return await vectorizeImageHandler(recraftServer, args ?? {}) case imageToImageTool.name: return await imageToImageHandler(recraftServer, args ?? {}) case removeBackgroundTool.name: return await removeBackgroundHandler(recraftServer, args ?? {}) case replaceBackgroundTool.name: return await replaceBackgroundHandler(recraftServer, args ?? {}) case crispUpscaleTool.name: return await crispUpscaleHandler(recraftServer, args ?? {}) case creativeUpscaleTool.name: return await creativeUpscaleHandler(recraftServer, args ?? {}) case getUserTool.name: return await getUserHandler(recraftServer, args ?? {}) default: return { content: [ { type: 'text', text: `Unknown tool: ${tool}` } ], isError: true } } }) const runServer = async () => { const transport = new StdioServerTransport() await server.connect(transport) console.error("Recraft MCP Server running on stdio") } runServer().catch(console.error)

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/recraft-ai/mcp-recraft-server'

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