Skip to main content
Glama

openai-mcp

npm version CI License: MIT

openai-mcp MCP server – quality and maintenance score on Glama

Use OpenAI models from Claude, Cursor and any other MCP client: text, images, speech, transcription, embeddings and moderation.

Features

  • Each tool stays off until you set its model variable, so you choose which models the client can use. Only list_models is always available.

  • Generated and edited images and generated speech are saved to files.

  • Images and audio can be given as URLs or local file paths.

Related MCP server: OpenAI MCP Server

Setup

Requires Node.js 20 or higher and an OpenAI API key.

Each tool is enabled by its own model setting. Omit a setting to leave that tool disabled. Separate multiple model IDs with commas, or use * to allow any model. Replace sk-... with your OpenAI API key.

{
  "mcpServers": {
    "openai-mcp": {
      "command": "npx",
      "args": ["-y", "@dancommitsgit/openai-mcp"],
      "env": {
        "OPENAI_API_KEY": "sk-...",
        "OPENAI_MCP_TEXT_MODELS": "gpt-5.4-nano",
        "OPENAI_MCP_IMAGE_MODELS": "gpt-image-2.5-flare",
        "OPENAI_MCP_EMBEDDING_MODELS": "text-embedding-3-small",
        "OPENAI_MCP_SPEECH_MODELS": "gpt-4o-mini-tts",
        "OPENAI_MCP_TRANSCRIPTION_MODELS": "gpt-4o-mini-transcribe",
        "OPENAI_MCP_TRANSLATION_MODELS": "whisper-1",
        "OPENAI_MCP_MODERATION_MODELS": "omni-moderation-latest"
      }
    }
  }
}

A missing or invalid API key is reported as an error on the first tool call, not when the server starts. A request for a model that is not in the tool's list is rejected.

claude mcp add --scope user --env OPENAI_API_KEY=sk-... --env OPENAI_MCP_TEXT_MODELS=gpt-5.4-nano --env OPENAI_MCP_IMAGE_MODELS=gpt-image-2.5-flare --transport stdio openai-mcp -- npx -y @dancommitsgit/openai-mcp

Add one more --env for each other model setting in the JSON above. Keep --transport stdio after the last --env, or the server name is read as another variable.

This also applies to the Code tab in the Claude desktop app. Drop --scope user to make the server available only in the current project.

For the regular chat app. If you use the Code tab in the desktop app, use the Claude Code command instead.

Open Settings → Developer → Edit Config, paste the JSON above into claude_desktop_config.json, and restart Claude Desktop. The file is at ~/Library/Application Support/Claude/ on macOS and %APPDATA%\Claude\ on Windows.

Save the JSON above as .cursor/mcp.json in your project, or as ~/.cursor/mcp.json to use it in every project.

Add the server to .vscode/mcp.json. VS Code asks for the API key the first time the server starts and stores it securely. Add other OPENAI_MCP_*_MODELS entries as in the JSON above.

{
  "inputs": [
    {
      "type": "promptString",
      "id": "openai-api-key",
      "description": "OpenAI API key",
      "password": true
    }
  ],
  "servers": {
    "openai-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@dancommitsgit/openai-mcp"],
      "env": {
        "OPENAI_API_KEY": "${input:openai-api-key}",
        "OPENAI_MCP_TEXT_MODELS": "gpt-5.4-nano",
        "OPENAI_MCP_IMAGE_MODELS": "gpt-image-2.5-flare"
      }
    }
  }
}

Build from source

git clone https://github.com/DanCommitsGit/openai-mcp.git
cd openai-mcp
npm install
npm run build

Then point your client at the compiled entry point, keeping the same env as above:

{
  "command": "node",
  "args": ["/PATH/TO/openai-mcp/build/index.js"]
}

See CONTRIBUTING.md to run the tests and open a pull request.

Tools

Tool

Needs

Description

generate_text

OPENAI_MCP_TEXT_MODELS

Send a prompt, optional instructions, images, and web search to an OpenAI model

count_tokens

OPENAI_MCP_TEXT_MODELS

Count the input tokens a generate_text request would use

generate_image

OPENAI_MCP_IMAGE_MODELS

Generate one or more images from a text prompt

edit_image

OPENAI_MCP_IMAGE_MODELS

Edit or combine existing images using a text prompt

generate_speech

OPENAI_MCP_SPEECH_MODELS

Convert text to spoken audio

transcribe_audio

OPENAI_MCP_TRANSCRIPTION_MODELS

Transcribe audio from a URL or local file

translate_audio

OPENAI_MCP_TRANSLATION_MODELS

Translate audio from a URL or local file into English text

create_embeddings

OPENAI_MCP_EMBEDDING_MODELS

Get vector embeddings for one or more pieces of text

create_moderation

OPENAI_MCP_MODERATION_MODELS

Check text for potentially harmful content

list_models

None

List available models

Image and speech tools save files to your OS temp directory, unless the client passes outputPath, and return the file path.


This is an unofficial project and is not affiliated with OpenAI.

Available Tools

10 tools
count_tokensCount tokensA
Read-only

Count the input tokens a generate_text request would use, without running the model

NameRequiredDescriptionDefault
modelYesOpenAI model whose tokenizer to use. Must support image input if images are provided
imagesNoImages to include in the count, each as an http(s) URL or a file path on this server's filesystem (PNG, JPEG, WEBP, or GIF)
promptYesThe input text to count
webSearchNoCount the request as one that has web search enabled
instructionsNoOptional instructions to include in the count

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, and the description reinforces the key trait: no model invocation, so no cost or side effects from the call itself. It does not mention how faithful the estimate is versus the real generate_text count, but with annotations carrying the safety profile this is a solid addition rather than a gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the core verb first and the crucial non-execution caveat attached. Nothing extraneous, nothing buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only utility with a fully described schema and no output schema, the description covers purpose and behavior adequately. The one missing piece is what the response looks like (a token count integer, or a breakdown per input channel), which would matter when images and instructions are supplied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all five parameters (model, prompt, images, webSearch, instructions) are already documented in the schema. The description adds only the framing that the count mirrors a generate_text request, which is marginal but useful for interpreting webSearch and instructions. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (count) plus resource (input tokens) plus the exact consumer it is modeling (a generate_text request), and the qualifier 'without running the model' separates it cleanly from the sibling generate_text. An agent can tell immediately what this does and what it does not do.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'without running the model' implicitly frames the use case: estimating token/cost load before invoking generate_text. That is clear context, but there is no explicit when-not guidance or pointer to a sibling alternative for other counting needs (e.g. embeddings or moderation inputs).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_embeddingsCreate embeddingsC
Read-only

Get vector embeddings for one or more pieces of text

NameRequiredDescriptionDefault
inputYesText (or array of texts) to embed
modelYesOpenAI model to use for embeddings

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=true, and the description adds nothing beyond that. It says nothing about cost per token, which model is appropriate, batch size limits, whether embeddings are deterministic, or how many vectors come back for an array input — all real concerns for an embedding call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is terse to the point of under-specification, but nothing in it is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description should explain what comes back (embedding vectors, one per input, fixed dimensionality). It also gives no guidance on model selection even though 'model' is required. For a required-parameter tool with no output contract, this leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both 'input' and 'model' are already documented. The description's phrase 'one or more pieces of text' echoes the schema's anyOf without adding format, size, or model-choice guidance, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get vector embeddings') and notes it accepts one or many texts, which is enough to distinguish it from all siblings (text/image/audio generation). It stops short of naming why an agent would pick this over, say, generate_text, but the resource is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool, when not to, or what the alternatives are. The agent is left to infer that this is for semantic search / similarity / clustering use cases rather than text generation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_moderationCreate moderationA
Read-only

Check text for potentially harmful content using an OpenAI moderation model. Returns, for each input, whether it was flagged plus per-category flags and scores

NameRequiredDescriptionDefault
inputYesText (or array of texts) to classify
modelYesOpenAI model to use for moderation

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true already declares the safety profile, and the description adds real value by disclosing the return shape: per-input flagged status plus per-category flags and scores. With no output schema, this return-format disclosure is important. It stops short of covering rate limits, model availability, or error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, with the action front-loaded and the return shape immediately following. Nothing extraneous and nothing padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read-only tool with no output schema, the description covers purpose and return values well. The main remaining gap is the required 'model' parameter — no example or guidance on valid model names is given anywhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are already documented. The description adds only a slight hint that input may be batched ('for each input'), which is already conveyed by the anyOf array in the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('check text for potentially harmful content using an OpenAI moderation model') and distinguishes itself from siblings like create_embeddings or generate_text by naming the moderation task. It does not explicitly name alternatives, but the purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied — the agent can infer this is the tool for safety/moderation checks — but there is no explicit when-to-use or when-not-to-use guidance, and no advice on how to pick the model parameter, which is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

edit_imageEdit imageA
Destructive

Edit or combine existing images using a text prompt and an OpenAI image model. By default returns the local file path(s) the result was saved to rather than inline image data; set returnAs to 'base64' for inline data instead

NameRequiredDescriptionDefault
nNoNumber of edited images to generate (1-10)
maskNoOptional PNG mask, as an http(s) URL or a file path, with the same dimensions as the first image. Fully transparent areas mark where the image should be edited
sizeNoImage dimensions. GPT image models accept 1024x1024, 1536x1024, 1024x1536, or auto; dall-e-2 accepts 256x256, 512x512, or 1024x1024
modelYesOpenAI model to use for image editing. GPT image models and dall-e-2 support editing; dall-e-3 does not
imagesYesImages to edit, each as an http(s) URL or a file path on this server's filesystem. GPT image models accept up to 16 PNG, WEBP, or JPEG files under 50MB; dall-e-2 accepts a single square PNG under 4MB
promptYesDescription of the edit to make
returnAsNoHow to return edited images. 'path' (default) saves each image to disk and returns its file path, avoiding the large inline payloads that can exceed an MCP client's tool result size limit. 'base64' returns the image data inline instead, which is more likely to hit that limit for anything but small imagespath
outputPathNoFile path to save the image to when returnAs is 'path'. Ignored when returnAs is 'base64'. If n > 1, a 1-based index is inserted before the file extension for each image. Defaults to a temp file if omitted

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnlyHint=false and destructiveHint=true; the description adds genuinely useful context by disclosing that results are written to disk and returned as file paths by default, with the client result-size limit as the rationale for that default. It stops short of warning that writing to outputPath may overwrite an existing file, which is the specific behavior the destructiveHint implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core action stated first and the return-mode caveat second. Every clause carries information the agent needs before calling.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 parameters, full schema coverage and no output schema, the description covers purpose and output form adequately. The remaining gap is file-side-effect semantics (overwrite behavior on outputPath, where temp files land), which matters for a tool flagged destructive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already explains returnAs, outputPath, model compatibility and size constraints in detail. The description's returnAs explanation mostly restates the schema's own rationale, so it adds little beyond structured fields – baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Edit or combine') and resource ('existing images') plus the underlying capability (text prompt + OpenAI image model). It implicitly distinguishes itself from the sibling generate_image (which creates new images), but never names that sibling explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied by the word 'existing' – an agent must infer that this tool is for transforming supplied images rather than creating new ones, and that generate_image is the alternative. No explicit when-to-use / when-not-to-use guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_imageGenerate imageA
Destructive

Generate an image from a text prompt using an OpenAI image model. By default returns the local file path(s) the image was saved to rather than inline image data; set returnAs to 'base64' for inline data instead

NameRequiredDescriptionDefault
nNoNumber of images to generate (1-10; dall-e-3 only supports 1)
sizeNoImage dimensions. Depends on the model: GPT image models accept 1024x1024, 1536x1024, 1024x1536, or auto; dall-e-2 accepts 256x256, 512x512, or 1024x1024; dall-e-3 accepts 1024x1024, 1792x1024, or 1024x1792
modelYesOpenAI model to use for image generation
promptYesDescription of the image to generate
returnAsNoHow to return generated images. 'path' (default) saves each image to disk and returns its file path, avoiding the large inline payloads that can exceed an MCP client's tool result size limit. 'base64' returns the image data inline instead, which is more likely to hit that limit for anything but small imagespath
outputPathNoFile path to save the image to when returnAs is 'path'. Ignored when returnAs is 'base64'. If n > 1, a 1-based index is inserted before the file extension for each image. Defaults to a temp file if omitted

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With readOnlyHint=false and destructiveHint=true already declared, the description still adds real context: by default the image is written to disk and a file path is returned, and base64 inline data risks exceeding an MCP client's result size limit. What it does not disclose is why the operation is destructive — e.g. whether writing to outputPath overwrites an existing file — which is the one behavioral fact an agent most needs before calling it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no waste, and the default return behavior is front-loaded immediately after the purpose statement. Every clause carries information an agent would otherwise have to open the schema to find.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description correctly takes on the burden of describing return values, covering both the file-path and base64 forms. It is nearly complete for a 6-parameter generation tool, with only overwrite/error semantics left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains prompt, model, size, n, returnAs and outputPath in detail. The description restates the returnAs default and the path-vs-inline tradeoff but adds no syntax, format, or constraint information beyond the structured fields, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Generate an image from a text prompt using an OpenAI image model"), which separates it from generate_text and generate_speech. It stops short of explicitly contrasting with the closest sibling, edit_image, so an agent must infer the generate-vs-edit boundary from the phrase "from a text prompt".

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the tool's nature — call it when you need a new image from a text description — but no when-to-use or when-not conditions and no alternative tools are named. The only routing guidance offered is internal to the tool (path vs base64), not across tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_speechGenerate speechA
Destructive

Convert text to spoken audio using an OpenAI text-to-speech model. By default returns the local file path the audio was saved to rather than inline data; set returnAs to 'base64' for inline audio instead

NameRequiredDescriptionDefault
inputYesThe text to convert to speech (max 4096 characters)
modelYesOpenAI model to use for speech generation
speedNoPlayback speed from 0.25 to 4.0 (default 1.0)
voiceNoVoice to use, e.g. alloy, ash, ballad, coral, echo, fable, onyx, nova, sage, shimmer, verse, marin, or cedaralloy
formatNoAudio file format to generatemp3
returnAsNoHow to return the generated audio. 'path' (default) saves it to disk and returns its file path, avoiding the large inline payloads that can exceed an MCP client's tool result size limit. 'base64' returns the audio data inline insteadpath
outputPathNoFile path to save the audio to when returnAs is 'path'. Ignored when returnAs is 'base64'. Defaults to a temp file if omitted
instructionsNoOptional guidance on tone, style, or delivery. Ignored by tts-1 and tts-1-hd

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only flag readOnlyHint=false and destructiveHint=true; the description adds the important behavior that a file is written to disk and that inline base64 payloads can exceed MCP client result-size limits. It does not cover API key/auth requirements or file cleanup, but the side-effect of disk writing is disclosed, consistent with destructiveHint=true rather than contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no padding, and the default-return-behavior fact is placed first because it is what an agent most needs to know before parsing a result. Every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully explains what comes back (a file path by default, inline audio otherwise), which is the critical missing piece. It could say more about cost/latency or that the saved file persists, but for an 8-param tool with full schema coverage this is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all eight parameters are already documented in detail, including voice enumeration, speed range, format enum, and the outputPath/returnAs interaction. The description only restates the returnAs semantics, adding no syntax or constraints beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Convert text to spoken audio') plus the backing engine (OpenAI TTS model). This is unmistakable against siblings like generate_text, transcribe_audio, or generate_image, none of which produce synthesized speech.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit rule for the returnAs decision (default path, use base64 for inline), which is genuinely useful. But it offers no guidance on model selection, voice choice, or when to prefer this over sibling tools such as transcribe_audio in a round-trip workflow. Usage is implied rather than fully framed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_textGenerate textA
Read-only

Send a prompt to an OpenAI model and return its text reply. Pass images to ask a vision-capable model about them

NameRequiredDescriptionDefault
modelYesOpenAI model to use for text generation. Must support image input if images are provided
imagesNoImages to include with the prompt, each as an http(s) URL or a file path on this server's filesystem (PNG, JPEG, WEBP, or GIF)
promptYesThe input text to send to the model
webSearchNoLet the model search the web. Cited pages are listed under Sources in the reply
instructionsNoOptional high-level instructions to steer the model's behavior

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a prompt-and-reply tool, and the description confirms the return is a text reply, but it adds little beyond the schema — web search citation behavior and image format support are already documented in the parameter descriptions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and immediately covering the vision variant. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly states the return is the model's text reply. For a five-parameter tool it is nearly complete, missing only model-choice or error-behavior context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already well documented in the schema. The description reinforces the images/model constraint but adds no syntax, defaults, or format details beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Send a prompt to an OpenAI model and return its text reply') and notes vision capability when images are passed. This implicitly separates it from siblings like generate_image and generate_speech, though it never names them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The image sentence gives a conditional hint (use a vision-capable model when passing images), but there is no explicit when-to-use guidance or exclusion pointing to alternatives such as generate_image for image output or count_tokens for token accounting.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_modelsList modelsA
Read-only

List available OpenAI models. Returns configured models unless a tool allows any model

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful behavioral context about which models are returned ('configured models unless a tool allows any model'), but it remains vague about what 'configured' means and does not describe the response shape in detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is only two sentences and front-loads the core purpose. The second sentence adds useful scoping but is slightly ambiguous rather than tightly precise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only listing tool with no output schema, the description is mostly complete: it states what is listed and the conditional scoping. It could say more about the response format, but nothing critical for invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so this dimension gets the baseline score of 4. The description adds no parameter details because none are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('List available OpenAI models') and clarifies the returned scope ('configured models unless a tool allows any model'). There are no sibling tools to differentiate from, so this is clear without needing extra routing language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool is relevant by explaining that it returns configured models unless a calling tool allows any model. It does not explicitly state when to use or avoid the tool, but the usage context is reasonably inferable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

transcribe_audioTranscribe audioB
Read-only

Transcribe spoken audio to text using an OpenAI speech-to-text model

NameRequiredDescriptionDefault
fileYesAudio to transcribe, as an http(s) URL or a file path on this server's filesystem (flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm)
modelYesOpenAI model to use for audio transcription
formatNoOutput format. 'verbose_json' includes segment and word timestampsjson
promptNoOptional text to guide the model's style or vocabulary, or to continue a previous audio segment
languageNoISO-639-1 language code of the input audio (e.g. 'en'). Improves accuracy and latency

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

readOnlyHint=true is consistent with a transcription operation, and the description adds that an external OpenAI model performs the work, hinting at API cost/dependency. However, it discloses nothing about file size or duration limits, remote URL fetching behavior, latency, or error modes, so behavioral burden mostly falls on the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity means nothing is prioritized or expanded where the operation is non-trivial.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a five-parameter tool wrapping an external paid API with no output schema, the description omits practical constraints an agent needs: input size/duration limits, whether remote URLs are fetched, expected latency, and cost implications. The schema covers parameter details, but operational context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so file formats, model, format enum, prompt, and language are all documented in the schema itself. The description adds no parameter-level meaning beyond naming the model provider, which is the baseline for fully covered schemas.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Transcribe spoken audio to text') plus the underlying engine ('OpenAI speech-to-text model'). It is reasonably distinguishable from sibling translate_audio by the verb 'transcribe', though it never explicitly contrasts the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus translate_audio or generate_speech, and no preconditions such as file size limits, supported duration, or cost/auth implications of calling an OpenAI model. The agent must infer usage entirely from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

translate_audioTranslate audioA
Read-only

Translate spoken audio in any supported language into English text using an OpenAI speech-to-text model. Output may occasionally come back untranslated, in its original language

NameRequiredDescriptionDefault
fileYesAudio to translate, as an http(s) URL or a file path on this server's filesystem (flac, mp3, mp4, mpeg, mpga, m4a, ogg, wav, or webm)
modelYesOpenAI model to use for audio translation
formatNoOutput format. 'verbose_json' includes segment timestampsjson
promptNoOptional English text to guide the model's style or vocabulary, or to continue a previous audio segment

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, so the safety profile is already covered. The description adds a genuinely useful non-obvious trait beyond the annotations: output may occasionally return untranslated in the original language, which an agent would otherwise not anticipate and would need to validate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, both earning their place: the first declares the operation, the second flags the reliability caveat. The core purpose is front-loaded with no filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries return-value burden, and it does partly cover this by noting the possible untranslated output; the format parameter further documents output shapes. Missing only minor context like the language of the prompt or model selection guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so file, model, format, and prompt are already fully documented, establishing the baseline of 3. The description contributes no additional parameter meaning such as model choice or prompt behavior, so it neither compensates nor detracts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (translate) plus resource (spoken audio) and the resulting artifact (English text), which inherently separates it from transcribe_audio's language-preserving behavior. It stops short of naming that sibling explicitly, so the differentiation must be inferred from the target language.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'into English text' phrasing implies the use case (foreign-language audio needing an English rendering), but there is no explicit statement of when to pick this over transcribe_audio, nor any prerequisites. Guidance is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.2.0
    • Changedcount_tokens1 field changed
      • addedInput schema / properties / webSearch
        Added value: +{
        +  "description": "Count the request as one that has web search enabled",
        +  "type": "boolean"
        +}
    • Changedgenerate_text1 field changed
      • addedInput schema / properties / webSearch
        Added value: +{
        +  "description": "Let the model search the web. Cited pages are listed under Sources in the reply",
        +  "type": "boolean"
        +}
  2. 1 tool updatev1.1.2
    • Addedcreate_moderation
  3. 8 tool updates
    • Addedcount_tokens
    • Addedcreate_embeddings
    • Addededit_image
    • Addedgenerate_image
    • Addedgenerate_speech
    • Addedgenerate_text
    • Addedtranscribe_audio
    • Addedtranslate_audio
  4. 1 tool updatev1.1.1
    • First observedlist_models

TDQS

A3.7/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target clearly distinct OpenAI capabilities: text generation, token counting, embeddings, moderation, image generation/editing, model listing, and speech generation/transcription/translation. The only mild overlap is transcribe_audio versus translate_audio, since both convert speech to text, though the descriptions make the translation-to-English distinction reasonably clear.

Naming Consistency4/5

All names are snake_case and follow a verb_noun structure, which is highly predictable. There is a minor inconsistency in verb choice between create_embeddings/create_moderation and generate_text/generate_image/generate_speech, but the pattern remains readable.

Tool Count5/5

Ten tools is a well-scoped set for an OpenAI API wrapper, covering major modalities without obvious filler. Each tool maps to a recognizable OpenAI capability and earns its place.

Completeness4/5

The surface covers text generation, vision input, token counting, embeddings, moderation, image generation/editing, model listing, TTS, transcription, and translation. Minor gaps exist around other OpenAI API areas such as fine-tuning, files, or assistants, but core model-inference workflows are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables integration with OpenAI models through the MCP protocol, supporting concise and detailed responses for use with Claude Desktop.
    1
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A universal server that enables MCP-compatible clients (like Claude Desktop, Cursor, VS Code) to access OpenAI's APIs for chat completions, image generation, embeddings, and model listing through a standardized interface.
    13 npm
    7
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables Claude to directly invoke OpenAI's chat models (GPT-4o, GPT-4o-mini, o1-preview, o1-mini) through a Model Context Protocol integration, allowing users to query and compare responses from different AI models within Claude Desktop.
    1
    1
    MIT