OpenAI Assistant MCP Server
# 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`.
## Installation
To install the necessary dependencies, navigate to the project root and run:
```bash
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:**
```bash
export OPENAI_API_KEY='your-api-key-here'
mcp-server-openai
```
**Using a command-line argument:**
```bash
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.
```json
{
"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-openai` | Ask a direct question. | `query` (string), `model` (enum: `gpt-4.1`, `gpt-4.1-mini`, `gpt-4o`, etc.), `temperature` (number), `max_tokens` (integer) |
| `list-assistants` | List all available assistants. | None |
| `retrieve-assistant` | Retrieve an assistant by its ID. | `assistant_id` (string) |
| `create-assistant` | Create a new assistant. | `name` (string), `instructions` (string), `model` (string), `temperature` (number), `file_ids` (array of strings), `enable_file_search` (boolean) |
| `update-assistant` | Update an existing assistant. | `assistant_id` (string), `name` (string, optional), `instructions` (string, optional), `model` (string, optional), `temperature` (number, optional), `file_ids` (array of strings, optional), `enable_file_search` (boolean, optional) |
| `delete-assistant` | Delete an assistant by its ID. | `assistant_id` (string) |
| `upload-file` | Upload a file for use with assistants. | `file_path` (string) |
| `list-files` | List all files available for assistants. | None |
| `delete-file` | Delete a file by its ID. | `file_id` (string) |
## 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](https://openai.com/pricing/), as they can change.
| Model | Input Price / 1M tokens | Output Price / 1M tokens |
| ----------------- | ----------------------- | ------------------------ |
| `gpt-4o` | $5.00 | $15.00 |
| `gpt-4o-mini` | $0.15 | $0.60 |
| `gpt-4-turbo` | $10.00 | $30.00 |
| `gpt-3.5-turbo` | $0.50 | $1.50 |
## Development
To contribute to this project, clone the repository and install it in editable mode:
```bash
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`:
```bash
pytest
```
Make sure you have your `OPENAI_API_KEY` environment variable set.
## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
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.