关于 Chrome Extension Bridge MCP
一个 Chrome 扩展,在网页与本地 MCP 服务之间建立 WebSocket 连接,使 MCP 服务能够读取页面资源并在页面上下文中执行函数,例如访问 window.editor。
主要功能
- 01基于 WebSocket 的网页与本地服务连接
- 02读取浏览器资源与页面属性
- 03在网页上下文中执行函数
- 04通过 mcp:resource.* 与 mcp:tool.* 调用
适用场景
- 01从本地服务控制网页编辑器,如 Three.js 编辑器
- 02读取网页运行时的状态与属性
MCP 相关
该项目包含一个本地 MCP 服务,它通过 WebSocket 向 Chrome 扩展发送命令并接收结果,从而把网页能力暴露给 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
暂未收录安装方式
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
还没有获取到工具列表
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Chrome Extension Bridge MCP
一个 Chrome 扩展,可在网页与本地 MCP 服务之间建立 WebSocket 连接。借助它,你可以与网页资源交互,并执行 MCP 服务中的函数。
灵感来自 playcanvas/editor-mcp-server。

概述
本项目由两个主要组件构成:
- Chrome 扩展:将客户端脚本注入网页,以便与本地服务建立 WebSocket 连接。
- 本地 MCP 服务:一个 WebSocket 服务,可向扩展发送命令并接收响应。
通过此设置,你可以:
- 从本地服务访问浏览器 API 和 DOM 元素
- 在网页上下文中执行 JavaScript 函数
- 获取网页中的资源和信息
- 尤其是访问全局对象,例如 editor: https://threejs.org/editor/。你可以使用网站公开的
window.editor来控制编辑器,就像 playcanvas/editor-mcp-server 一样。
安装
设置
- 克隆仓库:
git clone https://github.com/yourusername/chrome-extension-socket-mcp.git
cd chrome-extension-socket-mcp
- 安装依赖:
npm install
开发
运行以下命令,以开发模式构建扩展:
npm run debug
加载扩展
- 打开 Chrome 并访问
chrome://extensions/ - 打开右上角的开关,启用“开发者模式”
- 点击“加载已解压的扩展程序”,然后选择本项目中的
extension文件夹 - 扩展现已安装。你应该会在任意网页的右上角看到一个红色小指示器,显示“MCP Extension Loaded”
用法
服务端
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { Client } from "../src/client";
// Define the port for WebSocket connection
// This should match the port in your Chrome extension's WebSocket connection
const port = 54319;
const client = new Client(port);
// Establish connection to the Chrome extension
await client.connect();
// Create a new MCP server instance with name and version
const server = new McpServer({
name: "Extension-Socket-Server",
version: "1.0.0",
});
// Register a tool that executes the window.alert function in the browser
// This demonstrates how to interact with browser APIs from your server
server.tool(
"alert", // Tool name
"use window.alert", // Tool description
{ message: z.string() }, // Tool parameters schema using Zod
async ({ message }) => { // Tool implementation function
// Call the extension to execute alert in the browser context
const response = await client.callToolExtension("alert", { message });
return response;
}
);
// Register a resource to retrieve the browser's user agent
// This demonstrates how to access browser properties from your server
server.resource(
"userAgent", // Resource name
"useragent://chrome", // Resource URI template
async (uri) => { // Resource handler function
// Get the user agent from the browser
const { content } = await client.callResourceExtension("navigator.userAgent");
// Return the formatted resource
return {
contents: [
{
uri: uri.href,
text: content[0].text,
},
],
};
}
);
// Set up a transport layer for the MCP server
// StdioServerTransport uses standard input/output for communication
const transport = new StdioServerTransport();
await server.connect(transport);
// Handle application termination gracefully
process.on("SIGINT", async () => {
console.log("SIGINT signal received"); // Log when SIGINT is received
await client.dispose(); // Close the WebSocket connection
process.exit(0); // Exit the process
});
扩展端
扩展默认会自动连接到 ws://localhost:54319。你可以在 extension/content.js 中修改此设置。
扩展为服务端命令公开了两个主要入口:
mcp:resource.*- 用于访问浏览器资源和属性mcp:tool.*- 用于在浏览器上下文中执行函数
API 参考
客户端
new Client(port)- 创建一个连接到指定端口的新客户端实例connect()- 连接到 MCP 服务callToolExtension(toolName, params)- 在浏览器中调用工具callResourceExtension(resourceName, params)- 从浏览器获取资源dispose()- 关闭连接
WebSocket 协议
扩展使用一种简单的类 JSON-RPC 协议:
请求:
{
"id": "unique-request-id",
"method": "mcp:resource.navigator.userAgent",
"params": {}
}
响应:
{
"id": "unique-request-id",
"result": "Mozilla/5.0 ..."
}
许可证
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。