Skip to main content
Glama
colin-dmme

chatgpt-local-coder

by colin-dmme

ChatGPT Local Coder

Turn ChatGPT web into a local coding agent — files, shell, git, patches, 40+ MCP tools.

MCP ChatGPT TypeScript License: MIT Windows

Quick Start · GUI · Connect ChatGPT · Tools · Tunnel · Troubleshooting · Tiếng Việt


ChatGPT Local Coder is a self-hosted MCP server that gives ChatGPT (and any MCP client) full access to your machine — read and edit code, run npm test, manage git, apply unified diffs, and explore projects with glob / grep.

The core server is CLI-first with no required desktop app or vendor lock-in. An optional Windows GUI is included for setup and daily start/stop tasks.

┌─────────────────┐     HTTPS      ┌──────────────────┐     localhost     ┌─────────────────────┐
│   ChatGPT Web   │ ─────────────► │  Tunnel (opt.)   │ ────────────────► │  chatgpt-local-coder │
│ Developer Mode  │                │ OpenAI / CF      │      :3000/mcp    │  40+ MCP tools       │
└─────────────────┘                └──────────────────┘                   └──────────┬──────────┘
                                                                                    │
                                         ┌──────────────────────────────────────────┼──────────┐
                                         ▼                    ▼                    ▼          ▼
                                   Filesystem              Shell + Git         Background    Project
                                   read/write/patch        status/diff/commit   processes     context

✨ Why this project

ChatGPT alone

+ ChatGPT Local Coder

Edit your repo

apply_patch, edit_file, multi_edit

Run tests / builds

run_command, start_process

Git workflow

git_status, git_commit, git_push, …

Explore codebase

Limited

glob, grep, list_directory

Full disk access

✅ Any path on your machine

Session recovery

✅ Auto-recover after server restart

Windows launcher GUI

✅ Manage workspace, profiles, server and tunnel

Built for ChatGPT Developer Mode with optimized tool annotations (fewer permission popups) and OpenAI Secure MCP Tunnel support (stable URL, no connector re-wiring every restart).

Related MCP server: DevSpace

🚀 Quick Start

Requirements: Node.js 18+, npm, Git (optional, for git tools)

git clone https://github.com/colin-dmme/chatgpt-local-coder.git
cd chatgpt-local-coder
copy .env.example .env          # edit WORKSPACE_PATH
npm install
npm run build
.\start.ps1

Server runs at http://localhost:3000 — health check: http://localhost:3000/health

git clone https://github.com/colin-dmme/chatgpt-local-coder.git
cd chatgpt-local-coder
cp .env.example .env
npm install && npm run build
npm start

🖥️ Optional Windows GUI

The repository includes chatgpt-local-coder-gui, a small PySide6 launcher for users who prefer not to edit .env or start the server/tunnel manually.

cd chatgpt-local-coder-gui
uv sync
uv run python main.py

The GUI can:

  • choose WORKSPACE_PATH

  • save local account/profile settings

  • configure the OpenAI Tunnel ID and runtime API key

  • start/focus the MCP server and tunnel windows

  • open the ChatGPT connector settings page

chatgpt-local-coder-gui/profiles.json is intentionally gitignored because it may contain account names, tunnel IDs and API keys. Never publish that file.

🔌 Connect ChatGPT

1. Enable Developer Mode

  1. Open ChatGPTSettingsApps & Connectors

  2. Under Advanced, enable Developer mode

2. Expose your server (pick one tunnel)

See Tunnel options below. You need a public HTTPS URL pointing to http://localhost:3000/mcp.

3. Create a connector

  1. SettingsConnectorsCreate

  2. Fill in:

Field

Value

Name

Local Coder

Description

Local coding agent. First call agent_status + project_context. Use glob/grep to explore, apply_patch to edit, run_command for shell.

URL

Your tunnel HTTPS URL (e.g. https://… or OpenAI Tunnel ID)

Authentication

None

  1. Create → verify tools appear in the list

4. Use in chat — must tag the connector

Every message that should use local tools must include the connector. If you skip this, ChatGPT only uses built-in tools, may show "Looking for available tools" / "Đang tìm các công cụ có sẵn", then "Error in message stream" / "Lỗi trong luồng tin nhắn" — with no error in server logs (the MCP server was never called).

How to tag (pick one):

  1. Before sending: New chat+ (tools) → More → enable Local Coder (connector stays on for that chat).

  2. In the message: type @ and choose Local Coder (or your connector name) so it appears as a pill/chip above the input.

Then send your prompt. You should see tool permission prompts or MCP activity — not a dead stream with no server log.

Example prompts (after tagging):

  • "Read package.json and explain the dependencies"

  • "Run npm test and fix any failures"

  • "Find all TODO comments with grep and summarize"

Tip: After server updates or restarts → Refresh the connector and start a new chat (re-tag the connector).
Avoid clicking "Always allow" on permission popups — it can reset the MCP session. Configure permissions in Settings → Apps instead.

🌐 Tunnel options

Option A — OpenAI Secure MCP Tunnel (recommended)

Stable tunnel ID — connector URL never changes.

# Terminal 1
.\start.ps1 -Force

# Terminal 2 — first time only
.\openai-tunnel-init.bat    # enter tunnel_id + Runtime API key from OpenAI Platform

# Every time after
.\openai-tunnel.bat

Get credentials: OpenAI Platform → Tunnels

In ChatGPT Connectors: Connection type → Tunnel → paste your tunnel_… ID.

Option B — Cloudflare Quick Tunnel

Free, but URL changes on every restart (update connector each time).

# Terminal 1
.\start.bat

# Terminal 2
.\tunnel.bat    # copy https://….trycloudflare.com into connector URL

Install cloudflared: winget install Cloudflare.cloudflared

🧰 Tools

40+ tools with structured JSON responses { ok, tool, summary, data }.

Onboarding (call these first)

Tool

Description

agent_status

Permissions, workspace roots, audit log

project_context

Reads AGENTS.md, README, CLAUDE.md, configs

Filesystem

Tool

Description

read_text_file

Read source files (offset + limit)

write_file

Create or overwrite files

edit_file

Find-and-replace edits

multi_edit

Multiple edits in one file

replace_regex

Regex replace in file

apply_patch

Unified / Codex-style patches

glob

Find files by pattern (sorted by mtime)

grep

Search content (content / files / count modes)

list_directory

List folder contents

directory_tree

Recursive tree as JSON

create_directory

Create folders

delete_file / delete_directory

Remove files or dirs

copy_file / move_file

Copy or rename

read_file_base64 / write_file_base64

Binary file support

Shell

Tool

Description

run_command

Run shell commands (npm test, builds, …)

shell_status / shell_reset

Persistent shell session

start_process

Long-running / background commands

process_status / process_output / stop_process

Manage background jobs

Git

Tool

Description

git_status / git_diff / git_log

Inspect repo

git_add / git_commit

Stage and commit

git_branch / git_checkout

Branch list, create, switch (local only)

git_restore

Restore tracked files to last commit

git_push / git_pull

Sync with configured remote

git_stash / git_reset

Stash and reset

Claude Code ↔ MCP mapping

Claude Code

This server

Read

read_text_file

Write

write_file

Edit / MultiEdit

edit_file / multi_edit

Glob / Grep / LS

glob / grep / list_directory

Bash

run_command

apply_patch, git_*, project_context

⚙️ Configuration

Copy .env.example.env:

PORT=3000
WORKSPACE_PATH=C:\Users\You\projects\my-app
CHATGPT_AUTO_APPROVE=true
SHELL_TIMEOUT=120
MCP_SESSION_RECOVERY=true

# OpenAI Secure Tunnel (optional)
OPENAI_TUNNEL_ID=
OPENAI_TUNNEL_API_KEY=

Variable

Default

Description

WORKSPACE_PATH

cwd

Your project root (like cd before claude). Auto-loads CLAUDE.md / AGENTS.md into MCP instructions

CHATGPT_AUTO_APPROVE

true

Tool annotations to reduce ChatGPT popups

MCP_SESSION_RECOVERY

true

Auto-recover stale sessions after restart

SHELL_TIMEOUT

120

Max seconds for run_command

FULL_DISK_ACCESS

true

Access any path on the machine

Full machine access is enabled by default. WORKSPACE_PATH only sets the default cwd — absolute paths like D:\Projects\… work everywhere.

🏗️ Architecture

src/
├── index.ts                 # Express + MCP session manager
├── server-factory.ts        # Tool registration
├── lib/
│   ├── mcp-session-manager.ts   # Session recovery, TTL
│   ├── patch.ts             # apply_patch engine
│   └── persistent-shell.ts  # Stateful shell
└── tools/
    ├── filesystem.ts        # 18 tools
    ├── shell.ts             # 8 tools
    ├── git.ts               # 11 tools
    └── context.ts           # agent_status, project_context
  • Transport: MCP Streamable HTTP (/mcp and /)

  • Session: Stateful with auto-recovery when ChatGPT holds a stale session ID

  • Output: Structured JSON from every tool

🧪 Development

npm run build          # compile TypeScript
npm test               # patch + tool unit tests
npm run dev            # watch mode (tsx)
node scripts/test-mcp-session.mjs   # integration test (server must be running)

🔒 Security

This server grants full access to your machine — files, shell, git. Only expose it through a tunnel you control. Never share your connector URL or tunnel API keys.

  • .env, GUI profiles, generated tunnel profiles, state/checkpoints, logs and common key/certificate files are gitignored

  • Keep real upstream MCP paths/credentials in a local file such as profiles/mcp-upstream.local.json; the committed profiles/mcp-upstream.json is a safe starter config

  • .env.example must contain placeholders only — never real tunnel IDs, API keys, usernames or machine-specific paths

  • Before publishing a fork, run a secret scan over the files that Git will actually track

  • Audit log: .mcp-audit.log (optional, configurable)

  • Use on a trusted network / personal machine only

🩺 Troubleshooting

Problem

Fix

"Error in message stream" / "Lỗi trong luồng tin nhắn" right after "Looking for tools"no server log

You did not tag the connector. New chat → +More → enable connector, or type @Local Coder in the message. Then retry.

Resource not found on tool call

Refresh connector + new chat. Server auto-recovers sessions — ensure latest build is running.

Connection failed

Check .\start.ps1 + tunnel are both running. URL must be HTTPS.

Permission popup every call

Settings → Apps → set connector to Ask before important changes. Don't use popup "Always allow".

Tool blocked by OpenAI safety

Not a server bug. Retry with run_command (response may include run_command_fallback). Affects git_push, git_checkout, delete_directory occasionally.

stream canceled in tunnel log

Server/tunnel restarted mid-session → refresh connector, new chat.

Tunnel URL keeps changing

Switch to OpenAI Secure Tunnel (openai-tunnel.bat).

Access denied

Wrong path or OS permissions on that file.

git not found

Install Git.

See also AGENTS.md for agent onboarding and apply_patch format.

📚 References

📄 License

MIT — use freely, attribution appreciated.

⭐ Support

If this saves you time, star the repo — it helps others find it.


🇻🇳 Tiếng Việt

ChatGPT Local Coder biến ChatGPT web thành agent code trên máy bạn qua MCP.

git clone https://github.com/colin-dmme/chatgpt-local-coder.git
cd chatgpt-local-coder
copy .env.example .env
npm install && npm run build
.\start.ps1                    # terminal 1
.\openai-tunnel.bat            # terminal 2 (tunnel cố định)

ChatGPT: Settings → Connectors → tạo connector → chọn tunnel → Refresh → chat mới.

Bắt buộc tag connector mỗi chat: Chat mới → +More → bật connector, hoặc gõ @ + tên connector trong ô chat. Nếu không tag, ChatGPT báo "Đang tìm các công cụ có sẵn" rồi "Lỗi trong luồng tin nhắn"server không có log lỗi vì MCP chưa được gọi.

WORKSPACE_PATH: đặt đúng thư mục project (không phải thư mục chatgpt-local-coder). Server tự đọc CLAUDE.md / AGENTS.md giống Claude Code.

Lưu ý: Không bấm "Luôn cho phép" trên popup — cấu hình quyền ở Settings → Apps. Sau khi restart server: Refresh connector + mở chat mới + tag lại connector.

Chi tiết cho AI agent: AGENTS.md

A
license - permissive license
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    B
    maintenance
    A self-hosted MCP server that gives ChatGPT a secure connection to your local machine, enabling it to read, edit, search, and run code in your projects.
    1,004
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    A self-hosted MCP server that brings a Codex-style coding workflow to ChatGPT, allowing it to read, edit, search, and run code in your local projects.
    MIT

View all related MCP servers

Related MCP Connectors

  • An MCP server that gives your AI access to the source code and docs of all public github repos

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • A MCP server built for developers enabling Git based project management with project and personal…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/colin-dmme/chatgpt-local-coder'

If you have feedback or need assistance with the MCP directory API, please join our Discord server