refactor(tamagotchi): use top-level cargo workspace, move tauri-plugin-mcp (#152)
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# `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.25" }
|
||||
# or
|
||||
tauri-plugin-mcp = { git = "https://github.com/moeru-ai/airi", tag = "0.4.25" }
|
||||
```
|
||||
|
||||
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
|
||||
Reference in New Issue
Block a user