e-Tax API を呼び出す MCP サーバーを作ってみた(STEP 1)

はじめに

国税庁が提供する e-Tax API を、AI アシスタントの Claude から直接呼び出せたら便利だと思いませんか?

国税電子申告・納税システムAPI | 【e-Tax】国税電子申告・納税システム(イータックス)
国税電子申告・納税システム(e-Tax)の概要や手続の流れ、法令等に規定する事項など、e-Taxを利用して申告、納税及び申請・届出等を行うために必要な情報やe-Taxについてのお知らせを掲載しています。

今回は、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 受付システムにログイン後、ブラウザの開発者ツールから取得できます。


引継ぎ情報の取得方法

  1. e-Tax 受付システムに利用者識別番号、パスワードでログインし、マイページを開く
  2. F12 キーで開発者ツール(DevTools)を開く
  3. Console タブで以下を実行する
document.getElementById("passInfo").value
  1. 表示された文字列をコピーする

取得できる値はスペース区切りの固定長文字列で、セッション識別子・処理区分・利用者納税識別番号などが含まれています。認証情報ですので、取り扱いには十分ご注意ください。


セットアップ

必要環境

  • 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_tokenget_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)を使った自動ログインを実装し、ブラウザ操作なしで完全自動化します。引き続きご覧ください!

タイトルとURLをコピーしました