GenClass について
GenClassは、ローカルで動作するWebアプリの競合状態を調べる、コーディングエージェント向けMCPサーバーです。リクエストとレスポンスの挙動を記録し、順序を変えて探索・再生することで修正を検証します。
主な機能
- 01クリック、リクエスト、レスポンス、エラーを記録
- 02古い書き込みと重複送信を検出
- 03レスポンス順序を変えた挙動を探索
- 04問題を再生して修正を検証
- 05Playwright回帰テストを生成
- 06エンドポイントの遅延とエラー率を確認
活用シーン
- 01古いレスポンスが検索結果を上書きする問題を調査
- 02ハンドラー変更の前後で競合状態を再現
- 03記録した問題から回帰テストを作成
- 04異なるレスポンス順序でエンドポイントの挙動を比較
MCP 対応
GenClassはコーディングエージェント向けMCPサーバーとして動作し、問題の確認、レスポンス順序の探索、バグの再生、テスト生成のツールを提供します。`@genclass/runtime`のagent linkを通じて開発ページに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
9掲載時のツール一覧 · 今日に更新
このツールにパラメーターはありません。
詳細
@genclass/mcp
コーディングエージェントが競合状態を確認し、再現して、修正を証明できます。
Claude Code やその他のコーディングエージェント向けの MCP サーバーです。お使いのマシンで実行中のアプリのページに接続し
(@genclass/runtime のエージェントリンクを介して)、エージェントに次の情報を提供します。
- 何が、どの順番で起きたか。 すべてのクリック、リクエスト、レスポンス、レスポンスが返された順序、各レスポンスがアプリの状態に書き込んだ内容、そしてそれにつながったクリックやリクエストとともに、捕捉されなかったエラーを確認できます。
- 例外が発生しないバグ。 新しいデータを古いレスポンスで上書きしたケース(典型的な古い検索結果や編集内容の消失)、2 回のクリックで同じ注文が 2 回送信されたケース、デバイス上のモデル独自の検出結果を確認できます。
- ユーザーが見つける前に検出される競合状態。
genclass_exploreは手順を再実行し、ネットワークの応答順序を変え(必要であれば遅くもして)、レスポンスが順番どおりに返った実行と異なる結果を報告します。 - 証明。
genclass_replayはバグを引き起こした正確な順序を再現し、修正前には再現され、修正後には再現されないことを確認します。また、genclass_explainはバグがある間は失敗する Playwright テストを作成します。
すべての処理はお使いのマシン上で行われます。依存関係はありません。サーバーは無料です。この一連の処理を任せたい開発者向けに、GenClass は Enterprise でサービスとして提供しています。MCP サーバー、コレクター、ダッシュボードは、GenClass がホストするか、お客様のネットワーク内でホストできます(genclass.dev/enterprise)。
インストール
クライアントを選んでください。各ブロックではこのリリースを指定しているため、クライアントは正確にこのバージョンを起動します。
npx -y @genclass/[email protected] config <client> を実行すると同じ設定行が表示され、genclass_setup は実行先のクライアントに対応するブロックを表示します。
Claude Code
プラグインとしてインストールします(サーバー、各プロンプトに新しい検出結果を追加するプロンプトフック、Claude に使用タイミングを伝えるスキルが含まれます)。
/plugin marketplace add genclass-dev/GenClass-lib
/plugin install genclass@genclass
または、サーバー単体でインストールします(--scope project はプロジェクトの全員向けに .mcp.json を書き込み、--scope user はすべてのプロジェクト向けに書き込みます)。
claude mcp add --scope project genclass -- npx -y @genclass/[email protected]
# or: npx -y @genclass/[email protected] init --hook (.mcp.json, plus the prompt hook in .claude/settings.json)
Claude Desktop
「Settings」、「Developer」、「Edit Config」の順に選択します(macOS では ~/Library/Application Support/Claude/claude_desktop_config.json、Windows では %APPDATA%\Claude\claude_desktop_config.json)。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
Cursor
または cursor://anysphere.cursor-deeplink/mcp/install?name=genclass&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBnZW5jbGFzcy9tY3BAMC4yLjAiXX0%3D
または、プロジェクト内の .cursor/mcp.json に設定します(すべてのプロジェクト向けには ~/.cursor/mcp.json を使用します)。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
VS Code
code --add-mcp '{"name":"genclass","command":"npx","args":["-y","@genclass/[email protected]"]}'
または、ワークスペースのルートにある .mcp.json に設定します(移植可能な形式です。.vscode/mcp.json では同じエントリを servers の下に記述します)。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
Codex CLI
codex mcp add genclass -- npx -y @genclass/[email protected]
または、~/.codex/config.toml(信頼済みプロジェクトでは .codex/config.toml)に設定します。初回起動時にパッケージをダウンロードするため、デフォルトの 10 秒より長いタイムアウトを設定してください。
[mcp_servers.genclass]
command = "npx"
args = ["-y", "@genclass/[email protected]"]
startup_timeout_sec = 30
Gemini CLI
gemini mcp add genclass npx -- -y @genclass/[email protected] # -s user: for all projects
または、プロジェクト内の .gemini/settings.json に設定します(すべてのプロジェクト向けには ~/.gemini/settings.json を使用します)。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
Windsurf(Devin Desktop)
~/.codeium/windsurf/mcp_config.json(Windsurf)、~/.config/devin/mcp_config.json(Devin Desktop の Cascade エージェント。Windows では %APPDATA%\devin\mcp_config.json)に設定します。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
Devin CLI および Devin Desktop の Devin Local エージェントの場合:
devin mcp add -s user genclass -- npx -y @genclass/[email protected]
Cline
cline mcp add genclass --yes -- npx -y @genclass/[email protected]
または、「MCP Servers」、「Configure」、「Configure MCP Servers」の順に選択します(~/.cline/data/settings/cline_mcp_settings.json)。
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
Goose
goose://extension?cmd=npx&arg=-y&arg=%40genclass%2Fmcp%400.2.0&id=genclass&name=genclass&description=Find%20race%20conditions%20by%20reordering%20responses%2C%20replay%20one%2C%20prove%20the%20fix(開いてインストール)、または goose configure(Add Extension、Command-line Extension、コマンド npx -y @genclass/[email protected])、または ~/.config/goose/config.yaml:
extensions:
genclass:
type: stdio
name: genclass
enabled: true
cmd: npx
args: ["-y", "@genclass/[email protected]"]
env_keys: []
envs: {}
timeout: 300
Zed
~/.config/zed/settings.json(プロジェクト内では .zed/settings.json)、または Settings、AI、MCP Servers、Add Server:
{
"context_servers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
JetBrains IDEs
AI Assistant:Settings、Tools、AI Assistant、Model Context Protocol (MCP)、Add の順に選択し、この JSON を入力します。Junie:プロジェクト内の .junie/mcp/mcp.json(すべてのプロジェクトに適用する場合は ~/.junie/mcp/mcp.json)に、同じ JSON を指定します:
{
"mcpServers": {
"genclass": {
"command": "npx",
"args": [
"-y",
"@genclass/[email protected]"
]
}
}
}
OpenCode
プロジェクト内の opencode.json(すべてのプロジェクトに適用する場合は ~/.config/opencode/opencode.json)、または opencode mcp add:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"genclass": {
"type": "local",
"command": [
"npx",
"-y",
"@genclass/[email protected]"
],
"enabled": true
}
}
}
その他の MCP クライアントの場合:stdio サーバー、コマンド npx、引数 -y @genclass/[email protected]。環境変数は不要です。
次に、アプリの開発ビルドを一度接続します。エージェントリンクには最新のランタイム系列、@genclass/runtime
0.3.0-beta.1 以降が必要です:npm install @genclass/runtime@beta(単に npm install @genclass/runtime を実行すると、エージェントエントリのない古い 0.2.x、npm の
latest がインストールされます):
import { GenClass } from "@genclass/runtime";
import { connectAgent } from "@genclass/runtime/agent";
const rt = GenClass.init();
if (import.meta.env.DEV) connectAgent(rt); // Next.js: process.env.NODE_ENV === "development"
開発サーバーのページを読み込み、エージェントに genclass_status を問い合わせます。エージェントには genclass_setup を問い合わせることもできます。これは package.json を読み取り、使用しているフレームワークの設定行を表示します。
エージェントがこれを使って行うこと
you: the search results are sometimes for an older query
agent: genclass_findings → f1 [stale-write] /search: the response to GET /api/search "?q=reac"
overwrote "search.results" after a newer GET /api/search had already written it
genclass_explain f1 → steps, delivery order, a replay, a regression test
genclass_replay arm f1 → (loads the page, types) → result: REPRODUCED
(fixes the handler to keep only the latest answer, adds the test)
genclass_replay arm f1 → result: not reproduced
genclass_explore start {slow_ms: 600} → 8 runs → report: no race
実際のページをヘッドレス Chromium でテストしたところ(このパッケージのエンドツーエンドチェック)、開発者の高速なバックエンドでは一度も表示されなかった競合を、応答順序を入れ替えた6回の実行のうち5回で検出しました。生成されたテストは不具合のあるページでは失敗し、修正済みのページでは成功しました。また、修正済みのページを explore で調べても何も報告されませんでした。詳細はdocs/runtime/AGENT.mdをご覧ください。
ツール
| ツール | |
|---|---|
genclass_status | 接続中のページ、検出結果の件数、explore と replay の状態 |
genclass_findings | 優先順位付けされ、重複が排除された検出結果:競合、古い書き込み、エラー、重複リクエスト、モデル検出、ビジュアルチェック |
genclass_explain | 検出結果を1件、因果関係の順に説明。記録された手順、リプレイ、Playwright 回帰テストを表示 |
genclass_explore | start / report / stop:応答順序に依存する処理を検出 |
genclass_replay | arm / result:検出結果を正確に再現 |
genclass_analytics | エンドポイントごとのレイテンシ、エラー率、リクエスト数、学習済みの関係とフロー。本番の数値は GenClass ダッシュボードから取得 |
genclass_setup | 使用しているフレームワークに追加する行と、実行中のクライアントの設定行 |
genclass_scan | {url, phone?, hosted?}:ヘッドレス Chromium で23項目の測定済みビジュアルチェックを使って、任意のページ(開発サーバー、または所有していないサイト)を監査します。スコア、各問題の要素・セレクター・推奨 CSS 修正、および JSON レポートを出力します。npx @genclass/runtime@beta scan --json --local(またはプロジェクト独自のランタイム)を実行します。Playwright の Chromium(npx playwright install chromium)が必要です。または、genclass.dev のページチェックには hosted: true を指定します(公開ページのみ) |
genclass_clear | 記録された実行結果と検出結果を消去 |
問い合わせる前に新しい検出結果を通知
- Channels(Claude Code のリサーチプレビュー):
claude --dangerously-load-development-channels server:genclassを使って Claude Code を起動すると、新しい検出結果が発生時にセッションへ届きます(notifications/claude/channel)。 - Prompt hook(Claude Code プラグインの一部):
npx -y @genclass/[email protected] init --hookを実行すると、.claude/settings.jsonにUserPromptSubmitフックが追加されます。以降の各プロンプトには、前回から変化した検出結果が含まれます。
環境
| 変数 | デフォルト | |
|---|---|---|
GENCLASS_AGENT_PORT | 47357 | ブリッジのポート(その後、ページで connectAgent(rt, { url }) が必要です) |
GENCLASS_STATE_DIR | .genclass/agent | セッション間で調査結果を保持する場所です。none にするとメモリ内に保持します |
GENCLASS_DASHBOARD | お使いのダッシュボードの非公開リンクです。genclass_analytics の production 用です(sample は公開サンプルを読み込みます) | |
GENCLASS_REPORT | GENCLASS_DASHBOARD が設定されている場合は on、またはダッシュボードのリンクかシークレットです。このサーバーのループログをダッシュボードの Closed-loop development ビューにミラーリングします(各調査結果、証拠が読み取られた各回、実行が開始された各リプレイとその判定、作成された各回帰テスト、各調査レポート、各クリア)。これにより、すべての問題の経過(発見、再現、修正の証明、クローズ、または再調査)を件数とともに表示し、ログを一覧表示します。ID、種類、ページパス、判定、件数、時刻のみを送信し、ページのテキストは送りません。設定しない限り無効です(AGENT.md セクション 4.5) | |
GENCLASS_AGENT_ORIGINS | このマシンのオリジンに加えて許可する、正確なページオリジンです。例:http://192.168.1.20:5173(その後、ページで connectAgent(rt, { anyHost: true }) が必要です) | |
GENCLASS_TOKEN_DIR | ~/.genclass | フックやその他のセッション用の API トークン(モード 0600)をブリッジが保存する場所です |
セキュリティ
ブリッジは 127.0.0.1 のみでリッスンし、Host ヘッダーを確認します。ページが通信できるのは、お使いのマシン(localhost、127.0.0.1、*.localhost)または GENCLASS_AGENT_ORIGINS に指定したオリジン(*.test または LAN 上の開発用ホスト)からのみです。訪問した公開ウェブサイト、ルーターページ、キャプティブポータルが調査結果を仕込むことはできず、ページが追加できるのは自身の実行分だけです。
エージェント API はブラウザーからのアクセスを拒否し、トークンが必要なのはお使いのユーザーだけです。ページが送信するものはすべて検証され、上限が適用され、不可視文字が除去されてから、指示ではなく引用データとしてエージェントに表示されます。プライバシーに記載された例外を除き、情報がお使いのマシンから外部に送信されることはありません。AGENT.md のセクション 6 を参照してください。
プライバシー
サーバーは何も収集せず、GenClass を含む第三者に何も送信しません。調査結果はお使いのマシン上の .genclass/agent/(サーバーの作業ディレクトリ内。そこでサーバーを起動するクライアントの場合はプロジェクト内。Claude Desktop など、そこで起動しないクライアントの場合は GENCLASS_STATE_DIR を設定してください)に保存されます。このディレクトリはサーバーによって gitignore されます。また、ブリッジのメモリにも保持され、ブリッジのトークンは ~/.genclass に保存されます。マシン外に送信される唯一のリクエストは genclass_analytics {source: "production"} です。GENCLASS_DASHBOARD に非公開リンクを設定すると、お使いの GenClass ダッシュボードを読み込みます。genclass_scan はエージェントが指定したページ(つまり、そのページ自身のトラフィック)をローカルブラウザーで読み込みます。hosted: true の場合に限り、URL が genclass.dev のページチェックに送信されます。また、プロジェクトに scan を含む @genclass/runtime がない場合は、npx が npm からダウンロードします。GENCLASS_REPORT を設定すると(デフォルトでは無効)、サーバーはループログも小さなバッチ単位でそのダッシュボードにミラーリングします。送信されるのは各調査結果の ID、種類、ページパス、証拠が読み取られた時刻、実行が開始された各リプレイとその判定、回帰テストが作成された時刻、各調査レポート(比較したページ読み込み数、検出した競合)、各クリアです。これにより、ダッシュボードの Closed-loop development ビューですべての問題の経過(発見、再現、修正の証明、クローズ、または再調査)を表示し、エージェントが行ったことを一覧表示します。タイトル、証拠の行、スナップショット、ページのテキストは一切送信されず、送信内容が判断に使われることもありません。アプリ内のランタイムには、別途公開されている診断情報があります(PRIVACY.md)。これは GenClass.init({ telemetry: false }) で無効にできます。エージェントのリンクは診断情報に含まれません。
ライセンス
Apache-2.0
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。