1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AIに日本語の名寄せをさせると毎回答えが変わるので、決まったルールで答えるMCPサーバーを作った

1
Posted at

困っていたこと

ClaudeやChatGPTに顧客名簿を渡して「重複をまとめて」と頼むと、だいたいうまくいきます。ただ、こういうことが起きます。

  • 同じ名簿でも、実行するたびに直し方が少しずつ違う
  • 「さくら商事」と「さくら商会」を同じ会社としてまとめてしまう
  • 「R6.3.15」を何年として読んだのか、あとから確かめられない

業務で使うなら、同じ入力には同じ答えを返してほしいし、なぜ同じと判断したかも知りたいところです。

作ったもの

nexus-ja-data は、AIエージェントから呼べる日本語ビジネスデータ用のMCPサーバーです。

道具 できること
ja_normalize_value 会社名・氏名・フリガナ・電話・郵便番号・メール・住所・日付を、種類に合わせてそろえる
ja_same_company 2つの会社名が同じ会社かを判定((株)/㈱/株式会社/半角カナの違いを吸収)
ja_detect_column_types 表の列が何の項目かを推定
ja_clean_and_dedupe_records 名簿を正規化して重複をまとめる。似ている別会社はまとめずに要確認として返す

特徴:

  • Python標準ライブラリだけで動きます(pip install 不要)
  • 外部通信をしません。名簿がパソコンの外に出ません
  • MITライセンス

使い方(Claude Desktop)

リポジトリを置いて、claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "nexus-ja-data": {
      "command": "python",
      "args": ["C:\\path\\to\\nexus-ja-data\\run_server.py"]
    }
  }
}

あとは「この名簿の重複をnexus-ja-dataでまとめて」と頼むだけです。

例

ja_same_company("(株)さくら印刷", "株式会社 さくら印刷")
→ {"same": true, "a_normalized": "株式会社さくら印刷", "similarity": 1.0}

似ているけれど違う会社は、まとめずに返します。

ja_same_company("さくら商事", "さくら商会")
→ {"same": false, ...}

テスト

python -m unittest discover -s tests で11件のテストが動きます。正規化の期待値、名寄せ、MCPの通し会話(初期化→一覧→呼び出し→エラー処理)、壊れた入力でも止まらないこと、外部通信のコードがないことを確認しています。

画面で使いたい人向け

AIを通さずに、Excel・CSVを画面で名寄せしたい人向けに、同じルールのデスクトップ版「名寄せ赤ペン」も作りました(有料)。
https://nexus-tools.booth.pm/items/9051166

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?