OpenAI Assistant MCP Server
Provides tools for interacting with OpenAI's Chat Completion and Assistants APIs, including direct queries to GPT models, assistant management (create, update, delete, list), file management for assistants, and tool configuration like file_search.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OpenAI Assistant MCP Serverask-openai query='Summarize quantum computing basics' model='gpt-4o'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Server for OpenAI
This project provides a server compliant with the Machine-to-Machine Communications Protocol (MCP) that acts as a bridge to various OpenAI API functionalities. It allows MCP clients to interact with OpenAI's Chat Completion and Assistants APIs through a standardized set of tools.
Features
The server exposes several tools to interact with the OpenAI API:
Chat Completion: Ask a direct question to a specified model (
gpt-4,gpt-3.5-turbo).Assistant Management: Create, list, retrieve, update, and delete assistants.
File Management: Upload, list, and delete files associated with assistants.
Tool Management: Enable or disable tools for assistants, such as
file_search.
Related MCP server: RanchHand
Installation
To install the necessary dependencies, navigate to the project root and run:
pip install .This will install all the packages defined in pyproject.toml, including mcp, openai, and click.
Usage
To start the server, you need to provide your OpenAI API key. You can do this by setting an environment variable or by passing it as a command-line argument.
Using an environment variable:
export OPENAI_API_KEY='your-api-key-here'
mcp-server-openaiUsing a command-line argument:
mcp-server-openai --openai-api-key 'your-api-key-here'The server will start and listen for MCP messages over stdio.
Usage in Cursor
To configure this server in an MCP client like Cursor, use the following configuration. Replace "LOCAL PATH" with the absolute path to this project's directory and "OPENAI API KEY" with your actual key.
{
"mcpServers": {
"openai-server": {
"command": "mcp-server-openai",
"args": [],
"env": {
"PYTHONPATH": "LOCAL PATH",
"OPENAI_API_KEY": "OPENAI API KEY"
}
}
}
}Available Tools
Here is a detailed list of the tools exposed by the server:
Tool | Description | Parameters |
| Ask a direct question. |
|
| List all available assistants. | None |
| Retrieve an assistant by its ID. |
|
| Create a new assistant. |
|
| Update an existing assistant. |
|
| Delete an assistant by its ID. |
|
| Upload a file for use with assistants. |
|
| List all files available for assistants. | None |
| Delete a file by its ID. |
|
Model Pricing
Below is an estimated pricing table for some of the models available through this server. Prices are per 1 million tokens. Please verify the latest prices on the official OpenAI pricing page, as they can change.
Model | Input Price / 1M tokens | Output Price / 1M tokens |
| $5.00 | $15.00 |
| $0.15 | $0.60 |
| $10.00 | $30.00 |
| $0.50 | $1.50 |
Development
To contribute to this project, clone the repository and install it in editable mode:
git clone https://github.com/snilld-ai/openai-assistant-mcp
cd openai-assistant-mcp
pip install -e .Testing
The project includes a basic test file to verify the connection to the OpenAI API. To run the tests, use pytest:
pytestMake sure you have your OPENAI_API_KEY environment variable set.
License
This project is licensed under the MIT License. See the LICENSE file for details.
Available Tools
9 toolsask-openaiC
Ask my assistant models a direct question
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Ask assistant | |
| model | No | gpt-4.1 | |
| temperature | No | ||
| max_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description only states 'Ask my assistant models a direct question', which implies a read-like interaction but doesn't disclose any behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, response format, or potential side effects. For a tool with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, 'Ask my assistant models a direct question', which is front-loaded and wastes no words. However, it's overly brief to the point of under-specification, lacking necessary details for clarity. It earns a high score for conciseness but loses a point because the brevity compromises usefulness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a tool with 4 parameters, no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't provide enough context for an AI agent to understand what the tool does, how to use it effectively, or what to expect in return. The lack of behavioral and parameter details makes it inadequate for informed tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is low at 25%, with only the 'query' parameter having a description ('Ask assistant'). The description text does not add any meaning beyond the schema: it doesn't explain what 'model' refers to, what 'temperature' or 'max_tokens' control, or how parameters interact. With 4 parameters and minimal schema coverage, the description fails to compensate, leaving most parameters semantically unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Ask my assistant models a direct question' states a vague purpose: it indicates asking something to models but lacks specificity about what 'assistant models' are or what domain this operates in. It doesn't distinguish from siblings like 'create-assistant' or 'retrieve-assistant', which are clearly different operations. The verb 'ask' is generic, and 'direct question' is ambiguous without context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention any prerequisites, context, or exclusions. Given siblings like 'create-assistant' or 'list-assistants', there's no indication of how this tool relates to them or when it's appropriate to ask a question versus performing other assistant-related operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create-assistantC
Create a new OpenAI assistant
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name of the assistant | |
| instructions | Yes | The assistant's instructions | |
| model | Yes | The model to use | gpt-4-turbo |
| temperature | No | The sampling temperature | |
| file_ids | No | A list of file IDs to attach to the assistant | |
| enable_file_search | No | Enable file search tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It states the tool creates an assistant but doesn't mention any behavioral traits: no information about permissions required, whether creation is reversible (via 'delete-assistant'), rate limits, cost implications, or what the response looks like. For a creation tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core purpose without any fluff. It's appropriately sized for a creation tool and front-loaded with the essential action. Every word earns its place, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of creating an OpenAI assistant (with 6 parameters, 3 required) and no annotations or output schema, the description is incomplete. It doesn't address key contextual aspects like what happens after creation (e.g., returns an assistant ID), dependencies on other tools (e.g., 'upload-file' for file_ids), or error conditions. The agent lacks sufficient information to use this tool effectively in isolation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly with descriptions and defaults. The description adds no parameter-specific information beyond what's in the schema, such as explaining relationships between parameters (e.g., how 'file_ids' interacts with 'enable_file_search'). This meets the baseline of 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and resource ('a new OpenAI assistant'), making the purpose immediately understandable. It distinguishes from siblings like 'update-assistant' or 'list-assistants' by specifying creation rather than modification or retrieval. However, it doesn't explicitly differentiate from 'upload-file' which also creates resources, though of a different type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing file IDs from 'upload-file' first), when not to use it (e.g., for updating existing assistants), or explicit alternatives like 'update-assistant' for modifications. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-assistantC
Delete an OpenAI assistant
| Name | Required | Description | Default |
|---|---|---|---|
| assistant_id | Yes | The ID of the assistant to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool deletes an assistant, implying a destructive mutation, but lacks details on permissions required, whether deletion is permanent or reversible, rate limits, or what happens to associated data. This is a significant gap for a destructive tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and no output schema, the description is inadequate. It lacks critical behavioral context (e.g., permanence, side effects) and doesn't compensate for the absence of structured fields, leaving the agent with insufficient information for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the single parameter 'assistant_id' documented in the schema. The description doesn't add any parameter details beyond what the schema provides, such as format examples or sourcing guidance. Baseline 3 is appropriate as the schema handles the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and target resource ('an OpenAI assistant'), providing a specific verb+resource combination. However, it doesn't differentiate this tool from sibling tools like 'delete-file' beyond the resource type, missing explicit sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites (e.g., needing an existing assistant ID), exclusions, or comparisons with sibling tools like 'update-assistant' or 'retrieve-assistant' for different operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete-fileC
Delete a file
| Name | Required | Description | Default |
|---|---|---|---|
| file_id | Yes | The ID of the file to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Delete a file' implies a destructive, irreversible mutation, but the description doesn't warn about this, mention permissions required, or describe what happens upon success/failure. This is inadequate for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with just three words, front-loading the key action and resource. There's zero waste or redundancy, making it efficient for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is incomplete. It lacks critical context like behavioral warnings, success/error outcomes, or usage constraints, leaving significant gaps for an agent to operate safely and effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the schema fully documenting the single parameter 'file_id'. The description adds no parameter details beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a file'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'delete-assistant' or 'list-files' beyond the resource name, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list-files' or 'upload-file', nor does it mention prerequisites (e.g., needing a valid file_id). It's a bare statement with no contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-assistantsB
List OpenAI assistants
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits such as pagination, rate limits, authentication needs, or what data is returned. It misses critical context for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste, front-loaded with the core action. It's appropriately sized for a simple tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema), the description is minimally adequate but incomplete. It lacks details on return format, pagination, or error handling, which are important for a list operation even without annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description doesn't need to add parameter details, and it correctly implies no inputs are required, aligning with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List') and resource ('OpenAI assistants'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'retrieve-assistant' or explain scope limitations, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'retrieve-assistant' (for single assistant details) or 'create-assistant' (for creating new ones). The description lacks context about usage scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list-filesB
List files available for assistants
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks behavioral details. It doesn't disclose whether this is a read-only operation (implied by 'List' but not explicit), what the output format might be (e.g., list of file IDs or metadata), pagination behavior, or any rate limits. The description adds minimal context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate but lacks completeness. It doesn't explain what 'files available for assistants' means (e.g., uploaded files vs. system files), the return format, or behavioral traits like safety or performance. For a simple list tool, it meets basic needs but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't mention parameters, and it adds value by specifying the scope ('available for assistants'), which isn't captured in the schema. Baseline for 0 parameters is 4, as it avoids unnecessary details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('List') and resource ('files available for assistants'), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'upload-file' or 'delete-file' beyond the obvious list vs. create/delete distinction, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether files must be uploaded first), compare it to other listing tools (like 'list-assistants'), or indicate when not to use it (e.g., for filtering or detailed file retrieval).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retrieve-assistantC
Retrieve an OpenAI assistant by ID
| Name | Required | Description | Default |
|---|---|---|---|
| assistant_id | Yes | The ID of the assistant to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as read-only nature (implied but not explicit), error handling (e.g., for invalid IDs), response format, or any rate limits or authentication needs. This is inadequate for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the tool's purpose without fluff. It's appropriately sized and front-loaded, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (a retrieval operation with no output schema) and lack of annotations, the description is incomplete. It doesn't explain what information is returned (e.g., assistant details, configuration), error scenarios, or how it fits into workflows with siblings like 'update-assistant'. This leaves significant gaps for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'assistant_id' fully. The description adds no additional meaning beyond what's in the schema (e.g., format examples, source of IDs, or constraints), meeting the baseline but not enhancing parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('retrieve') and resource ('OpenAI assistant by ID'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'list-assistants' or 'update-assistant' beyond the basic action, missing explicit comparison that would earn a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing assistant ID), contrast with 'list-assistants' for discovery, or specify use cases like fetching details for modification. This leaves the agent with minimal context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update-assistantB
Update an existing OpenAI assistant
| Name | Required | Description | Default |
|---|---|---|---|
| assistant_id | Yes | The ID of the assistant to update | |
| name | No | The new name of the assistant | |
| instructions | No | The new instructions for the assistant | |
| model | No | The new model for the assistant | |
| temperature | No | The new sampling temperature | |
| file_ids | No | The new list of file IDs attached to the assistant | |
| enable_file_search | No | Enable or disable the file search tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation operation, it doesn't describe what happens to unspecified fields (partial vs. complete updates), whether changes are reversible, permission requirements, rate limits, or error conditions. This leaves significant behavioral gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately communicates the tool's purpose without any unnecessary words. It's perfectly front-loaded and wastes no space on redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 7 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, error conditions, or behavioral constraints. The 100% schema coverage helps with parameters, but overall context for safe and effective use is lacking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so all parameters are documented in the schema. The description adds no additional parameter information beyond what's in the schema properties. This meets the baseline expectation when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Update') and resource ('an existing OpenAI assistant'), making the purpose immediately understandable. It distinguishes from siblings like 'create-assistant' and 'delete-assistant' by specifying it modifies existing assistants rather than creating new ones or deleting them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when modifying an existing assistant, but doesn't explicitly state when to use this versus alternatives like 'create-assistant' or 'retrieve-assistant'. It mentions 'existing' which differentiates from creation, but lacks explicit guidance on prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload-fileC
Upload a file for use by assistants
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | The local path to the file to upload |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool uploads files but doesn't mention permissions required, file size limits, supported formats, whether uploads are permanent, or what happens after upload. This is inadequate for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool with one parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file upload tool with no annotations and no output schema, the description is insufficient. It doesn't explain what happens after upload, whether files are stored persistently, what authentication is needed, or any error conditions. The context signals indicate this is a mutation tool (upload implies write), yet behavioral details are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the single parameter 'file_path'. The description doesn't add any parameter-specific information beyond what's in the schema, maintaining the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('upload') and resource ('a file'), specifying it's 'for use by assistants'. However, it doesn't distinguish this from sibling tools like 'delete-file' or 'list-files' beyond the obvious verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. The description mentions 'for use by assistants' but doesn't specify prerequisites, constraints, or when other file-related tools might be more appropriate.
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.
9 tool updates
- First observed
ask-openai - First observed
create-assistant - First observed
delete-assistant - First observed
delete-file - First observed
list-assistants - First observed
list-files - First observed
retrieve-assistant - First observed
update-assistant - First observed
upload-file
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose targeting specific resources and actions in the OpenAI Assistant domain. For example, list-assistants vs. retrieve-assistant for listing all vs. getting one by ID, and create-assistant vs. update-assistant vs. delete-assistant for full lifecycle management. No tools appear to overlap in functionality.
All tool names follow a consistent verb_noun pattern with hyphens, such as create-assistant, delete-assistant, list-assistants, and upload-file. The naming is uniform throughout, making it predictable and easy for agents to understand the action and target resource.
With 9 tools, this server is well-scoped for managing OpenAI assistants and related files. The count is appropriate, covering core operations like CRUD for assistants and file management without being overwhelming or too sparse. Each tool earns its place in the workflow.
The tool set provides complete coverage for the OpenAI Assistant domain, including full CRUD lifecycle for assistants (create, retrieve, update, delete, list) and file management (upload, list, delete). The ask-openai tool adds a direct interaction capability, ensuring no obvious gaps for agent workflows.
Maintenance
Related MCP Connectors
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Authenticated MCP Agent (Openai)
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude and other MCP-compatible tools to communicate with OpenAI's GPT models (GPT-5, GPT-5-mini, o3) with conversation history and session management. Features advanced controls like reasoning effort settings, token tracking, and parallel conversation sessions for efficient AI workflows.5 npm-
- -licenseCqualityNot gradedmaintenanceEnables interaction with OpenAI-compatible APIs (like Ollama) through MCP tools. Provides access to chat completions, model listings, and embeddings generation from local or remote OpenAI-style endpoints.3-
- AlicenseBqualityDmaintenanceEnables MCP-compatible clients to leverage OpenAI's multimodal capabilities (vision, image generation, speech-to-text, text-to-speech) through file-oriented tools with a security-first architecture.101MIT
- AlicenseNot gradedqualityDmaintenanceProvides a standardized interface for interacting with OpenAI's tools and services through the Model Context Protocol, enabling seamless integration with MCP-compliant applications.MIT