🦀

Claude Code で Wassette (wasm で動かすMCPサーバー)を使ってみた

に公開

Claude Code で Wassette を使ってみた

はじめに

以下の記事を試して、Claude Code でも実行して、迷ったところメモです。

https://zenn.dev/mi2valley/articles/0779e5d3b32f06

Wassette とは

Wassette は WebAssembly コンポーネントを MCP サーバーとして実行できるツールです。セキュリティを重視した設計で、サンドボックス環境でツールを実行できます。

https://github.com/microsoft/wassette/tree/main

全体の手順

Wassette を使ったカスタムツール開発の流れは以下の通りです:

  1. コンポーネントを開発・ビルド - Rust 等で Wasm コンポーネントを作成
  2. コンポーネントをパッケージとして管理 - GitHub Container Registry に配置
  3. Wassette 環境の構築 - MCP サーバーとして Wassette をセットアップ
  4. コンポーネントをロードして使用 - Wassette から呼び出し可能にする

1. コンポーネントを開発・ビルド

詳細は以下の記事を参照してください:

https://zenn.dev/mi2valley/articles/0779e5d3b32f06

Rust で Wasm コンポーネントを作成し、WIT でインターフェースを定義します。

2. コンポーネントをパッケージとして管理

GitHub Container Registry (GHCR) に Wasm コンポーネントをプッシュします。

詳細は上記の Zenn 記事を参照してください。

3. Wassette 環境の構築

3-1. Wassette のインストール (Mac)

cargo とか rust のエコシステムとは別に wasm ランタイムを組み込んだ wassette cli を使います。
wassette の中で、Rust 等で作った component をロードして mcp サーバーのツールとして利用できるようにしてます。

brew install wassette

3-2. Claude Code に MCP サーバーとして登録

claude mcp add -- wassette wassette serve --stdio

Codex, Gemini CLI, Cursor 等も行けそうです

参考

https://github.com/microsoft/wassette/blob/main/docs/mcp-clients.md

3-3. 接続確認

claude mcp list
# wassette: wassette serve --stdio - ✓ Connected

4. コンポーネントをロードして使用

4-1. コンポーネントのロード

Claude Code を起動して、以下のように Wasm コンポーネントをロードします:

claude

Claude Code 内で:

以下をロードして
oci://ghcr.io/<YOUR_GITHUB_USERNAME>/charcount:0.1.0

4-2. 使ってみた

Claude Code から文字数カウントツールを呼び出してみました。

英語の文字列

> 次の文字列の文字数を教えて wassetteで
  "hello wasm mcp"

"hello wasm mcp"の文字数は14文字です。

日本語の文字列

> 次の文字列の文字数を教えて wassetteで
  "ほげ"

"ほげ"の文字数は2文字です。

感想

wassette 完全に理解しました。安全な感じで良さそうです。
GitHub の Package としても管理できるの良さそうです。

用語補足

よくわかってない単語がそこそこ出てきたので整理しておきます。

WIT (WebAssembly Interface Types)

WebAssembly コンポーネント間のインターフェースを定義する言語です。関数のシグネチャやデータ型を.witファイルで記述します。

wkg (WebAssembly Package Manager)

WebAssembly コンポーネントのパッケージマネージャーです。

  • ghcr.io(GitHub Container Registry)に Wasm コンポーネントを配置できます
  • Docker でログインしていれば OCI レジストリとしてwkgも同じ認証を使えます

Rust 開発ツール

  • cargo: Rust のビルドツール・パッケージマネージャー
  • rustup: Rust のツールチェーン管理ツール
  • cargo component: Wasm コンポーネントをビルドするための cargo サブコマンド

bindings

WIT ファイルから各言語向けのコードを自動生成する仕組みです。Rust や Python などで Wasm コンポーネントを呼び出すためのインターフェースコードが生成されます。

PAT (Personal Access Token)

GitHub のパッケージレジストリにアクセスするための認証トークンです。wkgで GHCR にプッシュする際に必要です。
classic トークンを使用しました。

GitHubで編集を提案

Discussion