@businessmaps/mcp
README.md
# @businessmaps/bifrost
[](https://github.com/Business-Maps/bifrost/actions/workflows/ci.yml)
[](https://www.npmjs.com/package/@businessmaps/bifrost)
MCP server that lets AI tools call functions running in your browser.
The daemon sits between any MCP client and your browser tab. It speaks JSON-RPC over stdio on one side and WebSocket on the other. Your browser app connects, registers tools, and the AI can call them.
## Quick start
### 1. Add to your AI tool
**Claude Code:**
```bash
claude mcp add --transport stdio bifrost -- npx @businessmaps/bifrost --no-auth
```
**Claude Desktop** - add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"bifrost": {
"command": "npx",
"args": ["@businessmaps/bifrost", "--no-auth"]
}
}
}
```
**Cursor** - add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"bifrost": {
"command": "npx",
"args": ["@businessmaps/bifrost", "--no-auth"]
}
}
}
```
No install needed. `npx` downloads and runs the package automatically.
### 2. Add the client to your browser app
```bash
npm i @businessmaps/bifrost-browser
```
Or via CDN:
```html
<script src="https://unpkg.com/@businessmaps/bifrost-browser"></script>
```
TypeScript types are included.
### 3. Register tools
```js
import { BifrostBrowser } from "@businessmaps/bifrost-browser";
const bridge = new BifrostBrowser({ port: 3099 });
bridge.registerTools([
{
name: "get_page_title",
description: "Returns the page title",
inputSchema: { type: "object", properties: {} },
handler: async () => document.title,
},
{
name: "get_selection",
description: "Returns the user's current text selection",
inputSchema: { type: "object", properties: {} },
handler: async () => window.getSelection().toString(),
},
]);
bridge.connect();
```
That's it. The AI can now call `get_page_title` and `get_selection` in your browser tab. Handlers have full access to DOM, Canvas, IndexedDB, Clipboard, `fetch`, etc.
## Auth
By default the daemon generates a random token on startup. Two ways to get it:
- **Terminal mode** - the token prints to screen when the daemon starts
- **MCP mode** - the AI calls the built-in `bifrost_connection_info` tool to get the token, then tells you what to paste into your app
Pass the token to the client:
```js
const bridge = new BifrostBrowser({ port: 3099, token: "TOKEN" });
```
Skip auth entirely with `--no-auth` during local development.
## Multiple tabs
Each tab registers its own tools. Calls route to whoever owns the tool. Disconnecting a tab removes its tools.
## Options
```
--port <port> WebSocket port (default: 3099)
--timeout <secs> Tool call timeout (default: 120)
--no-auth Disable token auth (dev only)
--help, -h Show this message
--version, -v Show version
```
## Dev
```bash
git clone https://github.com/Business-Maps/bifrost.git && cd bifrost
npm install
npm test
```
[Architecture](docs/architecture.md) · [Client API](docs/client-api.md) · [Contributing](CONTRIBUTING.md)
## License
Apache 2.0
Maintenance
ActivityInactive
ResponsivenessNo issues