GPT Inner Call is a monorepo project designed to bridge the gap between AI chat interfaces (like ChatGPT and Perplexity), automated workflows, and local Model Context Protocol (MCP) servers.

The project is organized as a monorepo using Nx:
- Browcall Extension: A browser extension (Manifest V3) that injects logic into AI chat platforms (ChatGPT, Perplexity) to facilitate automated interactions.
- GPT Auto API: A Node.js backend server that exposes an OpenAI-compatible
/v1/chat/completionsendpoint. It communicates with the browser extension to execute requests and retrieve responses. - MCP Gateway: Remote MCP proxy and routing server that exposes an MCP endpoint (
/mcp) for GPT/clients and accepts WebSocket connections from Local MCP Bridges. - Interface CLI: CLI launcher tool (
browcall) to manage and quick-start all backend services (gpt-auto-api,mcp-gateway,local-mcp-bridge). Publishable to NPM as@ducy23061999/browcall-cli.
- n8n-nodes-browcall-gate: Custom n8n nodes to integrate Browcall directly into your automation workflows.
- Interfaces: Shared TypeScript definitions and interfaces used across the monorepo.
GPT / Client
β
β HTTP POST / GET (JSON-RPC 2.0 / MCP Endpoint: http://localhost:8767/mcp)
βΌ
MCP Gateway (apps/mcp-gateway)
β
β Workspace-aware WebSocket routing (ws://localhost:8768)
βΌ
Local MCP Bridge(s)
β
β Stdio / Child Process (JSON-RPC 2.0)
βΌ
Local MCP Server(s) (e.g., @modelcontextprotocol/server-filesystem)
The MCP Gateway supports multiple Local MCP Bridge connections concurrently, including multiple bridge instances with the same bridgeId.
The routing model is:
User / AI Request
β
βΌ
Workspace
β
βΌ
Bridge
β
βΌ
Tool
- Workspace identifies the project/context where an operation should run.
- Bridge identifies the local MCP connection that provides access to that workspace.
- Scope is the filesystem boundary enforced by the bridge.
- A request with an explicit
workspaceIdis routed only to bridges registered for that workspace. It never silently falls back to another workspace. - Multiple bridge connections can belong to the same workspace, allowing duplicate bridge instances without rejecting an existing socket.
- MCP sessions can select a workspace with the
workspaceIdquery parameter orx-workspace-idheader.
Example workspace mapping:
mighty-note-backend
β mac-local-bridge
β /Users/tranducy/Documents/Project/mighty_note_backend
gpt-inner-call
β mac-local-bridge-1787664580312-17sl
β /Users/tranducy/Documents/Project/gpt-inner-call
The execution flow is:
User Request
β
Workspace Resolution
β
Bridge Resolution
β
MCP Tool Execution
- Monorepo Management: Nx
- Backend: Node.js, Express, WebSocket (
ws) - Frontend/Extension: React, TypeScript, Vite
- Integration: n8n, Model Context Protocol (MCP)
- Node.js (v18+)
- Yarn or npm
- Google Chrome or Chromium-based browser (for the extension)
-
Clone the repository:
git clone https://github.com/gys-dev/browcall-gate.git cd browcall-gate -
Install dependencies:
yarn install # or npm install
-
Start API server:
yarn serve
Runs at
http://localhost:8766. -
Build Extension:
yarn build-extension-react
Artifacts located in
dist/apps/extension. Load as an unpacked extension in Chrome.
-
Start MCP Gateway:
yarn serve:gateway
Starts HTTP server at
http://localhost:8767and WebSocket server atws://localhost:8768. -
Start Local MCP Bridge:
yarn serve:bridge
Connects to
ws://localhost:8768and initializes configured local MCP servers (e.g., filesystem MCP). -
Build Gateway & Bridge:
yarn build:gateway yarn build:bridge
-
Start all backend services via CLI:
# Build backend services & CLI yarn build:all:apps # Launch CLI (starts gpt-auto-api, mcp-gateway, local-mcp-bridge) yarn start:cli start --all # Or launch interactive menu yarn start:cli interactive
-
Prepare & Publish CLI to NPM:
# Prepares dist/apps/interface-cli with embedded dist artifacts yarn prepare:cli-dist # Build, prepare dist, and publish yarn publish:cli
Create an mcp-config.json file in the root directory (see mcp-config.sample.json):
{
"gatewayUrl": "ws://localhost:8768",
"bridgeId": "mac-local-bridge",
"clientName": "Local Mac MCP Bridge",
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/me/projects"
]
}
}
}- Endpoint:
POST /v1/messages(Port8766) - Description: Anthropic Messages API specification for Claude Code CLI integration (
ANTHROPIC_BASE_URL=http://localhost:8766).
- Endpoint:
GET /sseorPOST /sse(Port8766) - Description: Real-time live rendering streaming deltas via Server-Sent Events.
- Endpoint:
POST /mcp&GET /sse(Port8767) - Description: Forwards JSON-RPC 2.0 MCP requests (
tools/list,tools/call,initialize,ping) to connected Local MCP Bridges with workspace-aware routing. - Workspace selection:
workspaceIdquery parameter orx-workspace-idheader. - Health Check:
GET /healthincludes active bridge and workspace information. - Connected Bridges & Tools:
GET /bridges
The project includes an end-to-end test covering concurrent bridge connections, duplicate bridge IDs, workspace routing, tool aggregation, and collision disambiguation:
yarn ts-node scripts/test-multi-bridge-e2e.tsThe verification currently passes with three concurrent bridge connections, including two connections registered with the same bridgeId.
For step-by-step setup guides, see the Claude Code & AI Agent Guide.
- Follow the Knowns Guidelines.
- Ensure linting passes:
npm run lint. - Test your changes:
npm run test.
This project is licensed under the MIT License.
