Skip to main content
Glama
xncbf
by xncbf

ChatGPT MCP Server

A Model Context Protocol (MCP) server that enables AI assistants to interact with the ChatGPT desktop app on macOS.

https://github.com/user-attachments/assets/a30c9b34-cdbe-4c0e-a0b0-33eb5054db5c

Language Support

Supported system languages for response detection:

  • Korean

  • English

If your macOS system language is not listed above, please follow these instructions:

  1. Make sure ChatGPT desktop app is running

  2. Run show_all_button_names.applescript and copy the output to create an issue for language support.

Related MCP server: MCP Bridge Server

Features

  • Send prompts to ChatGPT from any MCP-compatible AI assistant

  • Built with Python and FastMCP

Note: This server only supports English text input. Non-English characters may not work properly.

Installation

Prerequisites

  • macOS

  • ChatGPT desktop app installed and running

  • Python 3.10+

  • uv package manager

For Claude Code Users

Simply run:

claude mcp add chatgpt-mcp uvx chatgpt-mcp

That's it! You can start using ChatGPT commands in Claude Code.

For Other MCP Clients

Step 1: Install the MCP Server

# Install with uv
uv add chatgpt-mcp

Option B: Manual Installation

# Clone the repository
git clone https://github.com/xncbf/chatgpt-mcp
cd chatgpt-mcp

# Install dependencies with uv
uv sync

Step 2: Configure Your MCP Client

If installed from PyPI, add to your MCP client configuration:

{
  "mcpServers": {
    "chatgpt": {
      "command": "uvx",
      "args": ["chatgpt-mcp"]
    }
  }
}

If manually installed, add to your MCP client configuration:

{
  "mcpServers": {
    "chatgpt": {
      "command": "uv",
      "args": ["run", "chatgpt-mcp"],
      "cwd": "/path/to/chatgpt-mcp"
    }
  }
}

Usage

  1. Open ChatGPT desktop app and make sure it's running

  2. Open your MCP client (Claude Code, etc.)

  3. Use ChatGPT commands in your AI assistant:

    • "Send a message to ChatGPT"

The AI assistant will automatically use the appropriate MCP tools to interact with ChatGPT.

Available Tools

ask_chatgpt

Send a prompt to ChatGPT and receive the response.

ask_chatgpt(prompt="Hello, ChatGPT!")

get_chatgpt_response

Get the latest response from ChatGPT after sending a message.

get_chatgpt_response()

new_chatgpt_chat

Start a new chat conversation in ChatGPT.

new_chatgpt_chat()

Development

Local Testing

To test the MCP server locally during development:

  1. Install in editable mode

    uv pip install -e .
  2. Test with MCP Inspector

    npx @modelcontextprotocol/inspector chatgpt-mcp

The editable installation creates a chatgpt-mcp command that directly references your source code, so any changes you make are immediately reflected without reinstalling.

Running without installation

You can also run the server directly:

PYTHONPATH=. uv run python -m chatgpt_mcp.chatgpt_mcp

License

MIT

Available Tools

3 tools
ask_chatgpt_toolC

Send a prompt to ChatGPT and return the response.

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYes

TDQS

C2.8/5.0
Behavior2/5

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

Without annotations, the description carries the full burden of behavioral disclosure, but it only states the basic action. No mention of side effects, statelessness, authentication, rate limits, or output format, leaving significant gaps for an agent.

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 a single, direct sentence with no waste. However, more informative content could be included without sacrificing conciseness.

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?

Given the simplicity of the tool (one parameter, no output schema), the description provides the core action. However, it lacks details about response format, error conditions, or conversation state, which are relevant even for a simple tool.

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

Parameters2/5

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

The description implies that the 'prompt' parameter is the text sent to ChatGPT, but it adds no extra meaning beyond the schema's type and title. With 0% schema coverage, the description should compensate but does not provide additional semantic or syntactic details.

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 clearly states the action (send a prompt) and the resource (ChatGPT), explicitly mentioning the response. However, it does not differentiate from siblings like get_chatgpt_response_tool or new_chatgpt_chat_tool, missing explicit distinction.

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 is provided on when to use this tool versus siblings. An agent cannot determine whether to use ask_chatgpt_tool, get_chatgpt_response_tool, or new_chatgpt_chat_tool based on the description alone.

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

get_chatgpt_response_toolA

Get the latest response from ChatGPT after sending a message.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description clearly indicates this is a read/retrieval operation. However, it does not disclose behavior when no prior message has been sent (e.g., returns null vs error), which is a minor 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?

The description is a single, concise sentence that conveys the purpose without extraneous words.

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 tool with no parameters and no output schema, the description adequately explains the tool's action. It could be more complete by mentioning the format or behavior when no response is available, but it is sufficient for basic usage.

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?

The input schema has zero parameters, and the description adds no parameter-level detail, which is acceptable per the baseline guideline (0 params = baseline 4).

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 uses a specific verb ('get') and resource ('latest response from ChatGPT'), and the context of siblings (ask_chatgpt_tool, new_chatgpt_chat_tool) clearly distinguishes this as a retrieval action after messaging.

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 usage after sending a message ('after sending a message') but does not explicitly state when to use it vs alternatives, nor does it discuss prerequisites or error conditions if no prior message exists.

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

new_chatgpt_chat_toolA

Start a new chat conversation in ChatGPT.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only states the action without disclosing side effects like whether it creates a persistent conversation, destroys prior context, or requires authentication.

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?

Single sentence, front-loaded, no extra words. Perfectly concise for a simple tool.

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?

The description is adequate for a tool with no inputs and no output schema, but it fails to mention important details like whether the tool returns a conversation identifier or automatically activates the new chat, which would be helpful for an agent.

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?

Input schema has zero parameters with 100% coverage. Baseline for 0 parameters is 4, and the description adds no parameter info, which is acceptable as none exist.

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 'Start a new chat conversation in ChatGPT' clearly states the verb 'start' and resource 'chat conversation', and it distinguishes from siblings like 'ask_chatgpt_tool' which likely sends messages within an existing chat.

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?

The description implies usage for initiating a conversation, and the context of siblings suggests it is the first step before using ask_chatgpt_tool, but no explicit when-not-to-use or alternatives are given.

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. 3 tool updatesv1.0.0
    • First observedask_chatgpt_tool
    • First observedget_chatgpt_response_tool
    • First observednew_chatgpt_chat_tool

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation2/5

The 'ask_chatgpt_tool' returns the response immediately, making 'get_chatgpt_response_tool' redundant and causing confusion about when to use each. 'new_chatgpt_chat_tool' is distinct but the overlap between the first two tools leads to ambiguity.

Naming Consistency4/5

All tools follow a snake_case pattern with a '_tool' suffix, maintaining consistency. However, the noun component varies (no noun in 'ask_chatgpt_tool', 'response' in 'get_chatgpt_response_tool', 'chat' in 'new_chatgpt_chat_tool'), which is a minor deviation.

Tool Count4/5

Three tools is a reasonable number for a basic ChatGPT interaction server. It covers sending a prompt, retrieving the latest response, and starting a new conversation without being overly minimal or excessive.

Completeness3/5

The set covers sending prompts and managing conversations at a basic level, but lacks tools for listing past conversations, adjusting model parameters, or deleting chats, which are notable gaps for a chatbot interface.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    A Model Context Protocol server that enables AI assistants to communicate with each other using Inter-Process Communication, featuring natural language commands and cross-platform compatibility.
    9
    133
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    A Model Context Protocol server for Max messenger that lets AI assistants send and read messages, manage chats, and interact with the Max platform API.
    MIT