はじめに
前回の記事(STEP 1)では、ブラウザの開発者ツールから「引継ぎ情報」を手動でコピーして Claude に渡す方法をご紹介しました。
今回の STEP 2 では、国税庁が提供する 送受信モジュール(CLICommunication COM DLL) を利用して、ログインから引継ぎ情報取得まで自動化しました。Claude に一言お願いするだけで e-Tax API が呼び出せます。
STEP 1 との違い
| STEP 1 | STEP 2 | |
|---|---|---|
| ログイン | ブラウザで手動 | 自動(COM DLL 経由) |
| トークン取得 | DevTools でコピー | 自動取得 |
| 必要な操作 | 毎回コピペ | login_and_set_token を呼ぶだけ |
技術的なポイント:32-bit COM DLL との格闘
今回の最大の難所は、国税庁の送受信モジュールが 32-bit の Windows COM DLL であることです。
通常の 64-bit Python からは直接呼び出せないため、以下の構成を取りました。
Claude Desktop(64-bit Python MCP サーバー)
↓ サブプロセス起動
com_login.py(32-bit Python)
↓ COM 経由
CLICommunication DLL(32-bit)
↓
e-Tax 受付システム
64-bit の MCP サーバーが 32-bit Python をサブプロセスとして起動し、COM 呼び出しの結果(引継ぎ情報)を標準出力で受け取る方式です。また、COM メソッドの PROPERTYPUT / METHOD の区別など低レベルな IDispatch 呼び出しへの対応も必要でした。
必要環境
- OS: Windows のみ(COM DLL のため)
- Python 3.10 以上(64-bit) — MCP サーバー用
- Python 3.12(32-bit) — COM DLL 呼び出し用(別途インストールが必要)
winget install Python.Python.3.12 --architecture x86
- e-Tax デスクトップソフトウェア — Claudeを導入しているPCにインストールする必要があります
セットアップ
# リポジトリをクローン
git clone <repository-url>
cd e-tax-api
# 依存パッケージをインストール
uv sync
# 環境変数を設定
cp .env.example .env
.env に以下を設定します。
ETAX_API_KEY=your_api_key_here # e-Tax API キー
ETAX_USER_ID=your_user_id_here # 利用者識別番号(16桁)
ETAX_PASSWORD=your_password_here # e-Tax ログインパスワード
ETAX_INI_PATH=C:/Program Files (x86)/etax/CLCommunication.ini #e-Tax デスクトップ
ETAX_USER_IDとETAX_PASSWORDは認証情報です。.envを Git にコミットしないでください。
Claude Desktop への登録
%APPDATA%\Claude\claude_desktop_config.json に以下を追記して Claude Desktop を再起動します。
{
"mcpServers": {
"e-tax-api": {
"command": "uv",
"args": [
"run",
"--project",
"C:/Users/kin/dev/e-tax-api",
"python",
"C:/Users/kin/dev/e-tax-api/server.py"
]
}
}
}
ツールアイコンに login_and_set_token が表示されればe設定完了です。

使い方
自動ログイン
Claude に一言依頼するだけです。
e-Tax にログインしてください。
各種情報の取得
ログイン後はそのまま続けて依頼できます。
「e-Tax のメッセージ一覧を取得してください。」
「基本情報を確認したいです」

利用できるツール一覧
| ツール名 | 概要 |
|---|---|
login_and_set_token | 自動ログイン・引継ぎ情報取得(STEP 2 新規) |
get_message_list | メッセージ一覧参照 |
get_message | メッセージ詳細参照 |
get_received_data | 受信データ(申告書 XML)参照 |
get_basic_info | 基本情報参照 |
get_income_tax_info | 所得税に関する事項参照 |
get_corporate_tax_info | 法人税に関する事項参照 |
get_consumption_tax_info | 消費税に関する事項参照 |
| (他多数) | 口座情報・利用者設定など |
エラー時の挙動
ユーザーが困らないよう、エラーメッセージは状況に応じて丁寧に案内します。
| 状況 | 返却メッセージ |
|---|---|
| Windows 以外で実行 | Windows 専用である旨を案内 |
| 環境変数未設定 | 未設定の変数名を明示し .env 設定を促す |
| 32-bit Python が見つからない | インストール方法を案内 |
| ID/パスワード誤り | 誤りがある旨を案内 |
| 通信エラー・タイムアウト | ネットワーク確認を促す |
プロジェクト構成
e-tax-api/
├── server.py # MCP サーバー本体(64-bit Python)
├── com_login.py # COM ログインヘルパー(32-bit Python 用)
├── pyproject.toml # 依存パッケージ定義
└── .env.example # 環境変数テンプレート
おわりに
API仕様書、API定義書、送受信モジュール仕様書、送受信モジュールインターフェース仕様書等、かなり多くのドキュメントを読まないといけませんが、ほぼAIに解析してもらいながら、試行錯誤して実現しました。
設計書を読み込む際も、Claude Codeは複数サブエージェントを立ち上げ、並行で作業をすすめました。(トークン量もえげつなくなっていきましたが(笑))
32-bit COM DLL をサブプロセス経由で呼び出すという少し変わった構成になりましたが、おかげで Claude から e-Tax への自動ログインが実現できました。
