tauri-plugin-mcp 0.7.2-beta.3

A Tauri plugin for interacting with MCP servers
Documentation
# `tauri-plugin-mcp`

![Crates.io Version](https://img.shields.io/crates/v/tauri-plugin-mcp)

A Tauri plugin for interacting with MCP servers.

## Install

This plugin requires a Rust version of at least 1.77.2

`src-tauri/Cargo.toml`

```toml
[dependencies]
tauri-plugin-mcp = { version = "0.4.27" }
# or
tauri-plugin-mcp = { git = "https://github.com/moeru-ai/airi", tag = "0.4.27" }
```

You can install the JavaScript Guest bindings using your preferred JavaScript package manager:

```bash
pnpm add @proj-airi/tauri-plugin-mcp
# or use @antfu/ni
ni @proj-airi/tauri-plugin-mcp
```

## Usage

First, you need to register the plugin with Tauri:

`src-tauri/src/lib.rs`

```rust
fn main() {
  tauri::Builder::default()
    .plugin(tauri_plugin_mcp::Builder.build())
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}
```

Afterwards all the plugin's APIs are available through the JavaScript guest bindings:

```ts
import { callTool, connectServer, disconnectServer, listTools } from '@proj-airi/tauri-plugin-mcp'

// Sample: Connect to a container running AIRI Android
await connectServer('docker', 'run -i --rm -e ADB_HOST=host.docker.internal ghcr.io/lemonnekogh/airi-android:v0.1.0')

console.log(await listTools())
// [
//   {
//     description: 'Get the battery level of the device',
//     inputSchema: {
//       required: [],
//       title: 'battery_level',
//       type: 'object',
//     },
//     name: 'battery_level',
//   },
// ]

console.log(await callTool('battery_level', {}))
// {
//   content: [
//     {
//       type: 'text',
//       text: '100',
//     },
//   ],
//   isError: false,
// }

await disconnectServer()
```

## Development

Source code of JavaScript bindings is located in [packages/tauri-plugin-mcp](../../packages/tauri-plugin-mcp/src/index.ts).

These files are generated from `tauri-plugin` crate:

- `permissions/autogenerated`
- `permissions/schemas`

## TODO List

- [x] Move to a single repository
- [ ] Server connection
  - [x] stdio
  - [ ] SSE
- [x] Tools
  - [x] List tools
    - [x] Simple: Names only
    - [ ] With description, parameters, returns
  - [x] Call tool
    - [x] Simple: Name only
    - [x] With parameters
    - [x] Returns
    - [ ] Image returns
- [ ] Prompts...
- [ ] Resources...
- [x] JavaScript package to call commands conveniently