mcp server
engineering-mcp-chatgpt
Optional ChatGPT companion for Engineering MCP with C2C forwarding, user-approved Workspace Access, and Private/OAuth deployment profiles.
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- Node.js 20 or newer
{
"mcpServers": {
"engineering-mcp-chatgpt": {
"command": "npx",
"args": [
"-y",
"engineering-mcp-chatgpt"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 22, 2026engineering-mcp-chatgpt
An optional companion sidecar plugin for Engineering MCP. It adds a ChatGPT-facing MCP endpoint, strict C2C forwarding, and operator-approved Workspace Access without changing or embedding the Engineering MCP core.
This package requires Engineering MCP with the private engineering-c2c/1 contract, which is now part of Core main. The companion invokes the operator-configured engineering-mcp executable as:
engineering-mcp c2c-client --contract-version engineering-c2c/1 --repo <configured-repository>
The private Core process exposes only execute_c2c_plan over MCP stdio. The companion exposes only engineering_execute_c2c_plan to ChatGPT. Core implementation is not copied into this package.
Release status:
0.1.0, source public on GitHub, npm unpublished. Licensed under Apache-2.0.
Compatibility
engineering-mcp-chatgpt 0.1.x
-> requires engineering-c2c/1
-> invokes private execute_c2c_plan
The configured executable and canonical repository are trusted startup/operator configuration. MCP request text cannot select the executable, change the repository binding, or change the contract version. Missing or incorrect versions fail closed.
The companion does not depend on Core Store implementation, SQLite schema, lifecycle internals, Broker layout, a Core binary hash, or OAuth provider internals. OAuth/OIDC, Workspace Access, ChatGPT configuration, and public HTTPS deployment remain companion concerns.
Choose a path
- Core only — install no companion. Use Engineering MCP directly.
- Local MCP client — use the core's own local MCP connection; this companion is unnecessary unless Workspace Access or the ChatGPT-facing public tool name is required.
- ChatGPT without public hosting — use the Private profile and OpenAI's Secure MCP Tunnel. The server stays on loopback or a private address.
- Remote ChatGPT — use the Remote OAuth profile behind an HTTPS reverse proxy with a conforming OAuth/OIDC provider.
ChatGPT cannot directly reach a localhost or private-network MCP endpoint. OpenAI documents Secure MCP Tunnel as the supported developer-mode path for a private MCP server without public exposure. See Secure private connection.
Profiles
| Capability | Private profile | Remote OAuth profile |
|---|---|---|
| C2C | Yes | Yes |
| Workspace Access | Yes | Yes |
| Public Internet | No | Via HTTPS reverse proxy |
| Domain | Not required | Required for the public HTTPS endpoint |
| OAuth provider | Not required | Generic OAuth 2.1/OIDC |
| ChatGPT path | Secure MCP Tunnel | Public HTTPS /mcp |
| Beginner friendliness | Recommended | Advanced |
The codebase is shared. Only configuration and the outer authentication/deployment layer change.
Security boundary
Authentication and Workspace Authorization are separate:
- Authentication proves who may reach the MCP server. Private uses
auth.mode = "none"only on loopback/private binds. Remote verifies bearer tokens against configured issuer, audience, JWKS, and scopes. - Workspace Authorization grants a specific
grant_id, canonical root, andREAD/WRITEpermissions. It is always required for workspace operations, even after OAuth succeeds.
A Private configuration using a wildcard, public IP, or public hostname fails with UNSAFE_PUBLIC_NO_AUTH_BIND. There is no insecure override.
Public tools
Exactly seven tools are registered:
engineering_execute_c2c_planrequest_workspace_accessget_workspace_accesslist_workspaceread_workspace_filesearch_workspacewrite_workspace_file
The private core tool execute_c2c_plan is not exposed. Approve, Deny, and Revoke remain operator-only actions. No shell, PowerShell, command prompt, or arbitrary process tool exists.
Private Quick Start
Requirements: Windows, Node.js 24 or newer, Engineering MCP with engineering-c2c/1, and a local NTFS location for authorization state.
npm install
powershell -NoProfile -File .\ops\Initialize-PrivateProfile.ps1
Then edit C:\EngineeringMCPChatGPT\config\local.private.json:
- Set
core.executableto the trustedengineering-mcpcommand or absolute executable path selected by the operator. - Keep
core.contractVersionexactlyengineering-c2c/1. - Set
core.repoto the canonical repository bound to Engineering MCP. - Confirm
workspaceAccess.authzRootand protect that directory for the operator and runtime identity. - Keep
server.hoston loopback or a private address.
Start:
$env:ENGINEERING_MCP_CHATGPT_CONFIG='C:\EngineeringMCPChatGPT\config\local.private.json'
npm start
Verify http://127.0.0.1:8770/healthz, then connect through Secure MCP Tunnel. This repository deliberately omits tunnel-client commands because they have not been validated against this local package. Follow the current OpenAI connection guide.
Workspace approvals
A ChatGPT call creates only a REQUESTED record. A local administrator decides it:
powershell -NoProfile -File .\ops\Workspace-Access-Control.ps1 -AuthzRoot 'C:\ProgramData\EngineeringMCPChatGPT\authz' -RequestId 'req_00000000000000000000000000000000' -Approve
The script demands a typed acknowledgement. Deny and Revoke use the same script. The script never changes the target workspace's NTFS ACL.
For a local pending-request menu and console notification watcher, see Operator Approval UX V1. The menu keeps the existing typed acknowledgement and supports both the companion configuration and the ingress Get-Constants boundary.
Remote profile
Start with config/oauth.example.json and Remote OAuth. The Node server listens on a private address; an HTTPS reverse proxy publishes https://mcp.example.com/mcp. Provider values remain generic. ZITADEL is documented only as the tested reference provider.
Development
npm run typecheck
npm test
npm pack --dry-run
See Validation, Threat model, and Packaging map.
License
Apache License 2.0. See LICENSE. This package contains no NOTICE file because no NOTICE attribution was identified for this contract-only integration.