Skip to main content
Glama

mcp_openai_image

Generate images using OpenAI's DALL-E API by providing a text prompt, model, size, and quality parameters. Returns the file path for the created image, ensuring users can access and utilize the output effectively.

Instructions

OpenAI DALL-E API를 사용하여 이미지를 생성합니다. 생성된 이미지 파일 경로를 반환하며, 이 경로는 반드시 사용자에게 알려주어야 합니다.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
fileNameNo저장할 파일 이름 (확장자 제외)
modelNo사용할 모델 (예: dall-e-3, dall-e-2)
nNo생성할 이미지 수
promptYes이미지를 생성할 프롬프트
qualityNo이미지 품질 (dall-e-3만 해당)
saveDirNo이미지를 저장할 디렉토리
sizeNo이미지 크기
styleNo이미지 스타일 (dall-e-3만 해당)

Implementation Reference

  • MCP tool handler function that invokes openaiService.generateImage and formats the response as ToolResponse
    async handler(args: any): Promise<ToolResponse> {
      try {
        const result = await openaiService.generateImage(args);
        return {
          content: [{
            type: 'text',
            text: result
          }]
        };
      } catch (error) {
        return {
          content: [{
            type: 'text',
            text: `OpenAI 이미지 생성 오류: ${error instanceof Error ? error.message : String(error)}`
          }]
        };
      }
    }
  • Input schema for mcp_openai_image tool defining parameters such as prompt, model, size, quality, etc.
    inputSchema: {
      type: 'object',
      properties: {
        prompt: {
          type: 'string',
          description: '이미지를 생성할 프롬프트'
        },
        model: {
          type: 'string',
          description: '사용할 모델 (예: dall-e-3, dall-e-2)'
        },
        n: {
          type: 'number',
          description: '생성할 이미지 수',
          minimum: 1,
          maximum: 10
        },
        size: {
          type: 'string',
          description: '이미지 크기',
          enum: ['256x256', '512x512', '1024x1024', '1792x1024', '1024x1792']
        },
        quality: {
          type: 'string',
          description: '이미지 품질 (dall-e-3만 해당)',
          enum: ['standard', 'hd']
        },
        style: {
          type: 'string',
          description: '이미지 스타일 (dall-e-3만 해당)',
          enum: ['vivid', 'natural']
        },
        saveDir: {
          type: 'string',
          description: '이미지를 저장할 디렉토리'
        },
        fileName: {
          type: 'string',
          description: '저장할 파일 이름 (확장자 제외)'
        }
      },
      required: ['prompt']
    },
  • src/index.ts:25-54 (registration)
    Tool registration in MCP server capabilities, enabling mcp_openai_image
    tools: {
      mcp_sparql_execute_query: true,
      mcp_sparql_update: true,
      mcp_sparql_list_repositories: true,
      mcp_sparql_list_graphs: true,
      mcp_sparql_get_resource_info: true,
      mcp_ollama_run: true,
      mcp_ollama_show: true,
      mcp_ollama_pull: true,
      mcp_ollama_list: true,
      mcp_ollama_rm: true,
      mcp_ollama_chat_completion: true,
      mcp_ollama_status: true,
      mcp_http_request: true,
      mcp_openai_chat: true,
      mcp_openai_image: true,
      mcp_openai_tts: true,
      mcp_openai_transcribe: true,
      mcp_openai_embedding: true,
      mcp_gemini_generate_text: true,
      mcp_gemini_chat_completion: true,
      mcp_gemini_list_models: true,
      mcp_gemini_generate_images: false,
      mcp_gemini_generate_image: false,
      mcp_gemini_generate_videos: false,
      mcp_gemini_generate_multimodal_content: false,
      mcp_imagen_generate: false,
      mcp_gemini_create_image: false,
      mcp_gemini_edit_image: false
    },
  • Core implementation of image generation using OpenAI DALL-E API: calls /images/generations endpoint, downloads images from URLs, saves locally and returns file paths.
    async generateImage(args: {
      prompt: string;
      model?: string;
      n?: number;
      size?: string;
      quality?: string;
      style?: string;
      saveDir?: string;
      fileName?: string;
    }): Promise<string> {
      try {
        if (!OPENAI_API_KEY) {
          throw new McpError(
            ErrorCode.InternalError,
            'OPENAI_API_KEY가 설정되지 않았습니다.'
          );
        }
    
        const response = await axios.post(
          `${OPENAI_API_BASE}/images/generations`,
          {
            model: args.model || 'dall-e-3',
            prompt: args.prompt,
            n: args.n || 1,
            size: args.size || '1024x1024',
            quality: args.quality || 'standard',
            style: args.style || 'vivid',
            response_format: 'url'
          },
          {
            headers: {
              'Content-Type': 'application/json',
              'Authorization': `Bearer ${OPENAI_API_KEY}`
            }
          }
        );
    
        const images = response.data.data;
        const saveDir = args.saveDir || DEFAULT_SAVE_DIR;
        await this.ensureDirectoryExists(saveDir);
    
        // 이미지 URL을 다운로드하여 파일로 저장
        const savedFiles = [];
        for (let i = 0; i < images.length; i++) {
          const timestamp = Date.now();
          const fileName = args.fileName 
            ? `${args.fileName}_${i}.png` 
            : `dalle_${timestamp}_${i}.png`;
          const filePath = path.join(saveDir, fileName);
          
          const imageResponse = await axios.get(images[i].url, { responseType: 'arraybuffer' });
          await writeFileAsync(filePath, Buffer.from(imageResponse.data));
          
          savedFiles.push({ path: filePath, url: images[i].url });
        }
    
        return JSON.stringify({
          generated_images: savedFiles,
          original_response: response.data
        }, null, 2);
      } catch (error) {
        if (axios.isAxiosError(error)) {
          const statusCode = error.response?.status;
          const responseData = error.response?.data;
          
          throw new McpError(
            ErrorCode.InternalError,
            `OpenAI API 오류 (${statusCode}): ${
              typeof responseData === 'object' 
                ? JSON.stringify(responseData, null, 2) 
                : responseData || error.message
            }`
          );
        }
        
        throw new McpError(ErrorCode.InternalError, `이미지 생성 요청 실패: ${formatError(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/bigdata-coss/agent_mcp'

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