Skip to main content
Glama
index.ts2.46 kB
#!/usr/bin/env -S node --no-deprecation import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { z } from 'zod'; import OpenAI from 'openai'; import { writeFileSync } from 'fs'; const apiKey = process.env.API_KEY; if (!apiKey) { console.error("Error: API_KEY environment variable is not set"); process.exit(1); } const openai = new OpenAI({ apiKey: apiKey, }); async function main() { try { const server = new McpServer({ name: 'image-generator', version: '1.0.0' }); server.tool( 'generateImage', { outputPathAbsolute: z.string().describe('The absolute path where the image should be written out.'), prompt: z.string().describe("Text description of the desired image content"), quality: z.enum(["auto", "low", "medium", "high"]).optional().describe("The quality of the image."), size: z.enum(['1024x1024', '1024x1536', '1536x1024', 'auto']).optional().describe("Size of the generated image"), }, async ({ prompt, size = "1024x1024", quality="low", outputPathAbsolute}) => { try { const response = await openai.images.generate({ model: "gpt-image-1", prompt, n: 1, size: size, quality: quality, }); if (!response.data) { throw new Error(`API did not return any data.`); } if (!response.data[0]?.b64_json) { throw new Error('API did not return image data'); } const imageData = response.data[0].b64_json; const bytes = Buffer.from(imageData, 'base64'); writeFileSync(outputPathAbsolute, bytes) return { content: [ { type: 'text', text: `The image is now available at ${outputPathAbsolute}.` } ], message: "Image generated successfully!" }; } catch (error) { throw new Error(`Error generating image: ${JSON.stringify(error, null, 2)}`, {cause: error}); } } ); // Connect using stdio transport (for CLI usage) const transport = new StdioServerTransport(); await server.connect(transport); } catch (error) { console.error("Failed to start server:", error); process.exit(1); } } main();

Implementation Reference

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/jbrower95/mcp-asset-gen'

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