sncro.net MCP Server

官方

为AI助手提供实时浏览器调试——通过MCP操作DOM、控制台和网络。

文档

sncro-relay

sncro 的开源组件 — 包含 MCP 中继、浏览器端代理以及框架插件,让 AI 编程助手能够检查实时浏览器。

本仓库包含的内容

路径说明
relay/FastAPI 应用,对外暴露 MCP 服务器以及供 agent.js 使用的长轮询端点
relay/static/agent.js由中间件注入的浏览器端脚本;将控制台和 DOM 数据推送到中继
middleware/sncro_middleware.pyFastAPI / Starlette 插件 — 适用于 FastAPI 应用的即插即用中间件
middleware/sncro_flask.pyFlask 插件 — 适用于 Flask 应用的即插即用中间件
trysncro/try.sncro.net — 一个故意制造问题的演示应用,用于端到端测试 sncro

工作原理

 ┌──────────────┐    MCP     ┌──────────┐   long-poll   ┌─────────────┐
 │ Claude Code  │──tools────▶│  relay   │◀──────────────│  agent.js   │
 │ (or other    │            │ (relay/) │   snapshots   │ (injected   │
 │  MCP client) │◀──results──│          │──────────────▶│  by plugin) │
 └──────────────┘            └──────────┘               └─────────────┘
                                                              ▲
                                                              │ same-origin
                                                              │ cookies
                                                       ┌─────────────┐
                                                       │  your app   │
                                                       │ (plugin is  │
                                                       │  installed) │
                                                       └─────────────┘
  1. Claude 调用 create_session(MCP 工具)→ 中继返回一个 9 位数的会话密钥和 URL
  2. 用户在运行其应用的浏览器中访问该 URL → 通过“允许 sncro 调试?”进行确认
  3. 插件设置一个 cookie,后续该源下的 HTML 响应中会注入 agent.js
  4. agent.js 推送基线数据(控制台、错误),并对按需查询(query_elementget_page_snapshot 等)进行长轮询

使用 sncro

大多数用户无需自行运行中继 — relay.sncro.net 上的托管版本对免费套餐友好。在 sncro.net 注册您的项目并获取项目密钥。

FastAPI:middleware/sncro_middleware.py 放入您的项目,然后:

from middleware.sncro_middleware import SncroMiddleware, sncro_routes

app = FastAPI(debug=True)  # sncro only loads when debug=True
if app.debug:
    app.include_router(sncro_routes)
    app.add_middleware(SncroMiddleware, relay_url="https://relay.sncro.net")

Flask:middleware/sncro_flask.py 放入您的项目,然后:

from sncro_flask import init_sncro

app = Flask(__name__)
if app.debug:
    init_sncro(app, relay_url="https://relay.sncro.net")

两种中间件仅在调试模式下激活 — 生产环境中零开销。

贡献

我们欢迎新的框架插件。CONTRIBUTING.md 包含了插件必须实现功能的完整规范 — cookie、路由、安全标头 — 以及测试模板。Django、Rails、Express、Next.js、ASP.NET、Go — 全部欢迎。

错误报告和安全问题:请参阅 SECURITY.md

许可证

MIT。请参阅 LICENSE

sncro.net 上的仪表板(项目管理、计费、管理)位于一个单独的私有仓库中。