Token导航 LogoToken导航TokenDH.com
Tauri Plugin MCP Bridge logo
浏览器工具未说明官方级别未说明来源级核验

Tauri Plugin MCP Bridge

MCP Server

Tauri 2.0插件,通过Model Context Protocol (MCP)实现桌面应用的自动化控制,支持AI助手与Tauri应用的交互。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
RustClaude浏览器自动化Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

seanesla

提供方

seanesla

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

Tauri插件MCP桥

Tauri 2.0插件,支持桌面应用程序自动化的模型上下文协议(MCP)集成。允许像Claude这样的人工智能助手检查您的Tauri应用程序并与之交互。

特性

  • ✅ 窗口管理(列表、信息、显示/隐藏、移动、调整大小)
  • ✅ 浏览器控件(导航、状态、执行JS、选项卡)
  • ✅ DevTools集成(仅限macOS)
  • ✅ DOM交互(点击、键入、等待、快照)
  • ✅ 事件订阅
  • ✅ 性能指标
  • ✅ 测试记录/回放
  • 🚧 截图(需要tauri插件截图)

安装

添加到您的 Cargo.toml:

[dependencies]
tauri-plugin-mcp-bridge = { path = "../path/to/tauri-plugin-mcp-bridge" }

或者通过git:

[dependencies]
tauri-plugin-mcp-bridge = { git = "https://github.com/yourusername/tauri-mcp-bridge" }

用法

基本设置

在Tauri应用程序中初始化插件:

// src-tauri/src/main.rs
fn main() {
    tauri::Builder::default()
        .plugin(tauri_plugin_mcp_bridge::init())
        .run(tauri::generate_context!())
        .expect("error while running tauri application");
}

就是这样!该插件将:

  1. 在以下位置创建Unix套接字 ~/.tauri/mcp.sock (仅调试版本)
  2. 启动JSON-RPC 2.0服务器
  3. 处理传入的MCP命令
  4. 执行Tauri API调用

使用DevTools功能

要在生产构建中启用DevTools:

[dependencies]
tauri-plugin-mcp-bridge = { path = "../path/to/tauri-plugin-mcp-bridge", features = ["devtools"] }

建筑

该插件实现了一个在Unix套接字上监听的JSON-RPC 2.0服务器:

MCP Server (TypeScript)
  ↓ Unix socket (~/.tauri/mcp.sock)
Plugin (JSON-RPC server)
  ↓ Routes to command handlers
Command Handlers (Rust modules)
  ↓ Execute Tauri APIs
Your Tauri App

组件

1.套接字服务器(src/server.rs)

  • 在以下位置创建Unix套接字 ~/.tauri/mcp.sock
  • 接受传入连接
  • 解析JSON-RPC 2.0请求
  • 命令处理程序的路由
  • 返回JSON-RPC 2.0响应

2.国家管理(src/state.rs)

全局插件状态:

pub struct MCPState {
    pub event_subscriptions: Arc>>,
    pub js_callbacks: Arc>>,
    pub recordings: Arc>>>,
}

3.命令处理程序(src/commands/)

模块化命令处理程序:

  • window.rs -窗口管理(6个命令)
  • webview.rs -浏览器控件(4个命令)
  • devtools.rs -DevTools(2个命令,仅限macOS)
  • script.rs -JS与回调模式的交互(4个命令)
  • events.rs -事件订阅(3个命令)
  • performance.rs -性能指标(1个命令)
  • testing.rs -测试记录/回放(2个命令)
  • screenshot.rs -屏幕截图(1个命令,存根)

JavaScript回调模式

自从Tauri的 eval() 不返回值,插件使用回调模式:

// 1. Generate callback ID
let callback_id = uuid::Uuid::new_v4().to_string();

// 2. Create oneshot channel
let (tx, rx) = oneshot::channel();

// 3. Store in state
app.state::()
    .js_callbacks
    .lock()
    .unwrap()
    .insert(callback_id.clone(), tx);

// 4. Inject JS that invokes callback
let js = format!(r#"
    window.__TAURI__.invoke('js_callback', {{
        id: '{}',
        data: {{ result: 'value' }}
    }});
"#, callback_id);

window.eval(&js)?;

// 5. Await result with timeout
tokio::time::timeout(Duration::from_secs(30), rx).await??

API 参考

窗口管理

所有窗口命令都接受 label 参数。如果没有提供,则使用第一个窗口。

window_list

返回窗口标签数组。

window_info

参数:

  • label (字符串):窗口标签

返回窗口位置、大小和状态标志。

window_show / window_hide

参数:

  • label (字符串):窗口标签

window_move

参数:

  • label (字符串):窗口标签
  • x (数字):X坐标
  • y (数字):Y坐标

window_resize

参数:

  • label (字符串):窗口标签
  • width (数字):宽度(像素)
  • height (数字):高度(像素)

浏览器控件

browser_navigate

参数:

  • url (字符串):要导航到的URL
  • label (字符串,可选):窗口标签

browser_state

参数:

  • label (字符串,可选):窗口标签

返回当前URL和窗口状态。

browser_execute

参数:

  • code (string):JavaScript代码
  • label (字符串,可选):窗口标签

即发即弃JavaScript执行。

browser_tabs

参数:

  • action (string):“列表”、“创建”、“关闭”、“切换”
  • label (字符串,可选):窗口标签
  • index (数字,可选):窗口索引
  • url (字符串,可选):新窗口的URL

交互

browser_click

参数:

  • element (string):CSS选择器
  • button (字符串,可选):鼠标按钮
  • modifiers (数组,可选):键盘修饰符
  • label (字符串,可选):窗口标签

browser_type

参数:

  • text (string):要键入的文本
  • clear (boolean,可选):键入前清除
  • submit (布尔值,可选):提交表单
  • label (字符串,可选):窗口标签

browser_wait

参数:

  • condition (string):“选择器”、“url”、“标题”
  • value (string):等待的值
  • timeout (数字,可选):超时(毫秒)
  • label (字符串,可选):窗口标签

browser_snapshot

参数:

  • includeText (布尔值,可选):包含文本
  • maxDepth (数字,可选):最大深度
  • label (字符串,可选):窗口标签

返回DOM HTML快照。

DevTools(仅限macOS)

需要macOS 10.15+以及调试版本或 devtools 功能。

devtools_open / devtools_close

参数:

  • label (字符串,可选):窗口标签

事件

events_subscribe

参数:

  • types (数组):事件类型字符串

将EventId存储在状态中,以便以后取消订阅。

events_unsubscribe

参数:

  • types (数组):事件类型字符串

events_list

返回所有可用Tauri事件类型的列表。

演出

performance_metrics

参数:

  • label (字符串,可选):窗口标签

通过JavaScript回调返回性能API数据。

测试

test_record / test_replay

尚未实现-返回存根响应。

截图

browser_screenshot

参数:

  • label (字符串,可选):窗口标签
  • fullPage (布尔值,可选):整页
  • format (字符串,可选):图像格式

需要 tauri-plugin-screenshots 待安装。

发展

建筑

cargo build

运行测试

cargo test

使用Tauri应用程序进行测试

  1. 将插件添加到您的Tauri应用程序
  2. 运行应用程序: npm exec tauri dev
  3. 检查插座是否存在: ls -la ~/.tauri/mcp.sock
  4. 使用MCP服务器进行测试: node ../tauri-mcp-server/test-connection.js

平台支持

  • ✅ macOS 10.15+
  • ✅ Linux(Ubuntu 20.04+,Fedora 36+)
  • 🚧 窗户(计划中)

平台特定功能

macOS

  • 完全支持DevTools
  • 所有可用功能

Linux

  • DevTools不可用
  • 所有其他功能均正常工作

视窗

  • 尚未测试/支持
  • 欢迎捐款

配置

调试与发布

调试版本和发布版本之间的插件行为不同:

调试版本:

  • Socket服务器始终启动
  • 插座在 ~/.tauri/mcp.sock
  • 所有可用命令

发布版本:

  • 默认情况下禁用套接字服务器
  • 启用 TAURI_MCP_ENABLE=1 环境变量
  • 或使用插件配置(未来功能)

特性

[features]
default = []
devtools = []  # Enable DevTools in release builds

安全考虑

⚠️ 重要安全注意事项:

  1. 默认情况下仅调试构建 -套接字服务器仅在调试版本中运行,以防止在生产中进行未经授权的访问。
  1. 仅限本地插座 -使用Unix域套接字,而不是网络套接字,限制对本地计算机的访问。
  1. 无身份验证 -目前没有身份验证机制。任何具有套接字访问权限的人都可以控制该应用程序。
  1. 生产使用 -如果在生产中启用,请实施额外的安全措施:

- 身份验证令牌 - 许可制度 - 命令分配列表 - 审核日志记录

故障排除

套接字未创建

  • 检查您是否正在运行调试版本
  • 验证 ~/.tauri 目录存在并且可写
  • 检查应用程序日志是否有错误

命令不起作用

  • 确保窗户标签正确
  • 检查DevTools中的JavaScript错误
  • 验证Tauri版本兼容性(2.0+)

编译过程中的借用错误

常见模式-始终存储 app.webview_windows() 打电话之前 .get():

// ❌ Wrong - temporary value
let window = app.webview_windows().get(label)?;

// ✅ Correct - stored first
let windows = app.webview_windows();
let window = windows.get(label)?;

贡献

欢迎投稿!需要工作的领域:

  • \[\]Windows平台支持
  • \[\]身份验证/授权
  • \[\]截图插件集成
  • \[\]测试记录实施
  • \[\]事件通知转发
  • \[\]性能优化
  • \[\]更全面的测试

许可证

麻省理工学院或阿帕奇-2.0

鸣谢

内置:

目录标签

目录标签

RustClaude浏览器自动化桌面自动化本地部署AI集成窗口管理浏览器控制DOM交互

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP