Rowsmith test data について
Rowsmith test data は、スキーマから CSV、JSON、SQL のテスト用データを生成する MCP サーバーです。同じリクエスト、seed、ジェネレーター版ならバイト単位で同じ出力になり、識別子には予約済みまたは無効な範囲を使います。
主な機能
- 01スキーマからテストデータを生成
- 02CSV、JSON、SQL に出力
- 03固定 seed で出力を再現
- 04意図的に無効なテスト値を作成
- 05参照付きの関連テーブルを生成
- 06実際の決済が発生しないサンドボックス
活用シーン
- 01自動テスト用に安定した注文データを作成
- 02データベーステスト用の関連レコードを構築
- 03無効な入力へのソフトウェアの反応を検証
- 04資金移動のないサンドボックスで決済フローをテスト
MCP 対応
MCP サーバーはデータ生成、列タイプの参照、無効値の生成、利用可能な場合の決済サンドボックスツールをクライアントに提供します。公開 Rowsmith API の薄いクライアントで、固定 seed とジェネレーター版により出力を再現できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| rows | integer | いいえ | 行数。1~500(デフォルトは100) |
| seed | integer | いいえ | シード。同じジェネレーターバージョンでは、同じスキーマとシードから同一の出力が生成されます(デフォルトは1) |
| chaos | object | いいえ | エラー処理のテスト用に意図的に発生させる異常動作 |
| chaos.fail | string | いいえ | 障害を注入します(例:[email protected]) |
| chaos.attempt | integer | いいえ | ロールカウンター。再試行ごとに増加します |
| chaos.latency_ms | integer | いいえ | |
| chaos.empty_result | boolean | いいえ | |
| table | string | いいえ | SQL出力で使用するテーブル名(デフォルトは data) |
| format | enum | いいえ | 出力形式(デフォルトは csv)csv | json | sql |
| columns | array | はい | テーブルの列。1~50 |
| overwrite | boolean | いいえ | output_path がすでに存在する場合は置き換えます(デフォルトは false) |
| output_path | string | いいえ | データを返す代わりに、このファイルへ書き込みます(約50行を超える場合に使用)。作業ディレクトリ内、または ROWSMITH_OUT_DIR が設定されている場合はそのディレクトリ内である必要があります。'..' のパス要素は使用できません |
詳細
rowsmith-mcp
アップグレードしても変わらないシード付きテストデータです。出力バージョンを固定すれば、Rowsmith はサービスの稼働中、同じリクエストとシードに対して常に同じバイト列を返します。すべてのビルドでゴールデンテストにより検証されています。スキーマから生成する、シードで再現可能なテスト用の偽データです。無料で、キーは不要です。CSV、JSON、SQLに加えて、エージェント向けの MCP サーバーも利用できます。
curl -s https://testdata-api.re-jam620.workers.dev/v1/generate -H 'content-type: application/json' \
-d '{"rows":20,"seed":42,"format":"csv","columns":[{"name":"order_id","type":"sequence","prefix":"ord_","pad":4},{"name":"email","type":"email"},{"name":"total_usd","type":"decimal","min":1,"max":500}]}'
出力の先頭(20行):
order_id,email,total_usd
ord_0001,[email protected],230.25
ord_0002,[email protected],17.04
対応環境:pytest、Playwright、dbt、Postgres
ツールを比較していますか?Rowsmith、Faker、Mockaroo:どれを使うべきか
Rowsmith向けの MCP サーバーです。テーブルスキーマから生成したテスト用の偽データ(CSV、JSON、SQL INSERT)を利用できます。 公開 Rowsmith API のシンクライアントで、無料かつレート制限があります。
クイックスタート(60秒)
- Claude Desktop、Cursor、その他の MCP クライアントに Rowsmith を追加します:
{"mcpServers":{"rowsmith":{"command":"npx","args":["-y","rowsmith-mcp"]}}} - 「固定シードで注文を20件、CSVとして生成して」と尋ねます
- または、APIを直接呼び出します:
Python の標準ライブラリ urllib は、デフォルトの User-Agent を送信すると、API に到達する前に Cloudflare にブロックされます(403、エラーコード 1010)。独自の User-Agent(例:curl -s https://testdata-api.re-jam620.workers.dev/v1/generate -H 'content-type: application/json' \ -d '{"rows":20,"seed":42,"format":"csv","columns":[{"name":"order_id","type":"sequence","prefix":"ord_","pad":4},{"name":"email","type":"email"},{"name":"total_usd","type":"decimal","min":1,"max":500}]}' curl -s 'https://testdata-api.re-jam620.workers.dev/v1/invalid?kind=email&count=5&seed=42' ID=$(curl -s https://testdata-api.re-jam620.workers.dev/v1/sandbox -H 'content-type: application/json' -d '{"seed":42}' | sed -E 's/.*"id":"([^"]+)".*/\1/') curl -s https://testdata-api.re-jam620.workers.dev/v1/sandbox/$ID/charges -H 'content-type: application/json' \ -d '{"amount":1999,"currency":"usd","card":"4242424242424242"}'User-Agent: my-tests/1.0)を設定してください。2026-10-18に実施したテストでは、requests、httpx、aiohttp、Node、curl はデフォルト設定で動作しました。
- 無料でレート制限があります。アカウントも API キーも不要です。
- 上限が高い有料プラン(Pro、Team):https://testdata-api.re-jam620.workers.dev/pricing。無料プランは引き続き利用できます。
- 同じスキーマとシードなら、同じジェネレーターバージョンでバイト単位まで同一の出力が得られます。
- 各値が無効である理由を記載した無効値カタログがあります。
- 支払いを行わない決済サンドボックスを利用できます。サンドボックスとその中のすべてのデータは、作成から1時間後に削除されます。Stripe が公開しているテスト用リストのカード番号のみ受け付け、送信された自由記述は保存しません。
- 公式 MCP Registry に io.github.meiorz/rowsmith として登録されています。
データについて
- 実在する人物のデータを入力として使用せず、実在する人物に由来するレコードもありません。メールアドレス、電話番号、カード番号、SSN形式およびIBAN形式の値には、予約済みまたは無効な範囲のみを使用します。
- 同じスキーマとシードなら、同じジェネレーターバージョン(
x-generator-versionとして送信)でバイト単位まで同一の出力が得られるため、フィクスチャを再現できます。 - スキーマのみを送信してください。実データは絶対に送信しないでください。
ツール
| ツール | 機能 |
|---|---|
generate_test_data | columns(1~50)または schema(JSON Schema オブジェクト、または {openapi, component})、省略可能な rows(1~500)、seed、format(csv、json、sql)、table、output_path、overwrite、chaos。または、1 回の呼び出しで関連テーブルを生成する場合は、代わりに tables を指定します(下記参照) |
list_column_types | サポートされる列の型とそのオプション |
invalid_values | 無効である理由付きの、意図的に無効にしたテストデータ値:kind(email、card、address、unicode、iban、ssn、all)、count、seed、fields、chaos |
sandbox_create(サービスがサンドボックスを提供している場合にのみ表示) | 決済サンドボックスを作成します(テストデータ。作成から 1 時間後に削除されます):省略可能な seed |
sandbox_payments(サービスがサンドボックスを提供している場合にのみ表示) | sandbox_id、action(charge、refund、list、get、reset)、amount、currency、card、charge、reference、limit、fields、chaos |
起動時にサーバーは /pricing.json を 1 回読み込み(タイムアウト 30 秒、プロセス内でキャッシュ)、サービスがそこで /v1/sandbox を提供している場合にのみ、2 つのサンドボックスツールを一覧表示します。このリクエストが失敗すると、サンドボックスツールは非表示のままとなり、サーバーの説明と list_column_types の出力にその理由が示されます。再確認するには再起動してください。tools/list の JSON(名前、タイトル、説明、入力スキーマ)の文字数を 4 で割って測定したツール定義のサイズは、3 ツールで約 1370 トークン(5477 文字)、5 ツールで約 1978 トークン(7910 文字)です。node scripts/tool-tokens.js で測定できます。
約 50 行を超える場合は、output_path を指定してください。サーバーはファイルを書き込み、データをモデルのコンテキストに含める代わりに、概要(行数、バイト数、sha256、ヘッダー行)を返します。ファイルを書き込めるのは書き込みルート内のみです。書き込みルートは、デフォルトではサーバーの作業ディレクトリで、ROWSMITH_OUT_DIR を設定すると変更または範囲を狭められます。.. セグメントを含むパスやルート外のパスは拒否され、既存ファイルを置き換えられるのは overwrite: true の場合のみです。
columns の代わりに、generate_test_data では schema を指定できます。これは、Pydantic(model_json_schema())や Zod のエクスポートなどの JSON Schema オブジェクト(プロパティを持つ object 型)、または {"openapi": <document>, "component": "Order"} の形式の OpenAPI コンポーネントです。サービスはこれを列にマッピングし、マッピングできなかったプロパティ(配列、パターン、その他の未サポート形式)を結果の末尾に示します。推測による補完は行いません。送信前に、サーバーはスキーマから example、examples、default、const、x-* の各キーを削除するため、それらの値がマシンの外部に送信されたり、再現用の curl に含まれたりすることはありません。サービスもこれらを無視します。OpenAPI コンポーネントの場合は、指定されたコンポーネントと、それが参照するスキーマのみが送信されます。マッピングの詳細は https://testdata-api.re-jam620.workers.dev/openapi.json に記載されています。
ツールは一連の流れを形成し、各ツールの説明には次に使うツールが示されています。まず generate_test_data(型のオプションについては list_column_types)、次にコードで拒否する値を生成する invalid_values、続いて一覧表示されている場合は決済フロー用の sandbox_create と sandbox_payments の順です。
generate_test_data のすべての結果には、再現用の行が末尾に付いています。この行には、サービスが使用した seed と、生成器のバージョンを固定した、同じバイト列を再生成するための正確な curl が含まれます。Chaos オプションは含まれません。サービスが稼働している間は固定したバージョンが提供されますが、提供終了したバージョンは 409 を返します。バージョンの出力が後から変更されることはありません。各ビルドでゴールデンテストがバイト列を検証します。再現用の行より上には、データを返す結果の場合、データのバイト列の sha256(サービスの X-Output-SHA256)である Output sha256 <hex> が含まれます。output_path を指定した場合、概要の sha256 行にその値が記載されます。ドリフトを検出できるよう、ゴールデンマニフェストに固定してください(形式:https://testdata-api.re-jam620.workers.dev/llms.txt)。
chaos は、エラー処理をテストするためにサービスを意図的に異常動作させます。指定できるのは fail(例:"[email protected]"。500、503 も指定可能)、latency_ms(最大 3000)、empty_result、attempt です。結果はシードと試行回数によって固定されます。
決済サンドボックスは、偽のカード処理システムです。金銭の移動や決済プロバイダーへの連絡は行いません。Stripe が公開しているテスト用リストのカード番号のみを受け付けます(4242424242424242 は成功します。kind を card にした invalid_values には、決済が拒否される番号とそのコードが一覧表示されます)。また、どのフィールドでも、カード番号のようなその他の番号はすべて拒否します。すべてのオブジェクトには "livemode": false、"sandbox": true、および TEST DATA のマークが付きます。
列の型:uuid、sequence、integer、decimal、boolean、enum、date、datetime、first_name、last_name、full_name、email、phone、test_card、ssn_invalid、iban_invalid、text。
使用方法
{
"mcpServers": {
"rowsmith": {
"command": "npx",
"args": ["-y", "rowsmith-mcp"],
"env": { "ROWSMITH_OUT_DIR": "/path/to/your/project/fixtures" }
}
}
}
ROWSMITH_OUT_DIR は任意です。設定しない場合、ファイルはサーバーの実行ディレクトリ内にのみ書き込めます。特定のフォルダー(プロジェクトのフィクスチャディレクトリなど)を指定するには、この変数を設定してください。
呼び出し例:
{ "rows": 3, "seed": 42, "format": "csv",
"columns": [ { "name": "order_id", "type": "sequence", "prefix": "ord_", "pad": 4 },
{ "name": "email", "type": "email" },
{ "name": "total_usd", "type": "decimal", "min": 1, "max": 500 } ] }
1 回の呼び出しで関連テーブルを生成するには、columns の代わりに tables を渡します(POST /v1/dataset を呼び出します)。列 {"name": "customer_id", "type": "ref", "table": "customers", "column": "id"} は、同じ呼び出し内の先行テーブルで生成された主キーから値を取得するため、キーが一致します。参照はリクエスト内でのみ解決され、何も保存されません。format は sql(CREATE TABLE と INSERT)または json です。テーブルは最大 10 個、合計行数は最大 500 行です。
PostgreSQL と SQLite 3.23 以降で共通する方言で記述されます。CI では、外部キーを有効にした SQLite と PostgreSQL 16 で実行されます。結果には Rows sha256 per table が追加され、1 つのリクエストの SQL 形式と JSON 形式で同じ値になります。また、再現用の curl コマンドではデータセットのバージョンも固定されます。呼び出し例(ツールの引数):
{"seed":42,"format":"sql","tables":[{"name":"customers","rows":3,"columns":[{"name":"id","type":"uuid"},{"name":"email","type":"email"}]},{"name":"orders","rows":5,"columns":[{"name":"id","type":"sequence"},{"name":"customer_id","type":"ref","table":"customers","column":"id"},{"name":"total","type":"decimal","min":5,"max":500}]}]}
GitHub Action:CI でのフィクスチャ
fixtures/action.yml は、/v1/generate を 1 回呼び出してフィクスチャファイルを書き込む複合アクションです。入力:schema(columns 配列または完全なリクエストを含む JSON ファイルのパス)、out(書き込むファイル)、および任意の seed、rows、format(csv、json、sql)。これらを指定すると、ファイル内の値が置き換えられます。200 以外の応答では、サービスのエラーとその next によってステップが失敗します。キャッシュは使用されず、キーも不要です。タグ meiorz/rowsmith-mcp/[email protected] を使用してください(最新版を試す場合は @main)。
name: fixtures
on: [push]
jobs:
fixtures:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: meiorz/rowsmith-mcp/[email protected]
with:
schema: test/fixtures/orders.schema.json
seed: "42"
rows: "200"
format: csv
out: test/fixtures/orders.csv
- run: npm test
test/fixtures/orders.schema.json を使用します:
[{ "name": "order_id", "type": "sequence", "prefix": "ord_", "pad": 4 },
{ "name": "email", "type": "email" },
{ "name": "total_usd", "type": "decimal", "min": 1, "max": 500 }]
同じスキーマとシードを使うと、ジェネレーターのバージョンが同じである限り、実行ごとにバイト単位で同一の出力が得られるため、ファイルの内容は変わりません。ステップの generator-version 出力には、使用したバージョンが記録されます。
各実行は、ランナーのアドレスに対する 1 日あたりの上限にカウントされます。GitHub ホステッドランナーはアドレスを共有するため、他のユーザーの実行によって上限に達する場合があります。
任意の extra-header(v0.2.3 以降。v0.2.2 にはありません)を指定すると、Name: value 形式の印字可能な ASCII 文字で 1 つのリクエストヘッダーを追加できます。デフォルトでは空で、追加のヘッダーは送信されません。
.github/workflows/canary.yml は、1 時間ごとの稼働状況チェックです。固定のカナリアリクエスト(ゴールデンリクエスト。本文のバイト列は以下のとおり)を x-rowsmith-canary: 1 とともに送信し、応答の sha256 が 50db558e2e8c54353ac38a3125deb91642895db302eec334afeec2406537f821 でない場合は失敗します。サービスは、このヘッダーと本文が完全に一致した場合にのみ、呼び出しをカナリアとして扱います。このヘッダーを付けたその他の呼び出しは通常の呼び出しです。このワークフローでは、Python の urllib もデフォルトの User-Agent でプローブします(カナリアヘッダーのない通常の呼び出し)。ジョブを失敗させることなく、結果(ブロックまたは成功)をジョブの概要に書き込みます。
制限と利用規約
1 回の呼び出しにつき最大 500 行、50 列で、呼び出し元ごとに 1 日あたりの制限があります。制限を超えると、ツールは再試行時刻を含むサービスの 429 メッセージを返します。呼び出しは 30 秒後にタイムアウトします。サーバーはキーを保持せず、output_path を渡さない限り何も書き込みません。呼び出し先は https://testdata-api.re-jam620.workers.dev です(ROWSMITH_URL で変更できます)。
MIT ライセンスが適用されるのは、このラッパーのコードのみです。Rowsmith サービスの利用には、その利用規約が適用され、エージェントを実行するユーザーがその規約に拘束されます。
利用規約:https://testdata-api.re-jam620.workers.dev/terms · データに関するお知らせ: https://testdata-api.re-jam620.workers.dev/privacy · 公開者:meiorz · 連絡先:[email protected]
プライバシー、データ、削除に関するリクエストは、[email protected] のみで受け付けます。公開 issue には投稿しないでください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。