
MCP bridge for ChatGPT to use OpenClaw browser, desktop, file, and runtime tools.
Local MCP bridge connecting ChatGPT to OpenClaw, with browser and desktop automation, file operations, project search, command/process control, dynamic tool discovery, and a local call monitor.
·
Give ChatGPT direct access to the tools available in your OpenClaw runtime.
Platform status: Windows is the currently tested setup. Linux and macOS support has not yet been validated. Contributions and testing reports for additional platforms are welcome. See Contributing.
Use ChatGPT to work on a local codebase: search files, inspect implementations, edit code, run commands and tests, and review diffs. The bridge also exposes browser, desktop, and other eligible OpenClaw tools through direct wrappers and dynamic tool discovery.
Unlike a fixed list of bridge-specific tools, the bridge can discover eligible tools in your current OpenClaw runtime, inspect their actual schemas, and dispatch them through the Gateway. OpenClaw permissions, approvals, and policies remain authoritative.
Browser automation through the bridge.
| Area | Public tools | What they provide |
|---|---|---|
| Session setup | start_here | Must be called once before other bridge tools in each ChatGPT conversation; loads tool-routing and safety instructions. |
| Browser automation | openclaw_browser | Chrome status and lifecycle, tabs, navigation, snapshots, screenshots, page interaction, text, console/network diagnostics, downloads, uploads, dialogs, PDF, and supported emulation. |
| Desktop automation | openclaw_computer | Windows screen snapshots, mouse and keyboard input, window/app operations, accessibility queries, and bounded action batches. |
| File operations | openclaw_ls, openclaw_read, openclaw_edit, openclaw_write, openclaw_apply_patch | List, read, edit, create/replace, and patch files through OpenClaw's native file tools. Listing and reading support batches. |
| Local project search | openclaw_glob, openclaw_grep | Discover paths and search file contents using Node.js glob and ripgrep, without a shell for the search itself. |
| Runtime operations | openclaw_exec, openclaw_process | Run commands and inspect or control processes started through the runtime wrapper. |
| Screenshot presentation | openclaw_image_render | Display a recent desktop screenshot in the ChatGPT UI using a short-lived reference. |
| Native tool discovery | openclaw_tool_search, openclaw_tool_describe, openclaw_dispatch_action | Find eligible tools in the current OpenClaw runtime, inspect their actual schemas, and invoke tools that do not already have a direct bridge wrapper. |
This catalog describes the bridge's public interface, not a guarantee that every native OpenClaw capability is available in every installation. Runtime version, installed plugins, node hardware, pairing approvals, Gateway policy, and operating-system permissions all affect availability.
Note: The steps below are for Windows; Linux and macOS have not yet been validated.
The shortest path to trying the bridge:
Prepare OpenClaw and the tunnel. Make sure OpenClaw is installed and configured. Create an OpenAI Secure MCP Tunnel, associate it with your target ChatGPT workspace, and have a Platform API key with Tunnels Read + Use permission ready. See Prepare the OpenAI tunnel for details.
Clone and configure in Windows PowerShell:
git clone https://github.com/Snoozemage/openclaw-direct-tools-for-chatgpt.git
Set-Location openclaw-direct-tools-for-chatgpt
npm run setupFollow the setup wizard to configure your local OpenClaw paths, ports, tunnel ID, and API key.
Start the bridge:
npm start
npm run statusConnect ChatGPT. Add a custom MCP server using the Tunnel connection, select the same tunnel, then open a conversation and select the plugin. The local call monitor is available at http://127.0.0.1:19002/monitor with the default port.
For the full setup flow, workspace requirements, troubleshooting notes, and lifecycle details, continue to Setup and operation.
The bridge provides the MCP endpoint, routes calls to feature-specific handlers, and hosts a local call monitor. Depending on the capability, a handler uses an OpenClaw native tool, invokes a Gateway tool, or performs bridge-owned work.
ChatGPT custom MCP connector
|
OpenAI Secure MCP Tunnel
|
Local Node.js bridge
├── MCP endpoint (/mcp)
│ └── Public tool registry and dispatcher
│ ├── Browser wrapper ──────────> OpenClaw Gateway ──> Browser / Chrome extension
│ ├── Desktop wrapper ──────────> OpenClaw Gateway / paired computer node
│ ├── Files and runtime wrappers > OpenClaw native tools
│ ├── Tool Discovery ───────────> Effective tool catalog / Gateway invocation
│ └── Bridge-native utilities ──> glob, grep, screenshot rendering, session setup
└── Local call monitor (/monitor)
└── In-memory events and Server-Sent Events (/events)Tool definitions are assembled in src/mcp/tool-definitions.mjs; src/mcp/tool-dispatcher.mjs routes public tool names to handlers. The local HTTP server exposes /mcp and /healthz as well as the monitor endpoints. Tool-call events are streamed to the monitor over Server-Sent Events (SSE).
openclaw_glob and openclaw_grep search local files; openclaw_image_render presents a screenshot captured by the computer tool; start_here supplies conversation-specific routing instructions.For implementation guidance, see Tool Exposure Guide. For node command policy and discovery of capabilities such as camera, location, screen, device information, notifications, and plugin-provided actions, see Gateway Node Command Reference.
rg.exe (ripgrep) on PATH, or set OPENCLAW_RIPGREP_PATH to its executable path.tunnel-client with Tunnels Read + Use permission. You also need a ChatGPT account/workspace that can add a custom MCP server. The project maintainer has verified that this bridge connects successfully on a ChatGPT Free account.tunnel_id and associate the tunnel with the ChatGPT workspace where the connector will be created. A tunnel attached only to a Platform organization may not appear in a separate ChatGPT workspace.tunnel-client to OpenAI's tunnel control plane; it is required even though the MCP bridge itself runs locally. Grant it Tunnels Read + Use so it can run the tunnel and select it for the ChatGPT connection. Creating or editing the tunnel requires Tunnels Read + Manage for the account performing that operation.tunnel-client is separate from your ChatGPT sign-in and from the authentication setting on the ChatGPT custom MCP plugin. The setup wizard prompts for the key using hidden input and stores it in a user-restricted local file. Do not paste it into ChatGPT, put it in the repository, or commit it to Git.See the official Secure MCP Tunnel guide for organization/workspace associations and permissions.
From the repository root, run the setup wizard in PowerShell:
npm run setupFollow the prompts for the OpenClaw config and CLI paths, Node.js, bridge and Gateway ports, the tunnel_id, and runtime API-key material. Setup installs the locked npm dependencies, locates or downloads the official tunnel-client, creates a profile that forwards the tunnel to the bridge's local /mcp endpoint, validates the configuration, and stores generated settings outside the repository.
The default local application directory is:
%LOCALAPPDATA%\OpenClawChatGPTBridge\It contains the generated configuration, tunnel profile, and runtime logs. The tunnel runtime API key is stored in Windows Credential Manager and is not written to a plaintext key file by the current setup flow. Keep generated configuration, profiles, and logs out of version control.
On existing installations, rerun npm run setup once to migrate the old key file. Setup verifies the Credential Manager entry before removing that file. Normal file deletion cannot guarantee secure erasure of historical disk copies; rotate the key if you suspect prior exposure.
npm start
npm run status
npm stopThe Windows scripts manage the bridge, tunnel client, and Gateway startup as configured. The stop script only stops a Gateway process when the project launcher started it and the recorded PID still matches the expected command; it leaves a pre-existing Gateway process running.
The bridge normally listens on http://127.0.0.1:19002 and the Gateway on port 19001; configured values may differ. Open the local call monitor at http://127.0.0.1:19002/monitor. Keep the tunnel client running while ChatGPT discovers or calls tools; use npm run status to inspect the local stack.
tunnel_id if prompted). Do not paste the local http://127.0.0.1:19002/mcp address into Server URL when using the tunnel connection.@, select the plugin, and test a low-risk operation.Adding the plugin is separate from running the local bridge and tunnel client. If the tunnel is not listed, verify that it is associated with the target ChatGPT workspace and that your Platform account has Tunnels Read + Use. The project maintainer has successfully connected this bridge using ChatGPT Free. See the ChatGPT custom MCP server guide for details.
For Windows sign-in startup, scripts/windows/start-on-logon.ps1 is the scheduled-task entry point. scripts/windows/bridge-supervisor.ps1 supervises bridge restarts. scripts/windows/start-monitor.ps1 is retained as a compatibility alias for the combined launcher.
openclaw_browser forwards supported Browser actions through the Gateway. Profile-dependent actions are pinned internally to profile: "chrome"; the public schema does not expose profile selectors. When Chrome is fully closed, action: "open" can launch it using the existing local Chrome User Data directory and its last-used profile. The OpenClaw extension must already be installed in that profile and able to connect. Other actions do not launch Chrome automatically, and an already-running Chrome instance is left running.
Example: the Browser tool opened this public repository, navigated into src/, and opened server.mjs for inspection.
For page interaction, take a fresh snapshot and use its element references where appropriate. The action: "act" batch mode combines predictable steps into one native /act request; open, navigate, snapshot, and screenshot remain separate calls. Page-changing actions can invalidate references, so observe the page again before dependent actions. A batch stops on the first failed step by default; stopOnError: false continues. If the runtime rejects a batch, execute the steps individually.
The bridge supplies a 10-second default timeout for action: "open" when none is provided. If an open operation times out, it checks the current tab list once and reports success only if the requested URL is observed; it does not retry automatically. URL schemes, action support, browser availability, extension attachment, and permissions remain controlled by OpenClaw and the browser runtime.
OpenClaw's browser SSRF policy also applies to local URLs. If browser.ssrfPolicy.allowedHostnames is explicitly configured, localhost and 127.0.0.1 must be listed separately when both forms are needed. For this monitor, retain both entries if using both URL forms:
{
browser: {
ssrfPolicy: {
allowedHostnames: ["localhost", "127.0.0.1"]
}
}
}This is OpenClaw configuration, not a bridge setting. Add only trusted, specific hostnames. Do not enable dangerouslyAllowPrivateNetwork just to fix a loopback URL. See the OpenClaw browser configuration and browser security guidance.
openclaw_computer controls desktop UI through the configured paired computer node; it does not interact with the browser DOM. Take a snapshot first, reuse its executionId, and pass its latest displayFrameId for coordinate-based actions. Capture a fresh snapshot after screen/layout changes. Batch mode supports up to five predictable actions. It reduces MCP round-trips, but each native desktop action still incurs its own Gateway call. Call action: "close_execution" when finished; idle executions are closed automatically after five minutes.
A successful snapshot also registers a short-lived screenshot reference. Call openclaw_image_render with its screenshot_ref to display it in ChatGPT. The bridge keeps at most 12 screenshots in memory for up to five minutes; references expire on timeout, cache eviction, or bridge restart. Clients that do not support MCP Apps may show only the text fallback.
ChatGPT on a phone requesting a desktop screenshot and displaying the captured screen in the conversation.
The five file tools wrap OpenClaw's native ls, read, edit, write, and apply_patch tools. openclaw_edit is for targeted text replacements; openclaw_write intentionally replaces an entire file; openclaw_apply_patch uses OpenClaw's patch format. openclaw_ls and openclaw_read support batches of one to five paths. Read the current file before editing it and inspect the result afterward.
Path scope: for this bridge instance, the five file tools disable OpenClaw's required-workspace-only guard. They can use absolute paths on drives accessible to the current Windows account, subject to normal filesystem permissions. OPENCLAW_WORKSPACE_DIR sets the base for relative paths; the Windows launcher sets it to the configured OpenClaw state directory's workspace folder. This wider path scope applies only to the five bridge file tools. It does not widen Browser/Computer permissions or grant additional openclaw_exec access. Treat writes and patches as consequential and use trusted paths.
openclaw_glob uses Node.js's built-in fs/promises.glob() API and returns up to 100 paths; it excludes .git and node_modules directories. openclaw_grep calls ripgrep directly and returns up to 100 matching lines with file paths and line numbers. Ripgrep respects its normal ignore rules, including .gitignore, and the bridge explicitly excludes .git and node_modules. Search is case-sensitive for openclaw_grep.
openclaw_exec wraps OpenClaw's native exec tool for tasks such as builds, tests, Git, package managers, and other command-line work. openclaw_process inspects or controls processes started through that wrapper, including polling output, sending input, and managing a process session. Use the process tool when an execution returns a running session. Runtime behavior and access remain subject to the configured OpenClaw host and its policies.
Use the discovery tools when a capability is not already covered by a direct bridge wrapper:
openclaw_tool_search with capability keywords. Results come from tools available in the current runtime and may include eligible core, plugin, MCP, or channel tools.openclaw_tool_describe with the exact returned tool ID to inspect the runtime schema.openclaw_dispatch_action with that exact ID and arguments matching the schema.The bridge refreshes effective tool availability before dispatch. OpenClaw remains responsible for its policy, approvals, hooks, argument validation, and invocation restrictions. Prefer a dedicated bridge wrapper where one exists. Tool discovery does not automatically enable every node or plugin capability.
The monitor is intended for local development and troubleshooting. It shows running, completed, and failed calls; arguments and output; duration; and diagnostics when available. It supports status filtering, copying a session or individual call as JSON, clearing in-memory history, and removing retained sessions. It retains at most the 200 newest events in memory.
Open it at http://127.0.0.1:19002/monitor (the port may differ if reconfigured). The server also provides /healthz, /api/events, /api/sessions, /api/events/export, and the /events SSE stream. Keep the monitor and bridge local; do not expose them to untrusted networks. Call arguments and results can contain private data, and redaction is best-effort.
When a tool returns a change diff, the monitor can render additions and removals side by side to make edits easier to review.
openclaw-direct-tools-for-chatgpt/
├── src/
│ ├── config/
│ │ └── runtime.mjs
│ ├── mcp/
│ │ ├── format.mjs
│ │ ├── instructions.mjs
│ │ ├── sdk-server.mjs
│ │ ├── session-registry.mjs
│ │ ├── tool-definitions.mjs
│ │ └── tool-dispatcher.mjs
│ ├── monitor/
│ │ ├── assets/
│ │ ├── events.mjs
│ │ └── index.html
│ ├── tools/
│ │ ├── start-here/
│ │ ├── browser/
│ │ ├── computer/
│ │ ├── files/
│ │ ├── file-search/
│ │ ├── image-render/
│ │ ├── runtime/
│ │ └── tool-discovery/
│ ├── openclaw-client.mjs
│ └── server.mjs
├── scripts/
│ └── windows/
│ ├── setup.ps1
│ ├── start.ps1
│ ├── stop.ps1
│ ├── status.ps1
│ ├── start-on-logon.ps1
│ ├── start-monitor.ps1
│ ├── bridge-supervisor.ps1
│ ├── credential-store.ps1
│ └── WindowsCredentialStore.cs
├── tests/
│ ├── browser-recovery.test.mjs
│ ├── browser-schema.test.mjs
│ ├── chrome-launch.test.mjs
│ ├── computer-tool.test.mjs
│ ├── file-search-tool.test.mjs
│ ├── files-tool.test.mjs
│ ├── image-render.test.mjs
│ ├── mcp-session.test.mjs
│ ├── monitor-events.test.mjs
│ ├── monitor-redaction.test.mjs
│ ├── relay-input-epoch.test.mjs
│ ├── runtime-tools.test.mjs
│ ├── tool-annotations.test.mjs
│ ├── tool-discovery.test.mjs
│ ├── check-syntax.ps1
│ ├── smoke.ps1
│ └── windows-credential-store.ps1
├── docs/
│ ├── GATEWAY_NODE_COMMAND_REFERENCE.md
│ └── TOOL_EXPOSURE_GUIDE.md
├── package.json
├── README.md
├── CONTRIBUTING.md
└── THIRD_PARTY_NOTICES.mdThe public MCP schemas are assembled in src/mcp/tool-definitions.mjs; handlers are routed through src/mcp/tool-dispatcher.mjs. Each feature family lives under src/tools/<feature>/. docs/TOOL_EXPOSURE_GUIDE.md describes how to add, change, validate, and remove public tools.
Run static checks and unit tests:
npm run check
npm run test:unit
npm run test:credential-storeThe Credential Manager test creates a temporary test-only entry, verifies save/read/overwrite/delete behavior, and removes it. It does not read or modify the project’s real API-key entry.
For an integration smoke test against a running local bridge and Gateway:
npm test -- -BaseUrl http://127.0.0.1:19002Static checks cover JavaScript and PowerShell syntax plus selected architecture/lifecycle contracts. Unit tests cover tool schemas and handlers, session behavior, monitor behavior, runtime wrappers, file tools, and discovery. Smoke tests depend on the local OpenClaw configuration and runtime state; passing unit tests does not establish that every native action works for every profile or node.
tunnel-client through the child process environment. This protects the key at rest better than a plaintext file, but does not protect it from malicious code running as the same user while the tunnel process is active.These projects overlap with this bridge's ecosystem, but they are not dependencies of this repository. The links are included to clarify neighboring approaches, not to imply that the implementations are interchangeable.
I'm currently looking for opportunities in IT and trying to turn what I've learned into real-world experience.
My main interests are Backend Development, Data Analysis, and Machine Learning. I've also had some experience in an AI lab, and I enjoy learning new things by building projects like this one.
Like many people looking for work today, I'm navigating a challenging job market. I'm open to different kinds of IT roles, including areas I haven't worked in before. I may not know everything yet, but I'm willing to learn, put in the effort, and take on new challenges.
If you know of any job opportunities, have advice to share, or think I could contribute to your team, feel free to reach out. I'd genuinely appreciate it.
I build projects like this in my spare time to explore ideas and learn new technologies.
If you find this project useful, consider giving it a ⭐ or sharing it with others.
If you'd like to support me, you can also buy me a coffee. No pressure at all - even a star or a share means a lot.
☕ Buy me a coffee: https://ko-fi.com/snoozemage
If you're in Vietnam and prefer a local bank transfer, you can find the QR code in the posts on my Ko-fi page.
This repo does not document an install step we could read. Check the README on GitHub.
Paste this prompt into your agent. It reads this page and does the setup for you.
Read https://aiagentslisting.com/mcp/chatgpt-openclaw-direct-tools to learn what the "OpenClaw Direct Tools for ChatGPT" MCP server does and how to install it. Add it to my coding agent's MCP configuration as documented on that page, then confirm the server connects and list the tools it exposes.Agents can also browse this directory over MCP at https://aiagentslisting.com/api/mcp
This server doesn't publish a machine-readable tool manifest, and it doesn't expose a public endpoint we could ask. Connect the server locally to see what it exposes.
We could not run this server: it ships no npx package for our sandbox and no public endpoint. The four checks that need a live server are left out, and the grade tops out at B until one exists.
Paste this line near the top of your repository's README. The badge always renders the current score.
[](https://aiagentslisting.com/mcp/chatgpt-openclaw-direct-tools)Detect the ecommerce platform, payment providers and catalogue size behind a storefront.
Classify a job title into department and seniority, and optionally verify the position.
Remote MCP server for AISkills402: search tested AI agent skill files (SKILL.md) for free, buy once
No tagged releases on record.
Connect to the AI Agents Listing MCP server at https://aiagentslisting.com/api/mcp using the HTTP transport and complete the sign-in when it asks. Then call the submit_review tool for the listing "chatgpt-openclaw-direct-tools" with a rating from 1 to 5 and a short note on what worked and what did not.^^
Detect the ecommerce platform, payment providers and catalogue size behind a storefront.
Browser & Scraping
Classify a job title into department and seniority, and optionally verify the position.
Browser & Scraping
Remote MCP server for AISkills402: search tested AI agent skill files (SKILL.md) for free, buy once
Developer Tools
One email a week. New agents, MCP servers and skills, and what is actually getting traction.