SIMPLE

/ log

freee MCP × Claude Code で会計業務を自動化(初日)

freee公式のMCPサーバーを Claude Code に接続して、請求書のPDF読み取りからfreeeへの売上登録、ファイル名の自動整理までを自動化してみました。スキルの中身も公開しています。

— 請求書の登録からファイル整理まで、AIに丸投げできます

はじめに

freee を使っていて、MCP(Model Context Protocol) に対応した公式サーバーが出ているのを見つけました。

MCP は、Claude のようなAIが外部のサービスと直接やりとりするための仕組みです。これを Claude Code に繋ぐと、会話するだけで freee のデータを取得したり、取引を登録したりできるようになります。

「それなら毎月の請求書処理、自動化できるのでは?」と思い、実際に試してみました。

freee MCP のセットアップ

freee MCP を Claude Code で使うには、MCPサーバーの接続設定と freee の OAuth 認証が必要です。手順の詳細は、記事末尾のリンクからPDF資料をお送りしていますので、そちらをご確認ください。

freee MCP でできること

freee MCP サーバーを Claude Code に接続すると、こんなことができます:

  • 会計データの取得 — 取引先一覧、勘定科目、取引履歴などを取得
  • 取引の登録 — 売上や経費を API 経由で直接登録
  • 請求書の処理 — PDF を読み取って、内容を freee に反映
  • データの検索・集計 — 「先月の売上は?」のような質問にも回答可能

要するに、freee の管理画面でポチポチやっていた作業を、Claude との会話だけで完結できるようになります。

スキルを作って業務を自動化する

ただ MCP を繋いだだけだと、毎回「このPDFを読んで、freee の API で登録して……」と長い指示を書く必要があります。

そこで スキル(Skill) の出番です。

Claude Code のスキルとは、特定のタスクに対する詳細な手順書のようなものです。一度作っておけば、次からは「この請求書をfreeeに登録して」の一言で済みます。

今回作ったのは2つです:

  1. freee-invoice-register — 請求書PDFを読み取り、freee に売上として登録
  2. invoice-organizer — 請求書・領収書のファイル名を自動整理&重複削除

スキル①:freee-invoice-register(請求書をfreeeに登録)

請求書のPDFを渡すだけで、中身を読み取って freee に未決済の売上として登録してくれるスキルです。

処理の流れ

  1. PDF読み取り — 取引先名、発行日、振込期日、明細、税込金額、消費税を抽出
  2. freee データ照合 — 認証確認、取引先検索、勘定科目の取得を並列実行
  3. 確認 — 登録内容をテーブル表示して、ユーザーの承認を待つ
  4. 登録 — freee API に POST して取引を作成

会計データは間違えると面倒なので、必ず確認ステップを挟むようにしています。

スキルの中身

---
name: freee-invoice-register
description: 請求書(PDF)をfreee会計に未決済の売上として登録するスキル。
  ユーザーが「この請求書をfreeeに登録して」「freeeに売上を入れて」
  「請求書をfreeeに反映して」と言ったとき、または請求書PDFを渡してfreeeへの
  登録を依頼されたときに発動する。
---

# freee 請求書登録

請求書PDFを読み取り、freee会計に未決済の収入(売掛金)として登録する。

## 概要

このスキルは請求書PDFを読み取り、必要な会計情報を抽出し、freee の会計APIを通じて
登録する。複数の請求書をまとめて処理することも可能。

## ステップ1:請求書PDFの読み取り

ユーザーが渡したPDFを読み取り、以下の項目を抽出する:

- **取引先名** — 請求先の会社名・個人名(御中/様の行)
- **発行日** — 請求書の発行日
- **振込期日** — 支払期限
- **明細** — 明細行の内容
- **税込金額** — 税込の合計金額
- **消費税** — 消費税額(常に10%)

不明確な項目や欠落している項目がある場合は、登録前にユーザーに確認する。

## ステップ2:freee データの照合

以下を並列で実行する:

1. freee_auth_status — 認証状態を確認
2. freee_get_current_company — company_id を取得
3. 取引先を検索:GET /api/1/partners?company_id={id}&keyword={取引先名}
4. 勘定科目を取得:GET /api/1/account_items?company_id={id} — 売上高の account_item_id を特定

取引先が見つからない場合は、新規作成するかスキップするかユーザーに確認する。

## ステップ3:確認

登録前に、各請求書について以下のサマリーテーブルを表示する:

| 項目 ||
|------|-----|
| 取引先 | {取引先名} |
| 発行日 | {発行日} |
| 期日 | {振込期日} |
| 勘定科目 | 売上高 |
| 税区分 | 課税売上10% |
| 税込金額 | ¥{金額} |
| 消費税 | ¥{消費税額} |
| 摘要 | {明細内容} |

ユーザーの明示的な承認を待ってから次に進む。
会計データは正確でなければならないため、確認なしでの登録は行わない。

## ステップ4:freeeに登録

確認済みの各請求書について、/api/1/deals に POST する:

{
  "company_id": "{company_id}",
  "type": "income",
  "issue_date": "{YYYY-MM-DD}",
  "due_date": "{YYYY-MM-DD}",
  "partner_id": "{partner_id}",
  "details": [
    {
      "account_item_id": "{売上高のID}",
      "tax_code": 129,
      "amount": "{税込金額}",
      "vat": "{消費税額}",
      "description": "{明細の内容}"
    }
  ]
}

定数:
- tax_code:常に 129(課税売上10%)
- type:常に "income"
- 勘定科目:常に売上高

登録成功後、作成された取引IDをユーザーに報告する。

## 複数請求書の処理

ユーザーが複数のPDFを渡した場合は、まとめて処理する:
1. 全PDFを先に読み取る
2. 全取引先を並列で検索
3. 1つのサマリーテーブルにまとめて表示
4. 確認後、一括登録

## エラー処理

- 認証切れ:freeeの再認証が必要であることをユーザーに通知
- 取引先が見つからない:自動作成はしない — ユーザーに確認
- APIエラー:エラーメッセージを表示し、対応をユーザーに確認

使い方

この請求書をfreeeに登録して [PDFファイルのパス]

これだけです。Claude が PDF を読み取って、内容を確認させてくれて、OK を出せば freee に登録されます。

スキル②:invoice-organizer(ファイル整理&重複削除)

こちらは freee への登録ではなく、ファイル管理のスキルです。溜まった請求書・領収書のPDFや画像を、統一的なファイル名にリネームして、重複を検出・削除してくれます。

リネーム規則

YYYYMMDD_取引先_金額.拡張子

例:

  • invoice-7.pdf20240126_Amazon_11801.pdf
  • Invoice-AA3A4BF6-0009.pdf20240108_OpenAI_USD20.pdf
  • スクリーンショット 2024-01-05.png20240105_Dropbox_15840.png

ファイル名を見ただけで「いつ」「どこに」「いくら」がわかるようになります。

スキルの中身

---
name: invoice-organizer
description: 請求書・領収書のPDF/画像ファイルを整理するスキル。
  ファイルを読み取り、取引先・日付・金額を抽出して
  「YYYYMMDD_取引先_金額.拡張子」にリネーム。重複も自動検出・削除する。
  ユーザーが「請求書を整理して」「インボイスをリネームして」
  「領収書のファイル名を直して」「このフォルダの請求書を整理」
  「重複を消して」など、経理書類の整理に関する意図を示したら発動する。
---

# 請求書・領収書オーガナイザー

指定されたフォルダ内の請求書・領収書ファイル(PDF, PNG, JPG)を読み取り、
統一的なファイル名にリネームし、重複を削除するスキル。

## 対象ファイル

- .pdf — Read ツールで読み取り
- .png, .jpg, .jpeg — Read ツールで画像として読み取り
- それ以外のファイルはスキップする

## 処理フロー

### 1. フォルダ内のファイル一覧を取得

Glob で対象フォルダ内の *.pdf, *.png, *.jpg, *.jpeg を取得する。

### 2. 各ファイルを読み取り、情報を抽出

Read ツールで各ファイルを開き、以下の3つを特定する:

| 抽出項目 | 説明 | 例 |
|---------|------|-----|
| 日付 | 請求日・発行日・取引日・注文日など、最も適切な日付 | 2024-01-15 |
| 取引先 | 発行元の会社名・サービス名。短く分かりやすい名前にする | Adobe, Amazon, freee |
| 金額 | 税込合計金額。通貨記号なし、カンマなし | 6480 |

#### 取引先名の正規化ルール

取引先名はファイル名に使うため、短く明瞭にする:
- 正式名称が長い場合はブランド名・通称を使う
  (例:「アマゾンジャパン合同会社」→「Amazon」)
- サービス名がある場合はそちらを優先
  (例:「GMOインターネットグループ株式会社」→「お名前com」)
- 英語表記と日本語表記がある場合、一般的に知られている方を使う
- スペースや特殊文字はファイル名に使えないため、除去するか適宜置換する

#### 日付の優先順位

複数の日付が含まれる場合、以下の優先順位で選ぶ:
1. 請求書発行日 / 発行日
2. 取引日 / 注文日
3. サービス期間の開始日
4. 支払日

#### 金額の注意点

- 税込合計金額を使う
- 外貨の場合は通貨コードを付ける(例:USD20)
- 金額が見つからない場合は 0 とする

### 3. リネーム

ファイルを以下の形式にリネームする:

YYYYMMDD_取引先_金額.拡張子

例:
- 20240101_Adobe_6480.pdf
- 20240108_OpenAI_USD20.pdf
- 20240115_Amazon_1555.pdf
- 20240105_Dropbox_15840.pdf

リネーム時は Bash の mv コマンドを使用する。

### 4. 重複検出・削除

全ファイルの読み取りが完了した後、以下の基準で重複を判定する:

- 請求書番号・注文番号が同一 → 重複
- 取引先 + 金額 + 日付が完全一致 → 重複の可能性が高い(内容も確認)

重複が見つかった場合:
1. どちらのファイルを残すか判断
  (より正式な書類、より詳細な情報を含む方を優先)
2. 重複ファイルを削除
3. 削除したファイル名と理由をユーザーに報告

### 5. 結果を報告

処理が完了したら、リネーム結果・重複削除・スキップの一覧を報告する。

## 注意事項

- ファイル名に使えない文字は取り除く
- 同名ファイルが既に存在する場合は、末尾に _2, _3 と連番を付ける
- 大量のファイルがある場合は、並列で Read を呼び出して効率化する
- リネーム前にユーザーに確認は不要(自動実行)
- 処理対象のフォルダはユーザーが指定する。指定がない場合は確認する

使い方

このフォルダの請求書を整理して /path/to/invoices/

これだけで、あとは自動で処理してくれます。ファイルを開く必要すらありません。

実際に使ってみた感想

良かったこと

  • 手入力ゼロ — PDF を渡すだけで freee への登録が完了します。手打ちで金額を間違える心配がありません
  • ファイル管理が一瞬invoice-7.pdf のような意味不明なファイル名が、中身を見なくてもわかる名前に変わります
  • 確認ステップが安心 — freee への登録前に必ずサマリーが表示されます。間違いがあればその場で修正できます

注意点

  • freee の認証が切れると止まる — OAuth の再認証が必要になることがあります
  • 現状ベータ段階ということもあり、freeeとclaudeのやり取りに時間がかかります
    複数のセッションを立ち上げて同時進行すると効率が良かったです
  • 取引先名の表記ゆれ — freee に登録済みの取引先名と請求書上の名前が微妙に違うと、マッチしないことがあります(「株式会社」の有無など)
  • 現状は売上(収入)のみ — 経費の登録にはまだ対応していません。今後作りたいと思っています

まとめ

freee MCP + Claude Code のスキルを組み合わせると、会計業務のかなりの部分を自動化できます。

特に個人事業主やフリーランスにとっては、毎月の請求書処理が「PDFを渡して確認するだけ」になるのは大きいのではないでしょうか。

今回紹介したスキルはどちらも比較的シンプルな構成ですが、これだけでも体感の作業時間は半分以下になりました。MCP の仕組み自体はまだ新しいですが、会計・経理との相性はかなり良いと感じています。

次は経費登録のスキルも作ってみたいと思います。


freee MCP のセットアップ手順を配布しています

この記事で紹介した freee MCP の導入手順(Claude Code での接続設定・OAuth認証)をPDF資料にまとめました。メールアドレスをご登録いただいた方にお送りしています。

セットアップ資料を受け取る →

Takaaki Yoneda

環境保全、グラフィックデザイン、マーケティングなどプログラミング以外にも幅広い興味を持ったソフトウェアエンジニアです。 最近の趣味は、ボードゲームと登山