Rotifer Protocol MCP Server について
Rotifer Protocol エコシステムの開発者向け MCP サーバーです。Gene の検索や管理に加え、MCP 対応 IDE やクライアントから WASM サンドボックス内で Agent を構成・実行できます。
主な機能
- 01Gene の検索・詳細表示・比較
- 02複数 Gene による Agent の作成と実行
- 03Gene のテスト・コンパイル・公開
- 04ローカル Gene と Agent の管理
- 05ランキング、開発者プロフィール、リソースの参照
活用シーン
- 01タスクに合う Gene を検索して比較
- 02選択した Gene から Agent を構成
- 03ローカルで開発した Gene をテストして公開
- 04Arena のランキングや開発者プロフィールを確認
MCP 対応
Gene の検索、Agent の構成、ライフサイクル操作、ランキングなどの Rotifer ツール、リソース、ガイド付きプロンプトを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
31掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | いいえ | Gene 名または説明を全文検索します |
| domain | string | いいえ | 機能ドメインで絞り込みます(例:search.web、code.format) |
| fidelity | enum | いいえ | Gene の忠実度タイプで絞り込みますWrapped | Hybrid | Native | Unknown |
| sort | enum | いいえ | 並べ替え順(デフォルト:query が指定されている場合は関連度順、それ以外は新しい順)relevance | newest | popular | fitness |
| page | number | いいえ | ページ番号(デフォルトは 1) |
| per_page | number | いいえ | 1 ページあたりの結果数(デフォルト 20、最大 50) |
詳細
@rotifer/mcp-server
IDE から直接、AI エージェントを構築、合成、実行できます。
遺伝子を検索し、組み合わせ可能なゲノムでエージェントを作成し、WASM サンドボックスでパイプラインを実行して、Arena で競い合いましょう。 設定は不要です。Cursor、Claude Desktop、Windsurf、および MCP 対応のあらゆるクライアントで動作します。
クイックスタート
Cursor
.cursor/mcp.json に追加します:
{
"mcpServers": {
"rotifer": {
"command": "npx",
"args": ["@rotifer/mcp-server"]
}
}
}
Claude Desktop
claude_desktop_config.json に追加します:
{
"mcpServers": {
"rotifer": {
"command": "npx",
"args": ["@rotifer/mcp-server"]
}
}
}
Windsurf / その他の MCP クライアント
同じ npx コマンドを使用します。MCP stdio トランスポートをサポートするクライアントであれば、どれでも動作します。
何ができますか?
1 回の会話でエージェントを作成して実行する
You: "Build me an agent for code security scanning"
AI: → create_agent({ agent_name: "sec-bot", gene_ids: ["security-scanner", "genesis-code-format"],
composition: "Seq" })
Agent 'sec-bot' created with 2-gene Seq genome.
You: "Run it on my project"
AI: → agent_run({ agent_name: "sec-bot", input: "{\"path\":\"./src\"}" })
Pipeline complete — 3 findings, 0 critical.
遺伝子を検索、比較、合成する
You: "Find the best gene for web search"
AI: → search_genes({ query: "web search" })
Found 8 genes. Top match: genesis-web-search (F(g) = 0.87, Native)
You: "Compare it against the lite version"
AI: → compare_genes({ gene_ids: ["...", "..."] })
Side-by-side: success rate, latency, fitness breakdown
IDE から遺伝子のライフサイクル全体を管理する
You: "Wrap my function as a gene"
AI: → wrap_gene({ gene_name: "my-search", domain: "search.web", fidelity: "Wrapped" })
→ compile_gene({ gene_name: "my-search" })
→ test_gene({ gene_name: "my-search", compliance: true })
→ publish_gene({ gene_name: "my-search", changelog: "Initial release" })
ツール(31)
検索と分析
| ツール | 説明 | 主なパラメーター |
|---|---|---|
search_genes | 名前、ドメイン、説明から Gene エコシステムを検索します | query、domain、fidelity、sort(relevance/newest/popular/fitness)、page、per_page |
get_gene_detail | Gene の詳細情報(表現型、fitness、メタデータ)を取得します | gene_id、content_hash(どちらも Gene を特定します) |
get_arena_rankings | ドメインの Arena ランキングを F(g) fitness 順で取得します | domain、page、per_page |
compare_genes | 2~5 個の Gene の fitness を並べて比較します | gene_ids(配列) |
get_gene_stats | ダウンロード統計(合計、7 日、30 日、90 日)を取得します | gene_id |
get_leaderboard | クリエイターの評判ランキングを取得します | limit |
get_developer_profile | クリエイターの公開プロフィールと評判を取得します | username |
get_gene_reputation | 評判の詳細な内訳(Arena、使用状況、安定性)を取得します | gene_id |
list_gene_versions | 変更履歴を含むバージョン履歴を取得します | owner、gene_name |
suggest_domain | レジストリから一致するドメインを提案します | description |
ローカルワークスペース
| ツール | 説明 | 主なパラメーター |
|---|---|---|
list_local_genes | ローカルワークスペースをスキャンし、インストール済みの Gene を一覧表示します | project_root、domain、fidelity |
list_local_agents | ローカルワークスペースの Agent を一覧表示します | project_root、state |
Gene のライフサイクル
| ツール | 説明 | 主なパラメーター |
|---|---|---|
init_gene | スターターファイルを含む新しい Gene プロジェクトを初期化します | gene_name、fidelity、domain、no_genesis |
scan_genes | 候補となる関数または SKILL.md ファイルをスキャンします | path、skills、skills_path |
wrap_gene | 関数/スキルを Gene としてラップします | gene_name、domain、fidelity、from_skill、from_clawhub |
test_gene | Gene をテストします(スキーマ検証+サンドボックス) | gene_name、verbose、compliance |
compile_gene | Gene を WASM IR にコンパイルします | gene_name、check、wasm_path、lang |
doctor | ローカルの TypeScript→WASM ツールチェーン(esbuild / javy)を確認し、不足しているものを報告します。読み取り専用です。compile_gene が失敗したときに使用します | project_root |
run_gene | ローカルの Gene を実行します | gene_name、input、verbose、no_sandbox、trust_unsigned |
publish_gene | Rotifer Cloud に公開します | gene_name、all、description、changelog、skip_arena、skip_security |
install_gene | Cloud Registry から Gene をインストールします。force を指定すると、置き換えるコピーのスナップショットを作成します | gene_id、project_root、force |
rollback_gene | ローカル Gene の最後の上書きを元に戻します。名前を指定せずに呼び出すと、元に戻せる項目を一覧表示します | gene_name、project_root |
vg_scan | V(g) セキュリティスキャン — Gene/スキルのコード安全性を静的解析します | path、gene_id、all、project_root |
arena_submit | サンドボックスでローカル Gene を測定し、その測定結果を Arena に送信します。スコアは Gene の実行によって生成され、呼び出し元が指定することはありません | gene_name、project_root |
エージェントの構成
| ツール | 説明 | 主なパラメーター |
|---|---|---|
create_agent | 複数の Gene を組み合わせた Agent を作成します | agent_name、gene_ids、composition(Seq/Par/Cond/Try/TryPool)、domain、top、strategy、par_merge |
agent_run | 名前を指定してローカルの Agent を実行します | agent_name、input、verbose、no_sandbox |
認証と分析
| ツール | 説明 | 主なパラメーター |
|---|---|---|
auth_status | ログイン状態を確認します | — |
login | OAuth ログイン(GitHub/GitLab) | provider、endpoint |
logout | 認証情報を消去します | — |
get_mcp_stats | MCP 呼び出しの分析情報 | days |
get_my_reputation | 現在のユーザーの評価 | — |
リソース(7)
MCP リソースを使うと、AI クライアントは Rotifer のデータをコンテキストとして参照できます。
| URI テンプレート | 説明 |
|---|---|
rotifer://genes/{gene_id}/stats | Gene のダウンロード統計 |
rotifer://genes/{gene_id} | Gene の詳細+表現型 |
rotifer://developers/{username} | 作成者のプロフィール+評価 |
rotifer://leaderboard | 評価スコア上位の作成者 |
rotifer://local/genes | ローカルの Gene インベントリ |
rotifer://local/agents | ローカルの Agent レジストリ |
rotifer://version | MCP サーバーのバージョンと更新の利用可否 |
各リソースは、同じ役割のツールが返すものを返します。そのため、宣言したツールセットは両方を対象とします。--tools=evolve を指定すると、rotifer://genes/{gene_id}/stats、
rotifer://developers/{username}、rotifer://leaderboard は一覧から消え、直接読み取ろうとしても拒否されます。
これは、get_gene_stats、
get_developer_profile、get_leaderboard が要求されていないためです。
rotifer://version は常に応答します。これはサーバーが自身について説明するものであり、
機能ではないためです。0.16.0 より前は、ツールセットの指定にかかわらずこれらにアクセスできました。
プロンプト(4)
MCP プロンプトは、一般的なタスク向けにガイド付きワークフローを AI クライアントに提供します。
| プロンプト | 説明 | 主な引数 |
|---|---|---|
rotifer-hello | 対話形式でエージェントを作成 — テンプレートを選んですぐに実行 | template、input |
rotifer-guide | Rotifer Protocol を理解 — 遺伝子、エージェント、Arena、忠実度モデル | — |
rotifer-architect | エージェントを設計 — タスク主導の遺伝子検索と構成計画 | task |
rotifer-challenge | Arena で評価 — 遺伝子を提出し、競合相手と比較 | gene |
AI に次のように尋ねてみてください:「rotifer-hello プロンプトを使ってエージェントを作って」、または 「rotifer-architect を使って、ドキュメントの Q&A 用エージェントを設計して」。
アーキテクチャ
┌─────────────────────────────────────────────────┐
│ AI IDE (Cursor / Claude / Windsurf) │
│ │
│ "Find genes for code formatting" │
│ │ │
│ ▼ │
│ ┌─────────────────────┐ │
│ │ MCP Client │ │
│ │ (stdio transport) │ │
│ └────────┬────────────┘ │
└───────────┼─────────────────────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────────────────┐
│ @rotifer/mcp-server │
│ │
│ 31 Tools 7 Resources 4 Prompts Local Scanner│
│ ┌──────────┐ ┌───────────┐ ┌────────────┐ │
│ │ discover │ │rotifer:// │ │ ./genes/ │ │
│ │ lifecycle│ │genes/stats│ │ phenotype │ │
│ │ agents │ │developers │ │ agents │ │
│ │ auth │ │leaderboard│ └────────────┘ │
│ └────┬─────┘ └─────┬─────┘ │ │
└───────┼──────────────┼────────────────┼─────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────┐
│ Rotifer Cloud API Local File System │
│ (Supabase) (genes/, .rotifer/) │
└─────────────────────────────────────────────────┘
設定
デフォルトでは設定不要で、公開 Rotifer Cloud API に接続します。
カスタムエンドポイントを使用するには、~/.rotifer/cloud.json を作成します。
{
"endpoint": "https://your-supabase-instance.supabase.co",
"anonKey": "your-anon-key"
}
または、環境変数を設定します。
ROTIFER_CLOUD_ENDPOINT=https://your-instance.supabase.co
ROTIFER_CLOUD_ANON_KEY=your-anon-key
公開するツールの選択
デフォルトでは、31 個すべてのツールを利用できます。ROTIFER_MCP_TOOLS を使うと、
特定のインテグレーションで実際に必要なものだけに絞り込めます。これは、代理で公開やログインを
できないようにすべきアシスタントにサーバーを接続する場合に便利です。
npx @rotifer/mcp-server --tools=evolve # the rank-and-swap preset (10 tools)
npx @rotifer/mcp-server --tools=readonly # nothing that writes (14 tools)
ROTIFER_MCP_TOOLS=search_genes,get_gene_detail # an exact list
ROTIFER_MCP_TOOLS=evolve,vg_scan # a preset plus one
プリセットでも以下のツールでもない名前は無視され、stderr に通知が出ます。該当する名前が 一つもない場合、サーバーは起動せず、プリセットを一覧表示してコード 2 で終了します。ツールが まったくない状態で実行されることはありません。
フラグと変数は同じ動作をし、両方が設定されている場合はフラグが優先されます。呼び出し元に よって利用できるものが異なるため、両方用意されています。シェルユーザーは変数を設定し、 マニフェストからこのサーバーを起動するものはコマンドラインだけを制御します。
宣言したセットは、tools/list だけでなく、すべての機能を対象とします。セット外のツールは
名前で呼び出しても拒否されます。除外されたツールと重複するリソースは一覧から
除かれ、読み取りも拒否されます。また、以下のサンドボックス回避手段も、別途宣言されない限り
無効になります。回避する方法が残された制限は、制限とは言えません。
セット外のツールは listTools から除外され、呼び出されても拒否されます。拒否のメッセージには、
ツールを再び追加する方法と、同等の処理を行う rotifer CLI コマンドがある場合はそのコマンドが
示されます。つまり、絞り込まれたセットは行き止まりではなく、意図的に確認して解除できる境界です。
未設定のままにしておけば、何も変わりません。
サンドボックスの無効化
agent_run と run_gene には no_sandbox があり、run_gene にはさらに
trust_unsigned があります。これらのオプションを使うと、Gene コードが WASM サンドボックス内
ではなく、通常の Node.js として実行されます。絞り込まれたツールセット内のツールからでも
サンドボックスを無効にできるなら、ツールセットを絞る意味はほとんどありません。そのため、
起動時に宣言されていない限り、これらのオプションは拒否されます。
npx @rotifer/mcp-server --allow=no-sandbox
npx @rotifer/mcp-server --allow=no-sandbox,trust-unsigned
ROTIFER_MCP_ALLOW=no-sandbox # same thing
機能が取り除かれるわけではありません。オプションの設定が「どの呼び出し元でも可能」から 「誰かが起動時に宣言した場合に可能」に変わるだけなので、いつでも自分で設定できます。
rotifer agent run <name> --no-sandbox
rotifer run <gene> --trust-unsigned
変わるのは、アシスタントが独断でサンドボックスを無効化できなくなる点です。
no_sandbox: false の指定は安全な動作を求めるものであり、拒否されることはありません。
インストールの取り消し
以前は、force を指定した install_gene で Gene を上書きすると、元に戻す方法がありませんでした。
現在は、まず古いコピーを <genes>/.snapshots/ に移動し、rollback_gene で復元できます。
rollback_gene {} → what can be rolled back
rollback_gene { gene_name: "formatter" } → restore the copy that was replaced
Gene ごとにスナップショットは一つです。同じ Gene を次に上書きするとスナップショットは置き換えられ、
ロールバックすると消費されます。これは最後のアップグレードを取り消す機能であり、履歴を保持する
ものではありません。上流に存在するバージョンは、すでに list_gene_versions で確認できます。
サーバーを最新の状態に保つ
サーバーは以前から、起動時に1日1回、stderr に1行出力して、古いバージョンを使っていることを知らせていました。self-update はそのもう一方です。
rotifer-mcp-server self-update # check, verify, install
rotifer-mcp-server self-update --rollback # back to the version it replaced
npm が来歴アテステーションを提供していないバージョンへの更新は拒否されます。このパッケージは CI から --provenance を付けて公開されるため、アテステーションのないビルドはこのプロジェクトがリリースしたものではありません。
知っておくべき点が2つあります。
- 実行中のサーバーは、古いコードのままサービスを続けます。 インストールによってディスク上のファイルは置き換わりますが、エディターがすでに接続しているプロセスは置き換わりません。更新後に MCP ホストを再起動してください。
npx経由で起動している場合、更新するものはありません。 バージョンを固定していないnpx @rotifer/mcp-serverは実行のたびに最新の公開バージョンを解決するため、self-updateはその旨を伝えて終了し、グローバルにインストールしてnpx経由のバージョンを上書きすることはありません。
これはユーザーが実行するコマンドであり、モデルが呼び出せるツールではありません。更新にはグローバルインストールが必要であり、ツールでは結果を正確に報告することさえできません。モデルは「更新しました」と伝えても、実際には古いプロセスからサービスが提供され続けるためです。
HTTP 経由でサービスを提供する
通常、サーバーは起動した MCP ホストと stdio 経由で通信します。代わりに Streamable HTTP 経由で公開するには、次のようにします。
rotifer-mcp-server serve # http://127.0.0.1:3000/mcp
rotifer-mcp-server serve --port 8080
rotifer-mcp-server serve --host 0.0.0.0 # reachable from other machines
--hostを指定しない場合、127.0.0.1で待ち受けます。 HTTP エンドポイントには認証がなく、ツールはサインイン済みの Rotifer アカウントで動作するため、デフォルトでは他のマシンからアクセスできません。ループバック以外のアドレスを--hostに指定すると、サーバーは起動時に stderr でそのことを通知します。以前のバージョンでは、すべてのインターフェースで待ち受けていました。- リクエスト本文の上限は 256 KiB です。 これを超えるリクエストは、解析される前に JSON-RPC エラーを伴う
413で応答されます。MCP メッセージはこのサイズよりはるかに小さいため、この上限は、SDK のデフォルト値(4 MiB)について説明しているGHSA-46jr-4wx8-v453の脆弱性を防ぐために設けられています。この脆弱性では、単一のリクエストでサーバーのメモリを使い果たす可能性があります。 GET /healthは、稼働確認用に{"status":"ok","transport":"streamable-http"}を返します。
使用状況の報告
サインインしている場合、各ツール呼び出しの使用状況レコードが Rotifer Cloud に送信されます。記録されるのは、ツール名、処理対象となった Gene の ID、成功したかどうか、所要時間、ユーザー ID です。get_mcp_stats はこの情報を読み取ります。Gene の実行も呼び出しとして記録され、プロトコルの改ざん防止メトリクスはこの記録に依存します。
渡した引数、ファイルの内容、環境変数、ローカル設定は送信されません。
サインアウト中は、使用状況レコードは送信されません。 ただし、どちらの場合も1つのリクエストが送信されます。Gene をインストールすると、その Gene の公開インストールカウンターが増加します。送信されるのは Gene の ID だけで、ユーザー ID、セッション、引数は含まれません。Arena はこの情報でインストール数を集計します。0.15.1 まではこれを止める仕組みがなく、このセクションには「サインアウト中は何も報告されない」と記載されていましたが、インストールについては正しくありませんでした。
現在は ROTIFER_TELEMETRY=0 で次の3つすべてを停止できます。
ROTIFER_TELEMETRY=0 # also accepts false / off
この3つとは、logMcpCall、logGeneInvocation、および installGene 内の track_download 呼び出しです。いずれも src/cloud.ts にあり、全体を読むのに時間はかかりません。ここに挙げたもの以外に、何かを独自に報告する処理はありません。このサーバーのその他すべての外部への呼び出しは、クエリ、公開、サインインなど、呼び出したツールが処理を行うためのものです。それに加えて、WASM アーティファクトのダウンロードと、1日1回の npm バージョン確認があります。
要件
- Node.js >= 20
CLI と連携する
この MCP サーバーは、Rotifer CLI と組み合わせると最も効果を発揮します。CLI はローカルランタイム(WASM サンドボックス、Arena エンジン、IR コンパイラー)を提供し、MCP サーバーはそれらすべてを AI アシスタントに公開します。
npm install -g @rotifer/playground
rotifer init my-agent && cd my-agent
rotifer hello --template quality-advisor # your first Agent workspace in seconds
リンク
- Rotifer Protocol — メインサイト
- MCP Setup Guide — 手順に沿ったセットアップガイド
- Gene Marketplace — Genes の閲覧と検索
- CLI Playground — ローカルで Genes を構築、テスト
- Protocol Specification — 正式な仕様書
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。