samecontact について
samecontactは、小規模事業者や営業チーム向けに、連絡先CSV内の重複候補を探すMCPサーバー兼ローカルCLIです。メールアドレス、電話番号、氏名、会社を照合し、確度と根拠を示しますが、レコードは統合しません。
主な機能
- 01重複および類似する連絡先の検出
- 02メールアドレス・電話番号・氏名・会社の照合
- 03一致根拠と確度レベルの提示
- 04確認用のマーク付きCSVコピーの出力
活用シーン
- 01CRMやメーリングリストの重複項目の確認
- 02インポート前のユニーク顧客数の把握
MCP 対応
重複グループの検出とCSVの列・行数の検査を行う読み取り専用ツールを提供します。連絡先の氏名をMCPクライアントに返しますが、レコードは統合しません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
2掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | 連絡先 CSV ファイルのパス |
| limit | null|integer | いいえ | 返すグループ数と確認対象ペア数の上限。デフォルトは 100。0 の場合は件数のみを返します |
| columns | object | いいえ | 検出に失敗した場合の各フィールド(email、phone、name、first、last、company、city)の列名 |
詳細
samecontact:CSV ファイル内の重複する顧客と連絡先を見つけます
CRM のエクスポート、顧客リスト、メーリングリストを整理するために、名前、メールアドレス、電話番号の表記が異なっていても、同一人物の行を見つけます。中小企業、営業チーム、マーケティング担当者向けです。
多くの顧客リストには、同一人物が何度も登録されています。「Robert Jones」と「Bob Jones」、あるいは Ana.Silva+news@ と ana.silva@ のような例です。重複は郵送コストを無駄にし、顧客を困らせ、数値を実際より多く見せます。一方、スプレッドシートで単純に重複を削除しても、その大半を見落としてしまいます。samecontact はメールアドレス、電話番号、名前、会社を比較し、判定の確度と理由を示します。重複を自動で統合することはありません。MCP サーバーであり、アカウントも API キーもネットワークアクセスも不要な単一の Go バイナリです。
エージェントに頼めること
- 「顧客リスト内の重複を見つけてください。」
- 「実際のユニーク顧客数はいくつですか?」
- 「この HubSpot または Salesforce のエクスポートを、インポートする前に整理してください。」
- 「このメーリングリスト内で、同一人物にあたる連絡先はどれですか?」
インストール
MCP サーバーと、Claude に使うタイミングを伝えるスキルを追加する Claude Code プラグインとしてインストールできます。サーバーの実行に npx を使うため、Node が必要です。
claude plugin marketplace add GillMacedo/samecontact
claude plugin install samecontact@samecontact-marketplace
その他の MCP クライアントの場合:
{
"mcpServers": {
"samecontact": {
"command": "npx",
"args": ["-y", "samecontact", "serve"]
}
}
}
npm によるインストールは macOS と Linux に対応しています。Windows では、現時点では go install を使用してください。
または、Go 1.27 以降でバイナリをビルドします。
go install github.com/GillMacedo/samecontact@latest
使い方
examples/ にあるサンプルファイルで試してみてください。ファイル内の人物はすべて架空です。
$ go run . find examples/contacts.csv
SAME PERSON (2)
rows 3, 4 Ana Silva / Silva, Ana [same email; same name and company]
rows 5, 6 Robert Jones / Bob Jones [same phone and matching name]
LIKELY: check these (1)
rows 7, 8 Maria Costa [same name and company]
REVIEW: a person should decide (2)
rows 11, 12 John Smith / John Smith [same name, different companies]
rows 13, 14 Lena Fischer / Omar Haddad [same email, different names: may be a shared address]
SKIPPED row 16: no name, email or phone
13 contacts, 3 duplicate groups, 3 extra rows, 2 pairs to review
インストール済みのコピーを使う場合は、samecontact find contacts.csv を実行します。--out marked.csv を追加すると、dup_group と dup_level 列を加えたコピーを書き出せるので、スプレッドシートで並べ替えられます。元のファイルが変更されることはありません。機械可読形式の出力には --json を追加します。
判定方法
| レベル | 根拠 |
|---|---|
| 同一人物 | 名前が一致する同じメールアドレス、名前が一致する同じ電話番号、または完全に同一の行 |
| 可能性が高い | 同じ名前と会社、同じ名前と勤務先のメールドメイン、または片方の名前が欠けている同じ電話番号 |
| 要確認 | 異なる名前で使われているメールアドレスまたは電話番号、名前だけが同じ、または同じ会社にいる類似した名前 |
ニックネーム、イニシャル、アクセント記号、名前の順序、軽微な誤字、電話番号の形式、Gmail のドットや +tags に対応しています。info@ のようなアドレスや Gmail などのフリーメールドメインは、同一人物である根拠として扱いません。
MCP ツール
| ツール | 機能 |
|---|---|
contacts_find_duplicates | グループと確認が必要なペアを返します。大きなファイルには上限を設定できます |
contacts_inspect_csv | 行の内容を表示せず、検出した列と行数を示します |
どちらも読み取り専用です。contacts_find_duplicates はファイル内の名前を MCP クライアントに返すため、使用する AI モデルにその名前が渡ります。CLI ではすべての処理がご使用のマシン上で行われます。
よくある質問
CSVから重複する連絡先を削除するにはどうすればよいですか? samecontact find contacts.csv --out marked.csv を実行し、グループを確認してから、CRMやスプレッドシートで行を削除または統合してください。このツールは何も削除しません。
HubSpot、Salesforce、Mailchimpのエクスポートデータで使えますか? CSVを読み取り、一般的な列名を認識します。また、--columns email=Mail,name=Who のように列名を指定することもできます。各製品の実際のエクスポートデータでは、まだテストされていません。
顧客データはアップロードされますか? このツールにネットワーク関連のコードはありません。MCP経由の場合、結果はクライアントが使用するAIモデルに送られます。
制限事項
- 重複の候補を見つけるツールです。統合する前に、担当者が確認してください。
- 名前の照合は西洋式の名前と一般的な愛称を対象としているため、ほかの命名体系では一部の表記違いを見逃すことがあります。
- 電話番号は末尾10桁で比較するため、異なる国の2つの番号が一致することがあります。
- 読み取れるのはCSVのみで、ファイルサイズの上限は50 MBです。
- これまでテストに使用したのは架空のデータであり、実際のエクスポートデータではありません。お使いのデータで問題が発生した場合は、データではなく列ヘッダーを添えてissueを作成してください。
コントリビューション
個人の方も、AIエージェントと協働する方も、コントリビューションを歓迎します。CONTRIBUTING.mdをご覧ください。最初に取り組むのに適したissueは次のとおりです。
- さらに多くのCRMや言語の列名を追加する
- 英語以外のものを含む、さらに多くの愛称を追加する
- XLSXリーダーを追加する
- グループごとに1行にまとめた統合案を提示する
mergeコマンドを追加する - プラグインアイコンを追加する
プルリクエストの流れ
- PRを作成します。 リポジトリをフォークし、ブランチで作業して、変更を1つに絞ってください。ユーザーにとって何が変わるかを示すタイトルを付けてください。これは変更履歴の行として使われます。
feat:はAddedに、fix:はFixedに分類されます。 - 自動チェック。 コードの変更にはテストが必要で、
make testが成功しなければなりません。30行を超える変更には、リンクされたオープンissue(Closes #<number>)が必要です。また、PRの変更行数は最大800行です。不足がある場合は、修正が必要な箇所をコメントでお知らせします。 - レビュー。 Claudeが各PRを自動的にレビューします。コードのPRにはセキュリティレビューも行われ、サンドボックスでテストされます。その後、レビュー担当がPRをマージするか、変更を依頼します。CI、エージェントの設定、npmまたはPythonの依存関係、ベンダーコード、ビルドファイルを変更するPRは、この方法ではマージできません。その旨をコメントでお知らせします。セキュリティレビューで承認されなかった変更も同様です。
- リリース。 ユーザーがインストールする内容に影響する変更がマージされると、約2時間以内に新しいバージョンがリリースされ、GitHub Releaseも公開されます。プロジェクトにnpmパッケージがある場合は、そちらもリリースされます。ドキュメントとCIの変更は次回のリリースまで保留されます。
AIに関する開示
このプロジェクトは主にClaude Codeで生成され、メンテナーによるレビューを受けています。
私について
私はGiulliano Macedoです。GoTech Solutionsで開発者向けツールを開発しています。近況の確認や連絡はこちらからどうぞ。
- GitHub:GillMacedo
- LinkedIn:giulliano
- X:@giumacedo
samecontactでリストを整理できたら、スターを付けていただけると、ほかの方にも見つけてもらいやすくなります。
MITライセンスです。
Giulliano Macedo、GoTech Solutionsが開発 · LinkedIn · X
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。