私が開発している Python ライブラリ Utsuho を、AI エージェントから直接呼び出せるようにする MCP(Model Context Protocol)に対応させました。
Utsuho (うつほ) は、日本語テキストの表記揺れを決定的な変換ルールで正規化する Python ライブラリです。
半角・全角の変換や、ひらがな・カタカナの変換といった文字単位の正規化に特化しており、汎用的な Unicode 正規化で起こり得る不要な文字変換を避けられます。
MCPとは
MCP は、アプリケーションの機能を AI エージェントから呼び出せるようにする仕組み です。
例えば、ファイル内のカタカナをすべてひらがなに変換したり、入力された住所表記を正規化したりといった処理を、Claude Desktop などの AI エージェントからツールとして呼び出して実行できます。
これらの処理は、AI に任せると曖昧さや揺らぎが入りやすいですが、専用のツールを使うことで 決定論的で再現性のある結果 を得ることができます。
つまり、MCP とは、AI がすべてを処理するのではなく、正確性が求められる専門的な処理を、外部の「信頼できるツール」に委ねられるようにする仕組みです。
何ができるのか
今回のリリースでは、Utsuho の日本語文字変換機能を MCP ツールとして利用できるようになりました。
例えば、Claude Desktop から、
- 半角カタカナを全角カタカナに変換する
- ひらがなをカタカナに変換する
といった処理を、揺らぎなく、常に同じ結果で実行できます。
現在、次のツールを MCP で公開しています。
-
half_to_full: 半角から全角への変換 -
full_to_half: 全角から半角への変換 -
hiragana_to_katakana: ひらがなからカタカナへの変換 -
katakana_to_hiragana: カタカナからひらがなへの変換
いずれも変換したい文字列を受け取り、変換後の文字列を返します。
半角↔︎全角変換のオプション
半角↔︎全角変換では、変換対象とする字種を細かくオプションで制御できます。
オプションで変換対象とするかしないかを指定可能な字種は、次の通りです。
-
punctuation: 句読点 -
corner_brucket: 鉤括弧 -
conjunction_mark: 中黒 -
length_mark: 長音記号 -
space: スペース -
ascii_symbol: ASCII 記号 -
ascii_digit: ASCII 数字 -
ascii_alphabet: ASCII アルファベット
また、全角から半角への変換では、次の字種も指定できます。
-
wave_dash: 波線
半角文字のチルダには、対応する全角のチルダが存在しますが、全角の波線を代替とすることがあります。Utsuho は、日本語処理のよくある問題にも対応しています。
MCP 拡張のインストール方法
Utsuho を MCP で利用する場合は、MCP 拡張を指定してインストールします。
pip install "Utsuho[mcp]"
起動方法
次のコマンドで MCP サーバとして Utsuho を起動できます。
utsuho-mcp
Claude Desktop で使用する場合、カスタム拡張に Python 仮想環境などにある utsuho-mcp スクリプトのフルパスを指定してください。
なお、現在は stdio ベースで動作します。
Utsuhoの特徴
Utsuho の作者である私は、長年、日本の大手企業の顧客情報の正規化や名寄せに供される製品の管理と保守に携わってきました。その経歴を活かし、実務で利用し易い変換ツールとして、Utsuho を開発しました。
Utsuho の開発では、「決定的(deterministic)であること」を重視しています。これは、実務で必要な説明責任を果たせることを意味します。
また、日本語の文字変換は、Unicode で定義されている文字の意味や役割を正確に捉え、別の文字に置き換えないことも重要です。Utsuho では、文字の意味や役割に基づいて正確に変換すること(他の文字に変えないこと)も重視しています。
現在、Utsuho では、MCP の他に CLI でも機能を提供しています。
- GitHub: https://github.com/juno-rmks/utsuho
- PyPI: https://pypi.org/project/Utsuho/
- Read the Docs: https://utsuho.readthedocs.io/