Open ChatGPT
Integrates with a signed-in ChatGPT account on chatgpt.com, allowing agents to send prompts, continue conversations, attach files, enable web search/thinking/tools, create images, transcribe audio, and manage conversations, memories, projects, and profile data.
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., "@Open ChatGPTask ChatGPT what the latest Node.js LTS is, with web search on"
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.
Open ChatGPT
Use your own signed-in ChatGPT account (chatgpt.com) from AI agents, scripts and the terminal — as an MCP server, an OpenAI-compatible API, a local REST API and a CLI.
You sign in once in a normal Chrome window (like linking WhatsApp Web), and Open ChatGPT drives that tab: it types your message, attaches files, switches thinking or web search on, waits for the answer and reads it back. It never asks for your password and never fakes ChatGPT's anti-bot checks — the real page does all of that.
your agent ──MCP / OpenAI API / REST / CLI──▶ open-chatgpt (127.0.0.1:2790) ──▶ your Chrome tab on chatgpt.comAI agents: read
skills/open-chatgpt/SKILL.md— it has setup, every tool and the limits.
What it can do
CLI | MCP tool | |
Ask, get the full Markdown answer |
|
|
Continue a chat |
|
|
Temporary chat (not saved) |
|
|
Attach photos, videos, files |
|
|
Thinking effort |
|
|
Web search |
|
|
Create images (saved as PNG) |
|
|
Any other + menu tool |
|
|
Transcribe a recording (any length, seconds) |
|
|
Send a recording as the message |
|
|
Rate a reply 👍/👎 |
|
|
Regenerate |
|
|
Read aloud → audio file |
|
|
Live progress (step + seconds, errors with the failing step) | printed on stderr; | MCP progress notifications; |
Long tasks (Deep research…) |
|
|
History, pinned, archived |
|
|
Every message of a chat, in order |
|
|
Search chats |
|
|
Pin / unpin / archive / unarchive / rename |
|
|
Saved memories: list, delete |
|
|
Profile: account, plan, custom instructions, memory use |
|
|
Projects; new chat inside one |
|
|
Signed-in account |
|
|
What each plan allows (Free / Go / Plus / Pro) and the known limits: docs/plans-and-limits.md. How it was reverse-engineered: docs/how-it-works.md.
Related MCP server: Antigravity Browser Operator
Before you use it
This automates the ChatGPT website, which OpenAI's terms do not officially allow. Use it on your own account, for personal use, at a human pace, and accept that the account could be limited. For production use the official OpenAI API.
One Chrome tab answers one request at a time; requests queue.
When chatgpt.com changes its page, selectors in
src/chatgpt.js(SEL) may need updating.
Setup
Needs Node.js 20+ and Google Chrome (or Chromium; set CHROME_PATH if it isn't in the usual place).
git clone https://github.com/mkshaonexe/open-chatgpt.git
cd open-chatgpt
npm install
npm link # optional: puts `open-chatgpt` (alias `chatgpt-bridge`) on your PATH1. Sign in once — a Chrome window opens on chatgpt.com; sign in the normal way (Google, email…):
open-chatgpt loginThe session is kept in ~/.chatgpt-bridge/chrome-profile, a separate Chrome profile used only by Open ChatGPT.
2. Start the server and keep its Chrome window open (minimise it if you like):
open-chatgpt serve # visible window: most reliable
open-chatgpt serve --headless # no window; ChatGPT's bot checks may block thisIt prints the URL and your local API key (open-chatgpt key prints it again).
CLI
open-chatgpt ask "Explain CAP theorem in 3 bullets"
open-chatgpt ask -c <conversation_id> "Now give an example"
open-chatgpt ask --temporary --effort medium "Plan a 3-day trip to Sylhet"
open-chatgpt ask -f photo.jpg -f report.pdf "What's in these?"
open-chatgpt ask --web "Latest Node.js LTS?"
open-chatgpt ask --image "A flat icon of a green leaf" # prints the saved PNG path
open-chatgpt transcribe meeting.mp3 > meeting.txt # 5 min ≈ 8 s, 12 min ≈ 20 s
open-chatgpt ask --audio voice.m4a "Answer in Bangla." # transcript + your text, sent as one message
open-chatgpt rate good # acts on the last reply of the open chat
open-chatgpt regenerate --mode thinking
open-chatgpt read-aloud -o reply.mp3 --format mp3 --voice juniper
open-chatgpt ask --tool "Deep research" --timeout 3600 "…" # long task, progress lines on stderr
open-chatgpt list --limit 10 # also --pinned, --archived
open-chatgpt show <conversation_id> # every message, numbered, in order
open-chatgpt search "invoice"
open-chatgpt pin <id> # unpin, archive, unarchive
open-chatgpt rename <id> "New title"
open-chatgpt memories # forget <memory_id> deletes one
open-chatgpt profile
open-chatgpt projects # ask --project <id> "…" starts a chat inside one
open-chatgpt progress # what the running request is doing
open-chatgpt statusWhile a request runs, the CLI prints its steps on stderr (--quiet hides them):
… opening chat (0s)
… turning on Create image (1s)
… creating image (3s)
… saving 1 image (52s)Replies print conversation_id and message_id on stderr; --json prints the whole result.
rate, regenerate and read-aloud take -c <conversation_id> and --message <id>; without them they act on
the last reply of the chat the bridge has open.
MCP
Streamable HTTP (with serve running):
claude mcp add --transport http chatgpt http://127.0.0.1:2790/mcp \
--header "Authorization: Bearer $(open-chatgpt key)"stdio, for clients that only speak stdio (forwards to the running server):
{ "mcpServers": { "chatgpt": { "command": "node", "args": ["/path/to/open-chatgpt/bin/cli.js", "mcp"] } } }(after npm link you can use "command": "open-chatgpt", "args": ["mcp"])
Tool | Arguments |
|
|
| — (state, step, elapsedSeconds, error of the running/last request) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| — |
|
|
| — |
| — |
| — |
Long tools (ask, transcribe, regenerate, read_aloud) send MCP progress notifications when the client
passes a progressToken, e.g. creating image (41s). Failures come back as error results that name the step,
e.g. Failed while setting thinking effort: thinking level "pro" is not offered on this account (available: instant, medium, high).
File arguments are absolute paths on the machine running the server (it only listens on 127.0.0.1).
OpenAI-compatible API
from openai import OpenAI
client = OpenAI(base_url="http://127.0.0.1:2790/v1", api_key="<open-chatgpt key>")
r = client.chat.completions.create(model="chatgpt", messages=[{"role": "user", "content": "Hello"}])
print(r.choices[0].message.content)model:chatgpt/default= your account's default; anything else is passed to chatgpt.com as the model slug.stream: trueworks.usageis always 0 (the website doesn't report tokens).Each call starts a new chat; system messages and earlier turns are folded into one prompt. Send
"conversation_id"(or anx-conversation-idheader) to keep using one chat; then only the newest user message is sent. Every response includesconversation_id. Extra body fields:temporary.
REST
Every route except /health needs Authorization: Bearer <key>. File fields are absolute local paths.
Method | Path | Body / query → result |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| signed-in account and plan |
|
|
|
|
| title, flags and every message in order |
|
| also |
|
|
|
|
| saved memories; |
|
| account, plan, custom instructions, memory usage |
|
| projects and their latest chats |
|
| OpenAI format |
|
| |
|
| MCP streamable HTTP (stateless) |
Files and settings
Everything lives in ~/.chatgpt-bridge/ (override with CHATGPT_BRIDGE_HOME):
Path | |
| the signed-in Chrome profile |
| API key and settings (below) |
| generated images |
| read-aloud files saved without |
| Default | |
|
| API port (env |
|
| Chrome debugging port, bound to 127.0.0.1 |
| per OS | env |
|
|
|
|
| how long to wait for one answer |
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Let your AI agent operate any website through a real, logged-in browser session.
Control a real browser from AI agents: navigate, click, type, screenshot, read the page.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Stealth web automation for AI agents. Login, signup, navigate, screenshot.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to drive a logged-in ChatGPT web session over CDP, including managing projects and chats, sending messages with file attachments, and retrieving long Pro replies.122MIT
- AlicenseAqualityAmaintenanceEnables AI agents to drive the user's already-running Google Chrome through a WebSocket bridge, listing and switching tabs, navigating, clicking, typing, scrolling, extracting DOM, taking screenshots, and evaluating JavaScript. It works without restarting Chrome and preserves all existing logins, cookies, and 2FA sessions.11MIT
- AlicenseNot gradedqualityNot gradedmaintenanceLets local AI agents drive the Chrome browser a user already has open, including signed-in sessions, by listing tabs, reading page text and actionable elements, then clicking, filling, selecting, scrolling, navigating, and capturing viewport screenshots without exporting cookies. Runs as a dependency-free local stdio process over Native Messaging, with per-tab leases, automatic reconnection, and pause/write-action controls.MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to drive the user's real, already-logged-in Chrome browser locally, so they can read and navigate pages, click, type, fill forms, take screenshots, and inspect cookies, tabs, console, and network traffic without headless browsers or remote-debugging ports.1 npmISC