Skip to content

Connecting ChatGPT to Assync (Developer Mode + Secure MCP Tunnel)

This repository's MCP server (assync mcp, stdio transport) already exposes Assync's full read-only and mutating tool set — including assync_status_show, assync_execution_handoff_list, assync_execution_handoff_show, and the existing Mission/Decision tools. Nothing in the server itself needs to change to reach ChatGPT: OpenAI's Secure MCP Tunnel is designed specifically to bridge an existing local stdio MCP server to a remote-reachable endpoint, without exposing it to the public internet and without changing its transport.

This guide covers everything that's actually needed. The first two sections are already done in this repository; the remaining sections require your own OpenAI account and cannot be automated from here.

Already done in this repository

  1. An isolated, architecture-consistent Python 3.11 environment at .venv/ (never the machine's global Python, which may be mismatched — see docs/getting-started/installation.md).
  2. scripts/run-mcp-server.sh — the exact, stable command to give a stdio MCP client. It resolves the repo root relative to its own location and always uses .venv/'s assync, regardless of the caller's working directory or environment.

Verify locally before connecting anything:

./scripts/run-mcp-server.sh &
# or, to confirm the full protocol handshake without leaving a server
# running in the background, pipe a real MCP request sequence into it
# and check the tools/list response contains all 35 tools.

What only you can do: connect via Secure MCP Tunnel

These steps require your own OpenAI account (Developer Mode is available to Pro, Plus, Business, Enterprise, and Education accounts; full read/write MCP access requires Business/Enterprise — Pro accounts get read/fetch-only access in Developer Mode, which is not a limitation for Assync's read-only tools) and cannot be performed by an agent without your login.

  1. Enable Developer Mode: in ChatGPT, go to Settings → Security and login → turn on Developer mode.
  2. Get a tunnel_id: in the OpenAI platform's tunnel settings, create a tunnel and note its tunnel_id.
  3. Install tunnel-client: download it from the tunnel-client GitHub releases page (not an Assync dependency — a separate OpenAI tool that runs on your machine).
  4. Initialize a profile, pointing it at this repository's server:
    tunnel-client init --profile assync \
      --tunnel-id <your-tunnel-id> \
      --mcp-command "/Users/grafik/assync/scripts/run-mcp-server.sh"
    
  5. Validate the connection:
    tunnel-client doctor --profile assync --explain
    
  6. Keep it running while you use ChatGPT:
    tunnel-client run --profile assync
    
  7. Connect from ChatGPT: in Developer Mode, add an app, choose "Tunnel" as the connection type, and select the tunnel you created (or paste its tunnel_id). ChatGPT will scan and list the available tools — expect all 35, including assync_status_show, assync_execution_handoff_list, assync_execution_handoff_show, assync_mission_list, and assync_decision_list.

What this does not need

  • No change to assync mcp's transport (still stdio) — tunnel-client bridges stdio to the tunnel transparently; a public HTTPS endpoint (Streamable HTTP transport) is a different deployment mode, not needed for this path.
  • No authentication code in the Assync server itself — the tunnel is authenticated at the tunnel-client layer (your OpenAI runtime API key, outbound-only connection); Assync's own read-only tools have no authentication of their own, same as every other read-only tool in this server.

Known limitation, tracked separately

assync_status_show (via status/service.py::get_project_status) and assync_project_git_status (via the read_only_execution adapter path) compute git branch/dirty state through two independent mechanisms. Both are read-only and correct today; unifying them is a separate cleanup, not required for this integration.