# 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.