はじめに
国税庁が提供する e-Tax API を、AI アシスタントの Claude から直接呼び出せたら便利だと思いませんか?
今回は、Claude Desktop と e-Tax API を繋ぐ MCP (Model Context Protocol) サーバーを Python で実装した話をご紹介します。まずは「とにかく動かす」ことを目標にした STEP 1 として、手動で取得したトークンを使って API を呼び出す(※)ミニマムな実装です。
※認証(ログイン)がAPIでは提供されていないためです。以下、国税局のサイトより。

MCP とは
MCP (Model Context Protocol) は、LLM(大規模言語モデル)に外部のツールや API を呼び出させるためのプロトコルです。Claude Desktop に MCP サーバーを登録することで、Claude との会話の中で「メッセージ一覧を取得して」と依頼するだけで API が実行されます。
仕組み
STEP 1 のアーキテクチャはシンプルです。
ユーザー(ブラウザ)→ 引継ぎ情報を手動取得
↓
Claude Desktop → MCP サーバー(Python)→ e-Tax API
e-Tax の認証には「引継ぎ情報」と呼ばれる動的トークンが必要です。このトークンは e-Tax 受付システムにログイン後、ブラウザの開発者ツールから取得できます。
引継ぎ情報の取得方法
- e-Tax 受付システムに利用者識別番号、パスワードでログインし、マイページを開く
- F12 キーで開発者ツール(DevTools)を開く
- Console タブで以下を実行する
document.getElementById("passInfo").value
- 表示された文字列をコピーする
取得できる値はスペース区切りの固定長文字列で、セッション識別子・処理区分・利用者納税識別番号などが含まれています。認証情報ですので、取り扱いには十分ご注意ください。
セットアップ
必要環境
- Python 3.10 以上
- uv(パッケージ管理ツール)
手順
# リポジトリをクローン(すみません、現時点でprivateです)
git clone <repository-url>
cd e-tax-api
# 依存パッケージをインストール
uv sync
# 環境変数を設定
cp .env.example .env
.env を開き、e-Tax の API キーを設定します。
ETAX_API_KEY=your_api_key_here
Claude Desktop への登録
%APPDATA%\Claude\claude_desktop_config.json に以下を追記します。
{
"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"
]
}
}
}
Claude Desktop を再起動すると、ツールアイコンに set_etax_token と get_message_list が表示されます。
使い方
1. トークンを登録する
Claude に以下のように依頼します。
set_etax_token を使って、この引継ぎ情報を登録してください: <コピーした引継ぎ情報>
2. メッセージ一覧を取得する
e-Tax のメッセージ一覧を取得してください。
これで、Claude が e-Tax API を呼び出してメッセージ一覧を JSON で返してくれます。
実装のポイント
- トークンはサーバープロセスのメモリ上にのみ保持します(ファイルや DB には書き込みません)
- サーバーを再起動するとトークンが消えるため、その都度
set_etax_tokenを再実行する必要があります - 401 エラー時はトークン再取得を促し、503 エラー時は e-Tax の利用可能時間外である旨を案内する、シンプルなエラーハンドリングを実装しています
おわりに
今回の STEP 1 は「手動でトークンを取得して貼り付ける」という手間がありますが、Claude から e-Tax API を呼び出す基盤はできました。
次の STEP 2 では、国税庁提供の送受信モジュール(CLICommunication COM DLL)を使った自動ログインを実装し、ブラウザ操作なしで完全自動化します。引き続きご覧ください!
