Mimiq について
Mimiqは、コーディングエージェントやプロダクトチーム向けのウェブフロー検証用MCPサーバーです。シミュレートされたユーザーが実際のブラウザーで操作し、問題や停止箇所をスクリーンショット付きで報告します。プルリクエストのプレビューも検査できます。
主な機能
- 01自然言語でのテストタスク指定
- 02実際のブラウザーでのユーザー操作シミュレーション
- 03スクリーンショット付きの段階的な問題報告
- 04ブラウザーエラーと失敗リクエストの記録
- 05GitHub Actionによるプルリクエストのプレビュー検査
活用シーン
- 01リリース前の登録・決済フロー確認
- 02新しいビルドで利用者のつまずきが解消したか検証
- 03プルリクエストのプレビューでユーザーフローをテスト
MCP 対応
Mimiq MCPサーバーは、フローのテストと保存済みレポートの表示に使う `mimiq.test_flow` と `mimiq.show_report` をクライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mimiqai.com/mcpclaude mcp add --transport http victorgulchenko-mimiq https://mcp.mimiqai.com/mcp{"mcpServers":{"victorgulchenko-mimiq":{"type":"http","url":"https://mcp.mimiqai.com/mcp"}}}Cursor で開く{"servers":{"victorgulchenko-mimiq":{"type":"http","url":"https://mcp.mimiqai.com/mcp"}}}VS Code で開く{"mcpServers":{"victorgulchenko-mimiq":{"type":"http","url":"https://mcp.mimiqai.com/mcp"}}}{"mcpServers":{"victorgulchenko-mimiq":{"serverUrl":"https://mcp.mimiqai.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
9| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| session_id | string | はい | |
| compare_session_id | string | いいえ |
詳細
Mimiq MCP Server
エージェントが構築したアプリを、リリース前にAI エージェントがユーザーのように使ってテストします。
Mimiq にプレビューまたはステージングの URL と、「サインアップする」「チェックアウトに進む」などの簡単なタスクを指定します。テストスクリプトは不要です。各エージェントはユーザーの一人として、独自の実ブラウザーでアプリを開き、クリックや入力を行い、フォームに記入します(認証コードを受け取る専用の受信トレイもあります)。レポートには、問題があった箇所、何も起きなかった箇所、各エージェントがどこで行き詰まったり諦めたりしたか、その理由が手順とスクリーンショット付きで表示されます。問題を修正したら、新しいビルドでもう一度実行してください。
ツール
| ツール | 機能 |
|---|---|
mimiq.test_flow | AI エージェントが実ブラウザーでプレビュー、ステージング、または本番環境の URL 上のフローをたどり、問題があった箇所、何も起きなかった箇所、行き詰まった箇所を、スクリーンショット付きで手順ごとに報告します。エージェント 1 つにつき 5 クレジットです。 |
mimiq.show_report | 保存済みのレポートを再表示します。アカウント情報を読み取るだけで、クレジットは消費しません。 |
エージェントに直接依頼するか、構築したばかりのアプリをテストさせましょう。
「3 つのエージェントにこのプレビューでサインアップさせて、どこで行き詰まるか教えて」
「マージする前に、プレビューで新しいチェックアウトを確認して」
「ステージングで、子どものスクールシューズを買う保護者として Mimiq を実行して、見つかった問題を修正して」
「修正したビルドでもう一度実行して」
エージェントが見つける問題と制限事項
- 画面上のエラー、何も起きないボタンやリンク、正しい入力を拒否するフォーム、行き止まり、文言が原因でエージェントが待機したり、諦めたり、誤った操作をしたりする手順。
- ブラウザーが記録した内容:JavaScript エラー、失敗したリクエスト、4xx/5xx のリクエスト、3 秒を超えるリクエスト。それぞれが発生した手順も示します。
- 各問題について、問題に遭遇したエージェント、該当する手順、スクリーンショット、修正案を確認できます。修正案は、その問題に遭遇したエージェントの数が多い順に表示されます。
- エージェントはシミュレーション上のユーザーです。問題を素早く見つけますが、実際にコンバージョンする人の数を予測するものではありません。
- 実際のカードで支払いはできません。また、CAPTCHA やボット対策によって動作が止まることがあります。ボット対策のないプレビューまたはステージングの URL を使用してください。
すべてのプルリクエストで実行
Mimiq preview check GitHub Action は、Vercel、Netlify、Cloudflare Pages の各プレビューでエージェントを実行し、見つかった問題をプルリクエストに 1 つのコメントとして残します。他の CI からも同じエンドポイントを呼び出せます。HTTP 経由のプレーンな JSON-RPC です。
curl -s https://mcp.mimiqai.com/mcp \
-H "Content-Type: application/json" -H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $MIMIQ_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"mimiq.test_flow","arguments":{"url":"'"$PREVIEW_URL"'","goal":"Sign up and start using it","count":3}}}'
セットアップ
Claude Code
claude mcp add --transport http mimiq https://mcp.mimiqai.com/mcp --header "Authorization: Bearer $MIMIQ_API_KEY"
または、プロジェクトルートの .mcp.json に記述します(Claude Code は環境変数 ${MIMIQ_API_KEY} から値を読み取るため、キーをリポジトリに含めずに済みます)。
{
"mcpServers": {
"mimiq": {
"type": "http",
"url": "https://mcp.mimiqai.com/mcp",
"headers": { "Authorization": "Bearer ${MIMIQ_API_KEY}" }
}
}
}
ヘッダーを省略すると、無料お試し版を利用できます。
すべての変更に組み込む
プロジェクトの CLAUDE.md または AGENTS.md に次の行を追加すると、エージェントが顧客向けの変更を完了とする前にチェックします。
## Before calling a user-facing change done
After changing anything a user goes through (signup, onboarding, checkout,
settings, a new feature), run mimiq.test_flow on the preview URL with the task
a user would try. Fix what the agents hit, then run it again. Ask me before
using more than 25 credits.
Codex
~/.codex/config.toml(またはプロジェクト内の .codex/config.toml)に記述します。
[mcp_servers.mimiq]
url = "https://mcp.mimiqai.com/mcp"
bearer_token_env_var = "MIMIQ_API_KEY"
Cursor
~/.cursor/mcp.json または .cursor/mcp.json に記述します(キーを含むファイルはコミットしないでください)。
{
"mcpServers": {
"mimiq": {
"url": "https://mcp.mimiqai.com/mcp",
"headers": { "Authorization": "Bearer mq_sk_..." }
}
}
}
VS Code(GitHub Copilot)
.vscode/mcp.json に記述します。VS Code がキーを一度だけ尋ね、保存します。
{
"inputs": [{ "type": "promptString", "id": "mimiq-key", "description": "Mimiq API key", "password": true }],
"servers": {
"mimiq": {
"type": "http",
"url": "https://mcp.mimiqai.com/mcp",
"headers": { "Authorization": "Bearer ${input:mimiq-key}" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json に記述します。
{
"mcpServers": {
"mimiq": {
"serverUrl": "https://mcp.mimiqai.com/mcp",
"headers": { "Authorization": "Bearer mq_sk_..." }
}
}
}
Claude Desktop
mcp-remote を使い、Claude Desktop の設定に記述します。
{
"mcpServers": {
"mimiq": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.mimiqai.com/mcp", "--header", "Authorization:${MIMIQ_AUTH}"],
"env": { "MIMIQ_AUTH": "Bearer mq_sk_..." }
}
}
}
キーと無料トライアル
- キーなしの場合、各エージェントは無料テストを1回実行できます。1つのフローで最大3エージェントまで利用でき、1日の無料利用枠が残っている場合に限ります。それ以上の規模にはキーが必要です。ツールは、利用枠が消費される前にその旨を知らせます。
- キーの取得: www.mimiqai.com/sign-up で無料アカウントを作成します(50クレジットが含まれています)。Settings を開き、「Use Mimiq from your coding agent」を見つけて、「Create a key」を選択します。キーは
mq_sk_で始まり、一度だけ表示されます。 - キーの送信: リクエストごとに
Authorization: Bearer mq_sk_...として送信します(X-API-Key: mq_sk_...も使用できます)。上記のセットアップ用スニペットでは、この方法で送信します。 - クレジット: フロー内のエージェント1体につき5クレジットを使用します。www.mimiqai.com/app/usage で追加購入できます。1回限りのStarterは120クレジットで$9、プランは月額$19からです。
サインインが必要なページと保護されたプレビュー
test_flow に access を渡すと、Vercel Deployment Protection(vercel_bypass)、ブラウザーのパスワード入力プロンプト(basic_auth)、またはサインインが必要なページ(テストアカウント)の背後にあるプレビューをテストできます。エージェントはプレースホルダーを入力し、実際の値はブラウザー内でのみ設定され、テストとは別に保管されます。実行が終了すると削除され、結果やレポートに表示されることもありません。アクセスには有料クレジットが必要です。
レポートリンク
キーがある場合、実行結果はすべてアカウントに保存され、結果の最後にMimiqアプリ内のリンク(/app/t/...)が表示されます。概要にリンクを記載すると、人間が完全なレポート、エージェントの手順、スクリーンショットを開けるようになります。レポートはアプリから共有するまで非公開です。
キーがない場合、実行結果は実行したエージェントのみが利用でき、アプリで開くことはできません。代わりに、キーの取得方法が結果に表示されます。
実行結果に含まれる内容
- 各エージェントの
journey_steps:各ステップで行ったこと、いた場所、発言内容。 - 各エージェントが停止した場所とその理由:完了した、途中まで進んだ、または諦めた。
- エージェントが遭遇した問題。遭遇したエージェント数の多い順に、該当するステップとともに表示されます。
browser_caught:ブラウザーがサイト上で記録した内容。各項目に遭遇したエージェント数の多い順にグループ化して表示されます。JavaScript エラー、失敗したリクエストまたは4xx/5xxで応答したリクエスト(SupabaseやFirebaseなど、ホストされたバックエンドへのリクエストを含む)、および3秒を超えるリクエストが含まれます。概要カードにも一覧が表示されます。counts、簡潔なsummary_card、および(キーがある場合は)report_url。
エージェントの対象者
デフォルトでは、Mimiqはページの内容から、そのアプリの対象者に合ったエージェントを作成します。audience に平易な言葉で対象者を指定できます(例:「フリーランスのデザイナー」、「子どもの通学用の靴を買う保護者」)。対象者の選定に誤りがない限り、実行はすぐに開始されます(選ばれたエージェントの5体に1体を超えて、指定した対象者に該当しない場合)。その場合、結果は status: "audience_review" になります。警告を表示してから、review_id、confirm_audience: true、audience_fit_acknowledged: true を指定して続行するか、review_id と audience_correction を指定して再募集してください。アプリでは、独自の顧客からエージェントを作成することもできます(CSVを使用します。アップロード前に名前、メールアドレス、電話番号が削除されます)。
Localhost
Mimiqには公開URLが必要です。ローカルの開発サーバーを使う場合は、cloudflared(無料、アカウント不要)で一時的なトンネルを開き、そのURLを渡してください。トンネルが動作している間、ページは公開されるため、エージェントはトンネルを開く前にユーザーへ知らせる必要があります。
cloudflared tunnel --url http://localhost:3000 > /tmp/mimiq_tunnel.log 2>&1 &
sleep 5; grep -o 'https://[^ |]*trycloudflare.com' /tmp/mimiq_tunnel.log
エラー
すべてのエラーには、code、平文のmessage、request_idが含まれます。クレジットとキーに関するエラーには、how_to_get_a_key(手順、ヘッダー、.mcp.json)も含まれます。
| コード | 意味 | 対処方法 |
|---|---|---|
INSUFFICIENT_CREDITS | reasonには、free_try_used、free_flow_too_big、free_flows_used_today、network_monthly_limit、または(キーを使用している場合は)out_of_creditsのいずれかが示されます。 | キーを取得する、エージェントの数を減らす、またはクレジットを追加購入してください。 |
UNAUTHORIZED | キーが受け付けられませんでした(invalid_key)。 | mq_sk_で始まっていること、および設定に引き続き表示されていることを確認してください。 |
INVALID_INPUT | 必須フィールドが不足しているか、MimiqがアクセスできないURL(localhost、プライベートアドレス)です。 | 入力を修正してください。localhostの場合は、トンネルを使用してください。 |
SIM_FAILED | 実行に失敗しました。たとえば、ページが読み込まれなかった場合です。失敗した実行のクレジットは返金されます。 | 通常のブラウザーでURLが読み込めることを確認してから、もう一度呼び出してください。 |
SIM_TIMEOUT | 実行時間がtimeout_secondsを超えました。Mimiq側では処理が続行されます。 | キーを使用している場合は、後でレポートリンクを開いてください。または、タイムアウトを長くしてもう一度呼び出してください。 |
RATE_LIMITED | 1分間に同じネットワークからの呼び出しが多すぎます。 | 1分待ってください。 |
セルフホスト
独自のMimiq APIを使用する場合:
cd mcp-hosted
MIMIQ_API_URL=http://127.0.0.1:8000/api node src/server.js
エージェントの接続先をhttp://127.0.0.1:8787/mcpに設定してください。
| 変数 | デフォルト | 設定内容 |
|---|---|---|
MIMIQ_API_URL | http://127.0.0.1:8000/api | Mimiq API |
MIMIQ_APP_URL | https://mimiqai.com | レポートリンクの参照先 |
MIMIQ_MCP_PUBLIC_URL | https://mcp.mimiqai.com/mcp | セットアップヘルプに表示されるURL |
PORT / HOST | 8787 / 127.0.0.1 | このサーバーのリッスン先です。プロキシの背後で使用する場合は、127.0.0.1を維持し、プロキシでX-Real-IPを設定してください(レート制限と無料お試しのために、呼び出し元のネットワークを特定します)。 |
RATE_MAX_CALLS | 10 | ネットワークごとの1分間のツール呼び出し数 |
EMIC_API_KEY | なし | submit_agent_feedbackを有効にします(設定されていない場合は非表示)。 |
POSTHOG_API_KEY | なし | 利用状況イベント |
開発
ChatGPTアカウントのリンクとインラインレポート
このプラグインは、S256 PKCEを使用したOAuthアカウントリンクに対応しています。既存のAPIキーを使用するクライアントとキーなしのクライアントも引き続き動作します。検証済みのChatGPT呼び出しをテストするには、OAuthでリンクされたアカウントが必要です。クレジットと所有権の管理は引き続きバックエンドが担います。テスト完了後にmimiq.show_reportを使用すると、保存されたレポートをMCP Appsホストに表示できます。アカウントのレポートを読み取るだけで、クレジットは消費しません。
OAuthのディスカバリーは/.well-known/oauth-protected-resourceと
/.well-known/oauth-authorization-serverで利用できます。認可、登録、
トークン、取り消しの各ルートは/oauth/配下にあります。OPENAI_APPS_CHALLENGEが設定されている場合、その値は変更せずに
/.well-known/openai-apps-challengeで返されます。設定されていない場合、このルートは404を返します。
ChatGPTとの連携を有効にする前に、deploy/plugin.env.exampleと
deploy/openai-mtls.nginx.conf.exampleを確認してください。ChatGPTからの呼び出し元を確実に識別するには、既存のプロキシで証明書を検証し、Nodeをループバックにバインドする必要があります。クライアント名とUser-Agentのヒントだけでは、IDを確立できません。レポートHTMLはリポジトリに含まれ、単独で動作するため、配信に実行時依存関係は追加されません。
OAuth HTTPテストには、fastapiとuvicornをインストールしたPythonが必要です。デフォルトのPythonにこれらがない場合は、MIMIQ_TEST_PYTHONを設定してください。ウィジェットのDOMテストでは、ルートでnpm ciを実行した後、親ウェブアプリの開発用jsdom依存関係を使用します。これらの開発用依存関係がない場合、該当するテストは明示的にスキップされます。Mimiqの完全なチェックアウトでは、npm run widget:buildで埋め込みフォントとスクリプトを再ビルドし、npm run widget:checkで差分を検出し、npm run widget:verify -- --screenshotsでブラウザーのチェックを実行して、3つのレポート例をキャプチャします。ブラウザーによるキャプチャには、ルートの開発用依存関係と、正常に動作するローカルのPlaywrightブラウザーが必要です。
コマンド
npm test # unit tests, the tools against a mocked API
npm run vendor # rebuild src/vendor/app-logic.js from the app (src/mimiq/lib)
MIMIQ_API_URL=http://127.0.0.1:8000/api MIMIQ_E2E_API_KEY=mq_sk_... npm run e2e # compare_copy end to end, 3 people
./deploy.sh --dry # what a deploy would sync (see deploy.sh)
src/vendor/app-logic.jsはアプリのcompare.ts、model.ts、readout.ts、names.tsから生成されます。これらと一致しなくなると、テストは失敗します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。