使用说明
tauri mcp
注意:我暂时放弃了这个项目,因为我发现 MCP服务器Tauri 为了达到我的目的。
一个模型上下文协议(MCP)服务器,使AI助手能够检查、调试和自动化Tauri v2应用程序。提供屏幕截图、DOM检查、JavaScript执行和UI交互功能。
概述
tauri mcp由两个包组成:
tauri-mcp(Rust):一个Tauri v2插件,在你的应用程序中公开一个WebSocket服务器@vdavid/tauri-mcp(TypeScript):一个将AI助手连接到插件的MCP服务器
┌─────────────────────┐ MCP (stdio) ┌─────────────────────┐
│ AI Assistant │ ◄───────────────► │ MCP Server (TS) │
│ (Claude, Cursor) │ │ @vdavid/tauri-mcp │
└─────────────────────┘ └──────────┬──────────┘
│
WebSocket (port 9223)
│
┌──────────▼──────────┐
│ Tauri App │
│ tauri-mcp plugin │
└─────────────────────┘
快速开始
1.将插件添加到您的Tauri应用程序中
在您的应用程序中 Cargo.toml:
[dependencies]
tauri-mcp = "0.1"
在你的 main.rs:
fn main() {
tauri::Builder::default()
.plugin(tauri_mcp::init())
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
2.安装MCP服务器
npm install -g @vdavid/tauri-mcp
3.配置您的MCP客户端
添加到您的MCP客户端配置中(例如,Claude Desktop或Cursor):
{
"mcpServers": {
"tauri": {
"command": "tauri-mcp"
}
}
}
4.开始使用它
- 启动您的Tauri应用程序(启用插件)
- 在您的AI助手中,使用
tauri_session行动起来start连接 - 使用其他工具检查您的应用程序并与之交互
可用工具
| 工具 | 说明 |
|---|---|
tauri_session |
启动、停止或检查与Tauri应用程序的连接 |
tauri_screenshot |
捕获网络视图屏幕截图(PNG或JPEG)。 仅限macOS。 |
tauri_dom_snapshot |
获取DOM树(可访问性或结构) |
tauri_execute_js |
在Web视图中运行JavaScript |
tauri_console_logs |
获取捕获的控制台输出 |
tauri_window_list |
列出所有窗口 |
tauri_window_info |
获取窗口详细信息(大小、位置、状态) |
tauri_window_resize |
调整窗口大小 |
tauri_interact |
单击、键入、滚动 |
tauri_wait_for |
等待选择器、文本或可见性 |
注: 截图仅在macOS上受支持。Windows和Linux返回错误。
工具示例
连接到您的应用程序
tauri_session({ action: "start" })
→ "Connected to My App (localhost:9223)"
截图
tauri_screenshot({ format: "png" })
→ [image data]
检查DOM
tauri_dom_snapshot({ type: "accessibility" })
→ YAML format:
- tag: button
role: button
name: Submit
selector: "#submit-btn"
tauri_dom_snapshot({ type: "structure" })
→ Tree format:
div.app
├─ header
│ └─ h1
└─ main#content
├─ form
└─ button.submit-btn
执行JavaScript
tauri_execute_js({ script: "document.title" })
→ "My App"
tauri_execute_js({ script: "await fetch('/api/data').then(r => r.json())" })
→ { ... }
与UI交互
tauri_interact({ action: "click", selector: "#submit-btn" })
→ "Clicked #submit-btn"
tauri_interact({ action: "type", selector: "input[name=email]", text: "user@example.com" })
→ "Typed into input[name=email]"
等待条件
tauri_wait_for({ type: "selector", value: ".loading-complete", timeout: 5000 })
→ "Found element matching '.loading-complete'"
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TAURI_MCP_HOST |
localhost |
WebSocket服务器主机 |
TAURI_MCP_PORT |
9223 |
WebSocket服务器端口 |
TAURI_MCP_TIMEOUT |
10000 |
命令超时(毫秒) |
插件配置(Rust)
// Default configuration
tauri_mcp::init()
// Custom port and host
tauri_mcp::Builder::new()
.port(9224)
.host("0.0.0.0") // Allow remote connections
.build()
安全说明
默认情况下,WebSocket服务器绑定到 localhost 只有。如果你使用 .host("0.0.0.0") 要允许远程连接,请注意 网络上的任何人都可以执行任意JavaScript 在您的应用程序中。仅在受信任的网络或防火墙后绑定到0.0.0.0。
平台支持
| 功能 | macOS | Windows | Linux |
|---|---|---|---|
| 截图 | 是 | 特技 | 特技 |
| JavaScript执行 | 是 | 是 | 有 |
| 控制台日志 | 是 | 是 | 有 |
| DOM快照 | 是 | 是 | 有 |
| 窗口管理 | 是 | 是 | 有 |
| UI交互 | 是 | 是 | 有 |
Windows和Linux上的屏幕截图将返回“未实现”错误。其他功能适用于所有平台。
局限性
DOM快照深度
DOM快照的最大深度为20级。较深的嵌套在没有警告的情况下被截断。这可以防止深度嵌套DOM上的性能问题。
不支持iframe
这 interact, wait_for,以及 dom_snapshot 命令仅对主文档有效。他们无法访问内部的元素 <iframe> 由于浏览器安全限制,元素。
JavaScript执行要求
该插件使用Tauri的事件系统返回JavaScript执行结果。在大多数情况下,这会通过两种机制自动工作:
window.__TAURI__.event-可用时间:withGlobalTauri: true在你的tauri.conf.jsonwindow.__TAURI_INTERNALS__-在Tauri v2网络视图中始终可用(内部API)
如果两者都不可用,JavaScript执行将超时。如果遇到超时,请将其添加到您的 tauri.conf.json:
{
"app": {
"withGlobalTauri": true
}
}
这在全球范围内公开了Tauri的JavaScript API。对于只运行受信任代码的应用程序(大多数Tauri应用程序)来说是安全的,但如果你的应用程序加载了不受信任的第三方内容,请避免使用。
建筑
该插件创建了一个WebSocket服务器(默认端口9223),接受类似JSON RPC的命令。MCP服务器将MCP工具调用转换为WebSocket命令并返回结果。
关键设计决策:
- 无备用链:如果某件事失败了,它会明显失败,并显示一条可操作的错误消息
- 保持连接:WebSocket连接每30秒使用一次ping/pong
- 单个连接:每个会话一个WebSocket连接,可用于所有命令
- 原生截图:用途
WKWebView.takeSnapshot在macOS上实现快速、可靠的捕获
包裹
packages/plugin-Rust Tauri插件packages/server-TypeScript MCP服务器packages/test-app-开发测试应用程序
发展
# Install dependencies
pnpm install
# Build everything
cargo build
pnpm -r build
# Run tests
./scripts/check-all.sh
许可证
麻省理工学院或阿帕奇-2.0
