Dataset Join & Merge について
Dataset Join & Mergeは、共通キーでJSON行リストを結合するリモートMCPサーバーです。7種類の結合方法に加え、キー照合やフィールド競合の設定に対応し、一致・不一致の概要を返します。
主な機能
- 01unionを含む7種類の結合
- 02大文字小文字を無視または厳密に照合
- 03異なる名前や複合キーに対応
- 04コピーする右側フィールドの選択
- 05重複キーの処理方法を設定
- 06照合状態と概要の報告
活用シーン
- 01請求データでリード情報を補完
- 02CRMに未登録のリードを特定
- 03キー名の異なるリストを統合
MCP 対応
リモートHTTPエンドポイントを通じて、MCPクライアントに `list_capabilities` と `join_rows` を提供します。クライアントは2つのJSON行リスト、キー項目、結合方法を送り、結合結果と照合概要を受け取ります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://dataset-join-merge.nerolabs.workers.dev/mcpclaude mcp add --transport http nero-engine-dataset-join-merge https://dataset-join-merge.nerolabs.workers.dev/mcp{"mcpServers":{"nero-engine-dataset-join-merge":{"type":"http","url":"https://dataset-join-merge.nerolabs.workers.dev/mcp"}}}Cursor で開く{"servers":{"nero-engine-dataset-join-merge":{"type":"http","url":"https://dataset-join-merge.nerolabs.workers.dev/mcp"}}}VS Code で開く{"mcpServers":{"nero-engine-dataset-join-merge":{"type":"http","url":"https://dataset-join-merge.nerolabs.workers.dev/mcp"}}}{"mcpServers":{"nero-engine-dataset-join-merge":{"serverUrl":"https://dataset-join-merge.nerolabs.workers.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
2このツールにパラメーターはありません。
詳細
データセットの結合とマージ(リモートMCPサーバー)
SQLのJOINやスプレッドシートのVLOOKUPのように、共通のキーを使って2つのJSON行リストを1回のツール呼び出しで結合できます。 メインのリストと検索用のリストを渡し、キーを指定して結合タイプを選ぶと、結合済みのリストと、各側で何行が一致し、残りが一致しなかった理由の正確な内訳が返されます。
AIエージェント向けに構築されています。インストールもAPIキーも登録も不要です。URLで接続して呼び出すだけです。
https://dataset-join-merge.nerolabs.workers.dev/mcp
早期アクセス期間中は無料でご利用いただけます。
機能
- 7種類の結合タイプ。
leftは左側の全行を保持し、一致する右側のフィールドを追加します(VLOOKUPやデータの補完に使うケースで、デフォルトです)。innerは重複部分のみを保持します。rightは右側の全行を保持します。fullは両側のすべてを保持します。leftAntiは右側に一致する行がない左側の行を返します(「この見込み客のうち、まだCRMに登録されていないのは誰ですか?」)。rightAntiはその逆です。unionはキーを必要とせず、両方のリストを連結します。 - 実際のデータに合った方法で照合するキー。 デフォルトでは、大文字と小文字を区別せず、前後および連続するスペースを無視して照合します。また、
123は"123"と一致します。そのため、スクレイパーから取得した" [email protected]"が、請求データのエクスポートにある"[email protected]"と一致します。厳密に照合するには、keyMatchingをexactに設定してください。 - 左右で異なるキー名。 左側は
email、右側はcontact_emailのように指定できます。複合キーにも対応しています(例:["firstName", "lastName"])。 - 結合時に取り込む内容を制御。 右側から選んだフィールドだけをコピーできます。また、両側に同じ名前のフィールドがある場合の処理も選択できます。両方を保持する(右側のフィールド名は
right_statusになります)、左側の値を保持する、または右側の値で上書きする方法があります。 - キーが重複する場合のSQLまたはVLOOKUPの動作。
multipleMatches: "all"は一致するペアごとに1行を返します。"first"は最初に一致した右側の行のみを使用するため、各左側の行は1回だけ出現します。
一致しなかった内容も明確に示します。各行に _joinStatus(matched、left_only、right_only)と _matchCount が付与され、概要には一致率に加え、キーが欠けている行、右側の重複キー、どの行にも存在しないキーのフィールド(通常は入力ミス)に関する警告が表示されます。
ツール
| ツール | 機能 |
|---|---|
list_capabilities | すべての結合タイプ、照合モード、競合の処理方法、重複キーの処理モード、各行に追加されるフィールド、行数の上限を一覧表示します。データは処理しません。 |
join_rows | 指定したキーのフィールドで leftRows と rightRows を結合し、結合済みの行と概要を返します。 |
接続
Claude Code
claude mcp add --transport http dataset-join-merge https://dataset-join-merge.nerolabs.workers.dev/mcp
Claude Desktop / claude.ai: Settings、Connectors、Add custom connector の順に選択し、上記のURLを貼り付けます。
Cursor、Windsurf、VS Code、その他のMCPクライアント
{
"mcpServers": {
"dataset-join-merge": {
"url": "https://dataset-join-merge.nerolabs.workers.dev/mcp"
}
}
}
例
左側にはスクレイピングで取得した4件の見込み客、右側には3件の請求記録があります。メールアドレスは大文字小文字とスペースの違いがあり、左右でキーの名前も異なります。
{
"leftRows": [
{"email": "[email protected] ", "name": "Ana Silva", "status": "lead"},
{"email": "[email protected]", "name": "Ben Okafor", "status": "lead"},
{"email": "[email protected]", "name": "Cara Lind", "status": "lead"},
{"email": "[email protected]", "name": "Dev Patel", "status": "lead"}
],
"rightRows": [
{"contact_email": "[email protected]", "plan": "Pro", "mrr": 49, "status": "active"},
{"contact_email": "[email protected] ", "plan": "Starter", "mrr": 19, "status": "trial"},
{"contact_email": "[email protected]", "plan": "Enterprise", "mrr": 499, "status": "active"}
],
"leftKeyFields": ["email"],
"rightKeyFields": ["contact_email"],
"joinType": "left"
}
すべての見込み客が返され、顧客2件にはプラン情報が追加され、status フィールドは左右両方とも保持されます。
{
"rows": [
{"email": "[email protected] ", "name": "Ana Silva", "status": "lead", "plan": "Pro", "mrr": 49, "right_status": "active", "_joinStatus": "matched", "_matchCount": 1},
{"email": "[email protected]", "name": "Ben Okafor", "status": "lead", "plan": "Starter", "mrr": 19, "right_status": "trial", "_joinStatus": "matched", "_matchCount": 1},
{"email": "[email protected]", "name": "Cara Lind", "status": "lead", "_joinStatus": "left_only", "_matchCount": 0},
{"email": "[email protected]", "name": "Dev Patel", "status": "lead", "_joinStatus": "left_only", "_matchCount": 0}
],
"summary": {
"leftRecordCount": 4,
"rightRecordCount": 3,
"joinType": "left",
"keyMatching": "normalized",
"multipleMatches": "all",
"leftKeyFields": ["email"],
"rightKeyFields": ["contact_email"],
"counts": {"matchedRows": 2, "passthroughRows": 2, "leftRowsMatched": 2, "rightRowsMatched": 2, "leftRowsUnmatched": 2, "rightRowsUnmatched": 1},
"leftMatchRate": 0.5,
"rightMatchRate": 0.667,
"outputRowCount": 4,
"warnings": []
}
}
joinType を leftAnti に変更すると、請求記録がない見込み客のCaraとDevだけが返されます。
制限
- 1回あたり最大500行で、
leftRowsとrightRowsの合計行数です。より大きなリストで left、inner、または leftAnti 結合を行う場合は、leftRowsを複数回に分け、各回で同じrightRowsを送信してください。 - 1回あたりの出力は最大500行です。入力行数を超える行が返される可能性があるのは、多対多結合(同じキーが両側で重複し、
multipleMatchesがallに設定されている場合)だけです。そのような呼び出しは、予測される行数と変更方法を示して拒否されます。途中で切り詰められることはありません。multipleMatches: "first"なら常に上限内に収まります。
上限を超えた場合は、何も通知せずに失敗するのではなく、明確なメッセージが返されます。
プライバシー
行データはメモリ上で処理され、保存されることはありません。使用されたツールを確認できるよう、各呼び出しではツール名、行数、成功したかどうか、アプリが報告するクライアント名、国、一方向ハッシュ化された呼び出し元IDが記録されます。データ、引数、IPアドレスは、そのログに保存されません。
こちらも利用できます
同じエンジンが Apify Store で Dataset Join & Merge としても稼働しています。両側の入力として Apify データセット、CSV、Excel、JSON ファイル、URL で指定した Google Sheets を読み込み、片側あたり最大 100,000 行を処理できます。結果は CSV または Excel としてエクスポートしたり、実行のたびにデータが蓄積される名前付きデータセットに追加したり、Webhook に POST したりできます。
Nero Labs が開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。