# Web-MCP-Bridge – Connect browser-based LLMs to MCP servers and tools

> Source: <https://github.com/AstraxOf/web-mcp-bridge>
> Published: 2026-10-30 21:27:04+00:00

**Use your local MCP servers with ChatGPT, Gemini and Claude Web: no API keys, no extra subscriptions.**

Free AI chat UIs don't speak MCP. **Web MCP Bridge** adds it: the model asks for a tool with a JSON block,
the extension runs it on your local MCP server over WebSocket and pastes the result back into the chat.
By default you approve every call.

Important

Only connect MCP servers you trust. A tool with filesystem access can read whatever you allow it to.

| Platform | Status | Adapter | 
|---|---|---|
|  | ✅ Supported | `adapters/chatgpt.js` | 
|  | ✅ Supported | `adapters/gemini.js` | 
|  | ✅ Supported | `adapters/claude.js` | 
|  [·](https://camo.githubusercontent.com/d07fc3deb7c4cfed1fddd8ca223a4c9c3153dcb12bb48c267834e87c6437f144/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506572706c65786974792d3146423843443f7374796c653d666f722d7468652d6261646765266c6f676f3d706572706c6578697479266c6f676f436f6c6f723d7768697465)  [·](https://camo.githubusercontent.com/cfeeb479b240f7f30d30d834e294edd48b1a6c4a9fef7a2f2cc123965d939372/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f446565705365656b2d3444364246453f7374796c653d666f722d7468652d6261646765)  | 🗺️ Roadmap | [Contribute](https://github.com/AstraxOf/web-mcp-bridge/blob/main/CONTRIBUTING.md) | 

|  | Skill | What it does | 
|---|---|---|
|  | **Context control** | Register many servers, **1 active by default** (up to**5** ). Only active servers' tools reach the model; the popup shows the approximate token cost. | 
|  | **Per-MCP permissions** | 3-state selector — *Allow always* ·*Ask every time* ·*Don't allow* — global and per server, in the popup and the in-page panel. | 
|  | **Nothing is dropped** | Images, audio and binary resources are attached to the chat as real files; long text is attached in full instead of truncated. | 
|  | **No preinstalled MCP** | Add your own, or the bundled demo server with one click. | 
|  | **Reliable in the background** | No step relies on page timers (throttled when hidden); delivery is verified and retried. | 
|  | **The AI doesn't forget** | A one-line reminder per message plus periodic full re-injection. | 
|  | **≈ 50 % fewer tokens** | Tools are described as `name(param: type)` signatures instead of JSON Schema. | 
|  | **~40 lines per platform** | A new platform is just a set of selectors. | 
|  | **Locked down** | The Python bridge listens on `127.0.0.1` , only accepts`chrome-extension://` origins and supports a token. Websites can't reach your tools. | 
|  | **No duplicates, auto-reconnect** | Per-call IDs, exponential backoff, keep-alive for the MV3 Service Worker, call history, light/dark UI. | 

Tip

Want to try it in 60 seconds? The repo ships with a **demo MCP server**. See [Quick start](#-quick-start-60-seconds).

Browsers can't launch local programs, so run this **once**. It keeps the bridge running in the background at login (Windows / macOS / Linux):

```
python server/install_service.py
```

Then load the extension. Use the **master switch in the popup** (or the in-page panel) to turn the bridge on/off; the icon shows `OFF` when disabled.
Remove auto-start with `python server/install_service.py --uninstall`.

```
pip install -r server/requirements.txt
python server/mcp_ws_bridge.py --port 8080 --name demo -- python server/examples/demo_mcp_server.py
```

1. `chrome://extensions` → enable**Developer mode** →**Load unpacked** → select this folder.
2. Open the popup and add your server (e.g. `astrax_mcp` at`ws://localhost:8080` ), or click**Add demo server** .
3. Open ChatGPT / Gemini / Claude → open the **Web MCP Bridge** panel (bottom-left) →**Inject instructions** .
4. Ask *"What time is it? Use your tools."* and approve the call.

**Your own server:**

```
python server/mcp_ws_bridge.py --port 8080 -- python -m astrax_mcp
```

**Several at once:** see `server/servers.example.json` and `--config`.

```
{ "mcp_call": { "server": "server_name", "name": "tool_name", "arguments": { "arg1": "value" } } }
```

Results come back as:

```
[MCP_RESULT server="…" tool="…" status="ok|error|rejected"]
…
[/MCP_RESULT]
```

Note

The content of `MCP_RESULT` is presented to the AI as *data*, not instructions (prompt-injection mitigation).

See the [Spanish README](https://github.com/AstraxOf/web-mcp-bridge/blob/main/README.es.md) for the architecture diagram, security model, selector-fix guide and roadmap.

```
npm test      # syntax, parser, prompt builder and bridge integration tests
npm run pack  # dist/web-mcp-bridge.zip
```

**Astrax** is open source and grows with its community. You're welcome to open issues, send pull requests, suggest ideas, try Astrax on other systems or MCP clients, and report bugs. Read [CONTRIBUTING.md](https://github.com/AstraxOf/web-mcp-bridge/blob/main/CONTRIBUTING.md) to get started — new adapters are the best first contribution.

If you find the project useful, leave a ⭐ on the repository and subscribe to the channel.

Made with 💙 by Rufus · [@AstraxOf](https://github.com/AstraxOf) · [astrabots.pro](https://astrabots.pro)
